QQ应用程序源代码Word文档格式.docx
- 文档编号:14075001
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:14
- 大小:19.79KB
QQ应用程序源代码Word文档格式.docx
《QQ应用程序源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《QQ应用程序源代码Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
#endif
Construction/Destruction
MyQQ:
:
MyQQ()
{
s
=
NULL;
LoginToken
LoginTokenLength
0;
Status
//下线
IsLogin
false;
LastID
MessageText
FriendListHead
FriendListTail
send_seq
random()
&
0x0000ffff;
LastOnline
time(NULL);
UDPServerNum
//服务器地址
LoginServer
(char
*)malloc(16*sizeof(char));
//QQ号
UserID
//密码
Password
//得到初始化密钥,按2004版
InitKey
(unsigned
char*)malloc(QQ_KEY_LENGTH);
int
i;
for(i
i
<
16;
i++)
rand();
SessionKey
}
~MyQQ()
if(LoginServer
!
NULL)
free(LoginServer);
if(MyIP
free(MyIP);
if(MessageText
free(MessageText);
if(Password
free(Password);
if(InitKey
free(InitKey);
if(PwdKey
free(PwdKey);
if(SessionKey
free(SessionKey);
if(FriendListHead
QQFriend
*p
FriendListHead->
next;
while(p
free(FriendListHead);
p;
p
p->
if(FriendListTail
free(FriendListTail);
void
Login(int
pMode)
unsigned
*buf,
*cursor,
*raw_data,
*encrypted_data;
seq_ret;
encrypted_len,
bytes;
//登录模式:
1
为正常登录,2为隐身登录
3登录即离开
LoginMode
pMode;
if(LoginToken
==
//发送获取登录令牌的包
qq_get_logintoken();
else
//2004登录包
buf
char*)malloc(MAX_PACKAGE_LENGTH);
//包长65535
raw_data
char*)malloc(QQ_LOGIN_DATA_LENGTH);
//数据长
encrypted_data
char*)malloc(QQ_LOGIN_DATA_LENGTH
+
16);
//加密数据长度多16
产生密文
000-015
用PwdKey加密空串
MCrypter.qq_crypt(ENCRYPT,
char*)"
0,
PwdKey,
raw_data,
encrypted_len);
//016-051
36字节的固定内容
memmove(raw_data
16,
login_16_51,
36);
//052-052
登录方式
raw_data[52]
char)LoginMode;
//053-068
16字节固定内容
53,
login_53_68,
//069
登录令牌长度
pos
69;
raw_data[pos++]
char)LoginTokenLength;
//070-?
登录令牌
pos,
LoginToken,
LoginTokenLength);
+=
LoginTokenLength;
//未知字节0x40
0x40;
//固定字节
LOGIN_SEGMENTS,
100);
100;
//剩下的字节填零
for(;
QQ_LOGIN_DATA_LENGTH;
pos++)
raw_data[pos]
0x00;
//加密
QQ_LOGIN_DATA_LENGTH,
InitKey,
encrypted_data,
cursor
buf;
bytes
create_packet_head_seq(buf,
cursor,
QQ_CMD_LOGIN,
true,
seq_ret);
create_packet_dw(buf,
UserID);
create_packet_data(buf,
QQ_KEY_LENGTH);
create_packet_b(buf,
QQ_PACKET_TAIL);
if
(bytes
(cursor
-
buf))
//包被无误创建
qq_send_packet(buf,
bytes,
QQ_CMD_LOGIN);
free(buf);
free(raw_data);
free(encrypted_data);
//从包中读取一个字节
read_packet_b(unsigned
*
buf,
**
buflen,
b)
if(*cursor
buflen
sizeof(*b))
*b
**(unsigned
**)
cursor;
*cursor
sizeof(*b);
return
-1;
}
//从包中读取一个字
read_packet_w(unsigned
short
w)
sizeof(*w))
*w
ntohs(**(short
cursor);
sizeof(*w);
//处理收到的消息
qq_process_recv_im(unsigned
char*
buf_len,
seq)
len,
*data,
*cursor;
qq_recv_im_header
*im_header;
len
buf_len;
data
*)malloc(len);
(MCrypter.qq_crypt(DECRYPT,
SessionKey,
data,
len))
if(len
16)
return;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QQ 应用程序 源代码