QQ2010协议分析第一篇
测试QQ:597789809
昵称:浪子无情
尝试QQ服务器IP:112.95.240.125
client IP:222.35.174.5(我的外网IP)
密码:这个算了吧
Send:
看到下面的数字很迷茫吧,不用着急,我慢慢解释
下面的文本是HEX字符串,是常用网络16进制文本方式。
QQ常用消息包结构:
包头:02 //表示包的开头
1F 57 //QQ版本代码,这里表示QQ2010sp3版本
00 91 //包命令
58 16 //这个不是固定的,表示序列号
23 A1 8C 71 //QQ号码的16进制HEX表示,597789809
02 00 00 00 01 01 01 00 00 64 48 //未知,但是每个消息包都有,可能是这个版本的描述信息。
####################Touch (0x0091)####################
[2011-01-19 10:41:37 848 SEND]
02 //包的开始标记
1F 57 //QQ版本号
00 91 //命令号
58 16 //序列号
23 A1 8C 71 //QQ号码
02 00 00 00 01 01 01 00 00 64 48 //the same for QQ version
7F ED 93 BB 29 A2 9B 71 DE 40 CD F9 28 F7 28 AA -随机16位密钥
-密文省略-
解密:
random key - 7F ED 93 BB 29 A2 9B 71 DE 40 CD F9 28 F7 28 AA
-----------------------------------------------
-----------------------------------------------
00 01 -固定
00 00 08 04 01 E0 -QQ所在机器本地话信息,代表一些语言啊,国家代码等
00 00 03 30 00 00 00 01 00 00 0C 73 -QQ版本描述信息
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -固定
-----------------------------------------------
-----------------------------------------------
03 --包尾部
Receive:
##################Touch (0x0091) Reply################
[2011-01-19 10:41:38 324 RECEIVE]
02 1F 57 00 91 58 16 23 A1 8C 71 //同上
00 00 00 //QQ版本检验正确返回为0
-密文省略-
解密:
解密密钥 = 0x0091 随机密钥(就是由你随机生成的16位密钥)
7F ED 93 BB 29 A2 9B 71 DE 40 CD F9 28 F7 28 AA
-----------------------------------------------
-----------------------------------------------
00 -Touch成功
4D 36 4D FD -Touch server time
72 F9 DB 64 -client ip
00 00 00 00 00 00 00 00 -the same
00 38 -令牌长度(切忌长度是16进制表示的,16进制的 38代表十进制的56),下面是令牌数据
06 BC 29 BA AD 47 82 78 44 CC 02 A4 AC
F3 11 E1 9E 3B 78 A6 B3 E6 82 54 F5 9D 85 E2 C6
C2 8F 69 62 54 18 F8 B2 2B 8D 9E 8E 60 2C 86 19
D3 9A 6B 60 DF 70 A3 9F F9 99 F6
00 -Touch 完成,(01表示未成功,继续Touch)
(01 -当为01是,
01 00 00 00
09 00 00 00 00
70 5A 8A 8C -QQ服务器推荐的IP,下次Touch找它 )
-----------------------------------------------
-----------------------------------------------
03