
qq代码大全
增强记忆力的方法-望月有感
2023年3月20日发(作者:华杯赛)QQ源代码
d.%d.%d",[0],[1],[2],[3]);
MyPort=;IsLogin=true;
qq_send_packet_get_info(UserID);
switch(LoginMode){
case1:Status=1;break;case2:Status=3;break;default:
break;}
qq_send_packet_change_status();
GetFriendList();
returnQQ_LOGIN_REPLY_OK;}
intMyQQ::qq_process_login_redirect(unsignedchar*data,intlen){
intbytes,ret;
unsignedchar*cursor;
qq_login_reply_redirect_packetlrrp;
cursor=data;bytes=0;
d.%d.%d",[0],[1],[2],[3]);
//效劳器端口
LoginPort=;
=AF_INET;
=inet_addr(LoginServer);=htons(LoginPort);
//向新的效劳器地址发送登录请求Login(LoginMode);
ret=QQ_LOGIN_REPLY_REDIRECT;}
returnret;}
intMyQQ::qq_process_login_wrong_pwd(unsignedchar*data,intlen){
returnQQ_LOGIN_REPLY_PWD_ERROR;}
voidMyQQ::qq_send_packet_change_status(){
unsignedchar*raw_data,*cursor,away_cmd;DWORDmisc_status;
if(IsLogin==false)return;
switch(Status){case1:
away_cmd=QQ_BUDDY_ONLINE_NORMAL;break;case2:
away_cmd=QQ_BUDDY_ONLINE_INVISIBLE;break;case3:
away_cmd=QQ_BUDDY_ONLINE_AWAY;break;default:
away_cmd=QQ_BUDDY_ONLINE_NORMAL;}//switch
raw_data=(unsignedchar*)malloc(5);cursor=raw_data;misc_status=0x00000000;
create_packet_b(raw_data,&cursor,away_cmd);create_packet_dw(raw_data,&cursor,misc_st
atus);
qq_send_cmd(QQ_CMD_CHANGE_ONLINE_STATUS,TRUE,0,TRUE,raw_data,5);}
voidMyQQ::TurnInvisible(){
Status=2;
qq_send_packet_change_status();}
voidMyQQ::TurnVisible(){
Status=1;
qq_send_packet_change_status();}
voidMyQQ::TurnAway(){
Status=3;
qq_send_packet_change_status();}
voidMyQQ::Logout(){inti;
for(i=0;i<4;i++)
qq_send_cmd(QQ_CMD_LOGOUT,FALSE,0xffff,FALSE,PwdKey,QQ_KEY_LENGTH);
IsLogin=false;Status=0;
}
voidMyQQ::QQSendTextMessage(DWORDto_uid,char*msg,inttype){
unsignedchar*cursor,*raw_data;shortclient_tag,normal_im_type;intmsg_len,raw_len,byte
s;time_tnow;
unsignedchar*md5;char*msg_filtered;
char*font_size=NULL,*font_color=NULL,*font_name=NULL,*tmp;boolis_bold=FA
LSE,is_italic=FALSE,is_underline=FALSE;constchar*start,*end,*last;
client_tag=QQ_CLIENT;
normal_im_type=QQ_NORMAL_IM_TEXT;
last=msg;
msg_filtered=msg;
msg_len=strlen(msg_filtered);now=time(NULL);
md5=gen_session_md5(UserID,SessionKey);
intfont_name_len,tail_len;
font_name_len=DEFAULT_FONT_NAME_LEN;
}
voidMyQQ::QQSendTextMessage(DWORDto_uid,char*msg,inttype){
unsignedchar*cursor,*raw_data;shortclient_tag,normal_im_type;intmsg_len,raw_len,byte
s;time_tnow;
unsignedchar*md5;char*msg_filtered;
char*font_size=NULL,*font_color=NULL,*font_name=NULL,*tmp;boolis_bold=FA
LSE,is_italic=FALSE,is_underline=FALSE;constchar*start,*end,*last;
client_tag=QQ_CLIENT;
normal_im_type=QQ_NORMAL_IM_TEXT;
last=msg;
msg_filtered=msg;
msg_len=strlen(msg_filtered);now=time(NULL);
md5=gen_session_md5(UserID,SessionKey);
intfont_name_len,tail_len;
font_name_len=DEFAULT_FONT_NAME_LEN;
bytes+=create_packet_b(raw_data,&cursor,0x00);//043-043:sendericon
//bytes+=create_packet_b(raw_data,&cursor,qd->my_icon);bytes+=create_packet_b(raw_d
ata,&cursor,MyIcon);//044-046:always0x00
bytes+=create_packet_w(raw_data,&cursor,0x0000);bytes+=create_packet_b(raw_data,&
cursor,0x00);//047-047:weusefontattr
bytes+=create_packet_b(raw_data,&cursor,0x01);//048-051:always0x00
bytes+=create_packet_dw(raw_data,&cursor,0x00000000);//052-052:textmessagetype(no
rmal/auto-reply)bytes+=create_packet_b(raw_data,&cursor,type);//053-:msgendswith0x00
bytes+=create_packet_data(raw_data,&cursor,(unsignedchar*)msg_filtered,msg_len);
unsignedchar*send_im_tail=qq_get_send_im_tail(font_color,font_size,font_name,false,fals
e,false,tail_len);
bytes+=create_packet_data(raw_data,&cursor,send_im_tail,tail_len);
if(bytes==raw_len)//createpacketOK{
qq_send_cmd(QQ_CMD_SEND_IM,TRUE,0,TRUE,raw_data,cursor-raw_data);}}
constunsignedcharsimsun[]={0xcb,0xce,0xcc,0xe5};
font_name_len=DEFAULT_FONT_NAME_LEN;font_name=(constchar*)&(simsun[0]);
send_im_tail=(unsignedchar*)malloc(tail_len);
memcpy(send_im_tail+QQ_SEND_IM_AFTER_MSG_HEADER_LEN,font_name,tail_len-
QQ_SEND_IM_AFTER_MSG_HEADER_LEN);
send_im_tail[tail_len-1]=tail_len;
send_im_tail[0]=0x00;send_im_tail[1]=10;
if(is_bold)
send_im_tail[1]|=0x20;if(is_italic)
send_im_tail[1]|=0x40;if(is_underline)send_im_tail[1]|=0x80;
send_im_tail[2]=send_im_tail[3]=send_im_tail[4]=0;
send_im_tail[5]=0x00;send_im_tail[6]=0x86;send_im_tail[7]=0x22;
return(unsignedchar*)send_im_tail;}
//处置一般的QQ消息
voidMyQQ::qq_process_recv_normal_im(unsignedchar*data,unsignedchar**cursor,intle
n){intbytes;
qq_recv_normal_im_common*common;
qq_recv_normal_im_unprocessed*im_unprocessed;
if(*cursor>=(data+len-1)){return;}else
common=(qq_recv_normal_im_common*)malloc(sizeof(qq_recv_normal_im_common));
bytes=qq_normal_im_common_read(data,cursor,len,common);if(bytes<0){return;}
switch(common->normal_im_type){caseQQ_NORMAL_IM_TEXT:
qq_process_recv_normal_im_text(data,cursor,len,common);break;
caseQQ_NORMAL_IM_FILE_REJECT_UDP://qq_process_recv_file_reject(data,cursor,len,
//common->sender_uid,gc);break;
caseQQ_NORMAL_IM_FILE_APPROVE_UDP://qq_process_recv_file_accept(data,cursor,
len,//common->sender_uid,gc);break;
caseQQ_NORMAL_IM_FILE_REQUEST://qq_process_recv_file_request(data,cursor,len,/
/common->sender_uid,gc);break;
caseQQ_NORMAL_IM_FILE_CANCEL://qq_process_recv_file_cancel(data,cursor,len,//c
ommon->sender_uid,gc);break;
caseQQ_NORMAL_IM_FILE_NOTIFY://qq_process_recv_file_notify(data,cursor,len,//co
mmon->sender_uid,gc);break;default:return;
}//normal_im_type
g_free(common->session_md5);}
voidMyQQ::qq_process_recv_normal_im_text(unsignedchar*data,unsignedchar**cursor,i
ntlen,qq_recv_normal_im_common*common){
shortgaim_msg_type;
char*name;
char*msg_with_gaim_smiley;char*msg_utf8_encoded;qq_recv_normal_im_text*im_text;
if(*cursor>=(data+len-1)){return;}else
im_text=(qq_recv_normal_im_text*)malloc(sizeof(qq_recv_normal_im_text));
im_text->common=common;
read_packet_w(data,cursor,len,&(im_text->msg_seq));read_packet_dw(data,cursor,len,&(i
m_text->send_time));read_packet_b(data,cursor,len,&(im_text->unknown1));read_packet_b(d
ata,cursor,len,&(im_text->sender_icon));
read_packet_data(data,cursor,len,(unsignedchar*)&(im_text->unknown2),3);read_packet
_b(data,cursor,len,&(im_text->is_there_font_attr));
read_packet_data(data,cursor,len,(unsignedchar*)&(im_text->unknown3),4);read_packet
_b(data,cursor,len,&(im_text->msg_type));
if(im_text->msg_type==QQ_IM_AUTO_REPLY){im_text->is_there_font_attr=0x00;
im_text->msg=(unsignedchar*)malloc(1024);memcpy(im_text->msg,*cursor,data+len-*c
ursor);}else{
if(im_text->is_there_font_attr){
im_text->msg=(unsignedchar*)malloc(1500);
memcpy(im_text->msg,*cursor,strlen((constchar*)*cursor));
im_text->msg[strlen((constchar*)*cursor)]=0;}else
{im_text->msg=(unsignedchar*)malloc(1024);memcpy(im_text->msg,*cursor,data+len-
*cursor);im_text->msg[data+len-*cursor]=0;}}
MessageText=im_text->msg;//若是需要自动答复if(Status==3){
//I_QQAutoReply()函数获取预先设置的自动答复消息内容,需自己实
现char*MText=I_QQAutoReply();
QQSendTextMessage(common->sender_uid,MText,0x01);}
//在主界面中显示消息
//I_QQReceiveMessage((char*)MessageText,common->sender_uid);}
intMyQQ::qq_normal_im_common_read(unsignedchar*data,unsignedchar**cursor,intlen
,qq_recv_normal_im_common*common){intbytes;
bytes=0;
bytes+=read_packet_w(data,cursor,len,&(common->sender_ver));bytes+=read_packet_dw
(data,cursor,len,&(common->sender_uid));bytes+=read_packet_dw(data,cursor,len,&(comm
on->receiver_uid));
common->session_md5=(unsignedchar*)malloc(QQ_KEY_LENGTH);memcpy(common->
session_md5,*cursor,QQ_KEY_LENGTH);bytes+=QQ_KEY_LENGTH;*cursor+=QQ_KE
Y_LENGTH;
bytes+=read_packet_w(data,cursor,len,&(common->normal_im_type));
if(bytes!=28){return-1;}
returnbytes;}