首页 > QQ技巧 > 从底层协议讨论破解QQ密码

从底层协议讨论破解QQ密码

时间:2015-08-29 11:08 作者:QQ地带 我要评论

很多人问我会不会破解QQ密码,我的回答很明确:不会。因为腾讯的服务器已经相当完善,并没有留下多少漏洞让我们发现。而且,能发现这种漏洞的的人一般都在美国国家安全局,不会有兴趣去破解QQ密码。可是最近发生的事情让我迟疑了,于是我查资料,抓包分析了QQ的登录过程,整个认证过程滴水不漏。下面是我做的一张登陆过程图,以及几个比较重要的数据包。希望有志之士能在我基础上继续完成我的工作。
 
整个登录过程大部分数据包均使用UDP协议,端口分别用到了8000、80和443。
 
2011010521460421
 
1. 0×0091 Touch包
 
Touch包是QQ客户端登录时向服务器发送的第一个数据包,作用是测试远程服务器的链路状态,通过多次抓包发现,对于不同的QQ,认证的服务器是不一样的。会员与非会员之间有差别,不同地区之间也有差别。在对QQ客户端的回应数据包中,如果所连接的服务器不对该QQ号码提供服务,则会返回另外一个服务器地址,让客户端重新连接认证。
 
0×0091发送包:
 
02 1E 07 00 91 5B B8 04 EE D4 E9 02 00 0000 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号码***
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 00C0 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号码***
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 //包尾
 
0x00BA获取验证码
 
如果客户端向服务器发送的数据中,被服务器检测到异常,比如异地登陆,正在别的IP上保持登录,被多次举报等等,服务器会要求客户端输入验证码。
 
0x00BA发送包
 
0x00BA接收包
 
3 0x00DD密码验证
 
该数据包的作用是将本地QQ的密码发送给服务器端进行验证。
 
4 0x00E5数据校验
 
该数据包主要用于校验前几个数据包的Token数据,如果通过验证,服务器端会返回本次登录的时间和IP地址等信息。
 
0x00E5发送包
 
6 0×0030获取会话密钥
 
该数据包是QQ登录流程的最后一个数据包,主要用于向QQ客户端返回会话密钥(Session  Key),该会话密钥由服务器端生成,目前不知道其生成算法。但是估计和QQ号码,登录IP,登录时间以及QQ密码有关。
 
0×0030发送包
 
如上面所说,整个过程滴水不漏,看起来每一步都没有参与修改的可能。从开始发送第一个数据包测试认证服务器链路状态,到服务器返回会话密钥,都完美无缺。当然,这是基于我对UDP协议协议了解的基础上发表的看法,但是我对UDP协议的底层实现的了解还远远不够。
 
没有完美的代码,没有完美的加密算法。其实只要我们深入研究这个登录过程,就一定能找到破解方式。破解方法也许能找到,但不是在我这里,遗憾的是,也不是今天。

标签: QQ安全
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告