QQ2010协议技术详细分析QQ登录过程

来自#博客园#文章,七月份的时候忽然对QQ协议产生了些兴趣,因而这几个月有空就研究QQ协议,目前对QQ2010的协议已经分析得差很少了。 QQ登陆分为UDP和TCP登陆,还支持代理登陆。默认是UDP登陆。UDP登陆端口服务器为8000,本地端口通常是从4000开始选择,若是该端口已 经被占用,则加1再测试,一直测试到一个没有被占用的端口。TCP登陆服务器通常是80或者443端口,本地端口选择方式和UDP同样。 html

这些登陆方式登陆设置里面能够自由选择。可是不管哪一种方式登陆,其登陆流程和数据包格式都是同样。QQ登陆时须要进行6次与服务器的交互,每次交互均伴随着登陆相关信息的搅浑。QQ登陆主要分6步。 算法

1. 0×0091 Touch包

该数据包是QQ客户端登陆时发送的第一个包,它的做用在于测试远程服务器是否可以正常响应,根据咱们的抓包分析,对于不一样的QQ号码段,提供服务的 QQ服务器是不相同的,对于QQ会员有专门的QQ会员服务器。在对QQ客户端的回应包中,若是链接的服务器不对该QQ号码提供服务,它会返回另一个服务 器地址,让客户端从新链接该地址。 服务器

0×0091发送包: 测试

02 1E 07 00 91 5B B8 04 EE D4 E9 02 00 00 00 01
01 01 00 00 64 2F 6A 84 FA 78 CC 16 51 86 A7 B8
1C 55 E8 29 6B C8 50 95 FB 5A CE E8 6C 89 0A C9
83 D0 68 51 DB 6E D1 93 C1 32 11 9B 84 13 EF 7D
4B 55 8C 08 6C F3 F0 5F 11 16 26 E4 00 68 0D 98
02 BC 06 B9 4E E2 03
[
02 //包头
1E 07 //版本号
00 91 //命令
5B B8 //包序号
04 EE D4 E9 //QQ号码:82760937
02 00 00 00 01 01 01 00 00 64 2F //固定,QQ版本号不一样则不一样
6A 84 FA 78 CC 16 51 86 A7 B8 1C 55 E8 29 6B C8 //0x91密钥
00 01 //固定两字节
00 00 08 04 01 E0 //0091Data01(在后面的命令里面要用到的)
00 00 03 20 00 00 00 01 00 00 0B BF //0091Data02(在后面的命令里面要用到的)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //首次发送为15字节0
03 //包尾
] 网站

0×0091接收包: 代理

02 1E 07 00 91 5B B8 04 EE D4 E9 00 00 00 C0 EB
D0 BF C5 F9 E1 F2 C9 51 9D 3B 26 07 B5 AD 46 49
49 C4 49 D7 69 36 9E 11 8E 24 2E A1 B3 AB 90 CE
CA 38 C9 99 94 8E 0A 41 03 EB AC E7 C6 BA 34 FD
64 9E E7 4B 3D 24 6F 44 0A 77 80 69 96 91 0C 00
87 6B 51 25 E5 15 9F E3 54 6E B8 C6 1D 5F DE 40
54 BB D8 0C 36 8D 03
[
02 //包头
1E 07 //版本号
00 91 //命令
5B B8 //包序号
04 EE D4 E9 //QQ号码:82760937
00 00 00 //固定全为0
00 //接触成功
4D 16 07 CC //登陆时间:2010-12-25 23:03:40
7D 47 C8 04 //登陆IP地址:125.71.200.4
00 00 00 00 00 00 00 00 //固定8字节0
00 38 //0091_Token长度:56字节
6E F0 FB 35 5F 8E 65 0F 77 E7 A7 D0 AE 69 8C 4D
EF 43 41 89 BB 79 9C B9 B5 0C 4C 86 5E 8D A0 CB
84 D7 66 69 CF 63 E9 0D 80 48 F4 E6 C1 30 A7 88
7E B0 68 0A E6 8C FC D4
00 //接触成功
03 //包尾
] htm

2 0x00BA获取验证码

由于部分QQ号码可能存在异地登陆,或者QQ号码被盗发送大量垃圾信息,或者用了挂机软件或者挂机网站挂机,腾讯服务器检验到这些非正常的QQ状况时即会要求输入验证码。如下分析我都直接截取QQAnalyzer的分析图片。贴分析代码比较麻烦,关于QQAnalyzer的介绍和下载请看这篇博客:http://www.cnblogs.com/83008911/archive/2010/10/09/QQAnalyzer.html blog

0x00BA发送包 图片

0x00BA接收包 get

3 0x00DD密码验证

该数据包的做用是将本地QQ的密码发送给服务器端进行验证。

0x00DD发送包

0x00DD接收包

4 0x00E5数据校验

该数据包主要用于校验前几个数据包的Token数据,若是经过验证,服务器端会返回本次登陆的时间和IP地址等信息。

0x00E5发送包

0x00E5接收包

5 0x00E3数据校验

0x00E3发送包

0x00E3接收包

6 0×0030获取会话密钥

该数据包是QQ登陆流程的最后一个数据包,主要用于向QQ客户端返回会话密钥(Session  Key),该会话密钥由服务器端生成,目前不知道其生成算法。可是估计和QQ号码,登陆IP,登陆时间以及QQ密码有关。

0×0030发送包

相关文章
相关标签/搜索