QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2053|回复: 12

有关腾讯 QQ2004 II 的一些发现

[复制链接]
发表于 2005-4-28 09:54:25 | 显示全部楼层 |阅读模式
这几天,我在测试QQHacker这个程序。
对 腾讯的QQ2004II 测试了一下。

发现了不好的消息。 QQ2004 II 更改了加密算法。

可能是对解密/加密的 密钥生成做了改动, 我无法解密登录请求包。

在登录前, 客户端会按以下顺序发出相同包序列号的,

1. 请求登录令牌包(0x0062),
    --等待服务器反应
2. 未知包(0x001,
    --等待服务器反应
3. 登录包(0x0022)
    --等待服务器反应


这几个包, 只有 1: 0x0062是不加密的。 其它, 目前无法知道内容。

对登录包, 我尝试用initial key(16 个 1), password key(密码做2次md5),
0x0062包返回的token做md5 和 做2次md5, 都无法解密

对登录应答包, 按已知的方法进行解密, 失败。 这样我们就无法解密
其后的所有内容。


可能是我分析的方法还不得当, 慢慢分析看吧。 不过我猜测, QQ2004II
依旧用TEA方法加密/解密, 只是腾讯变化了密钥的生成方式。

如果以上内容有误, 望大家指正。
 楼主| 发表于 2005-4-28 12:56:25 | 显示全部楼层
正在尝试暴力破解登录包,试图找出密钥。 遍历所有可能的密钥。
符合条件的密钥有 2 ^ 128 个之多。

在我的机器上估计的很久才能跑完,呵呵。
机器配置: P4 1.5G  SDRAM: 725M

希望可以找到。 这个破解假定2004II的基本加密算法,即puzzle bird所说的TEA算法不变。
我们通过遍历密钥, 来试图解密登录包。 如果密钥X可以解密, 我们可能就看到了成功
破解2004II协议的一些曙光了。根据登录包的特征,我假定除去包头(UDP包)11个字节后
的内容全部加密。
我尝试比较登录包的内容和 得到的登录Token,以及密码密钥, 初始密钥,
都没有发现联系。 包括对其做md5, 2次md5,都没有发现联系. 因此,我尝试
看看是否除去包头部分,其余内容存在解密得可能性。


如果解密失败, 可能说明2个问题:
1。 腾讯不在使用TEA加密算法, 或者
2。 登录包是部分加密然后组合发送的。


现在就是等待了, 希望明天可以出结果吧。。。。。。。。。。。。
回复

使用道具 举报

发表于 2005-4-28 13:08:32 | 显示全部楼层
这么麻烦干什么....

包体头16个字节就是初始密钥
回复

使用道具 举报

 楼主| 发表于 2005-4-28 13:14:28 | 显示全部楼层
[quote:185b069272="stubma"]这么麻烦干什么....

包体头16个字节就是初始密钥[/quote]


   我试试看  
回复

使用道具 举报

 楼主| 发表于 2005-4-28 16:02:07 | 显示全部楼层
[quote:3de61fb2f0="stubma"]这么麻烦干什么....

包体头16个字节就是初始密钥[/quote]

我用包体的头16个字节做为密钥来解密其后的包体,
总是解密失败?   还是只应该对包体某一部分来解密?
唉。
回复

使用道具 举报

 楼主| 发表于 2005-4-28 16:31:35 | 显示全部楼层
我把客户端版本号换为 2004II 的版本号 0X0C49, 结果登录成功, 获取好友资料也成功了。
看来2004II 的加密/解密算法 并没有更改。

那个初始密钥可能是个随机值。(猜测)
回复

使用道具 举报

发表于 2005-4-28 19:33:27 | 显示全部楼层
http://lumaqq.linuxsir.org/doc/3.html
回复

使用道具 举报

 楼主| 发表于 2005-4-28 20:03:39 | 显示全部楼层
[quote:31dd4e0ad6="casper"]http://lumaqq.linuxsir.org/doc/3.html[/quote]

那个我知道,否则,Eva怎么登录啊 :)

只是抓到腾讯的登录包, 解密,失败,所以才这么猜测的。

前16个bytes应该是初始密钥,这肯定没有错的, 因为我使用 2004 II 的
客户端版本号登录成功。  可以为什么登录包解密总是失败,现在还搞不清楚。


QQHacker测试差不多了。 准备写个使用说明。
我们的 2004II 或者 2005 的协议分析工作可以开始了。

我刚做了测试,这些协议变动都不是很大, 主要是新增了一些命令(以前不知道的命令)。  我觉得分析 2004II 好一点, 毕竟 2005 是pre版本的。 不过也无所谓。
回复

使用道具 举报

发表于 2005-4-29 13:52:00 | 显示全部楼层
2004里的令牌是什么用的,2003里好像没有这个概念
回复

使用道具 举报

 楼主| 发表于 2005-4-29 15:14:11 | 显示全部楼层
[quote:4843cce923="zhangweizj"]2004里的令牌是什么用的,2003里好像没有这个概念[/quote]

对,2004 加的。 在登录之前要先索取一个登录令牌,
这个令牌要放到登录包中。



今天终于解密登录包成功。
发现一个使用 EvaCrypt 类的一个问题,就是一定要预留够空间,我原来是
3000个char, 现在给了6000个char, 以前解密失败的几个包,都成功了。

我现在正在写libeva 和 协议分析组需要的文档。
回复

使用道具 举报

发表于 2005-4-29 15:47:18 | 显示全部楼层
哈哈,那么这么说,加密和解密的协议都没变动了?
回复

使用道具 举报

 楼主| 发表于 2005-4-29 15:53:20 | 显示全部楼层
[quote:9503c9fdc5="zhangweizj"]哈哈,那么这么说,加密和解密的协议都没变动了?[/quote]

呵呵, 2005的也没有变。 我只是试了一下,至少解密是没有变。
我可以成功的解密登录回应包。其它的,像状态改变什么的,没有问题。

加密,解密不变,并不能说,协议不变。 这要测试过了才知道。
但是可以解密,就可以破解协议  :D
回复

使用道具 举报

发表于 2005-4-29 16:18:17 | 显示全部楼层
只要加密解密没变就没关系,协议可以慢慢研究
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-5-3 22:14 , Processed in 0.176812 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表