yunfan 发表于 2005-4-28 09:54:25

有关腾讯 QQ2004 II 的一些发现

这几天,我在测试QQHacker这个程序。
对 腾讯的QQ2004II 测试了一下。

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

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

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

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


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

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

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


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

如果以上内容有误, 望大家指正。

yunfan 发表于 2005-4-28 12:56:25

正在尝试暴力破解登录包,试图找出密钥。 遍历所有可能的密钥。
符合条件的密钥有 2 ^ 128 个之多。

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

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


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


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

stubma 发表于 2005-4-28 13:08:32

这么麻烦干什么....

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

yunfan 发表于 2005-4-28 13:14:28

这么麻烦干什么....

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


:lol:   我试试看:lol:

yunfan 发表于 2005-4-28 16:02:07

这么麻烦干什么....

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

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

yunfan 发表于 2005-4-28 16:31:35

我把客户端版本号换为 2004II 的版本号 0X0C49, 结果登录成功, 获取好友资料也成功了。
看来2004II 的加密/解密算法 并没有更改。 :?

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

casper 发表于 2005-4-28 19:33:27

http://lumaqq.linuxsir.org/doc/3.html

yunfan 发表于 2005-4-28 20:03:39

http://lumaqq.linuxsir.org/doc/3.html

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

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

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


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

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

zhangweizj 发表于 2005-4-29 13:52:00

2004里的令牌是什么用的,2003里好像没有这个概念

yunfan 发表于 2005-4-29 15:14:11

2004里的令牌是什么用的,2003里好像没有这个概念

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



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

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

zhangweizj 发表于 2005-4-29 15:47:18

哈哈,那么这么说,加密和解密的协议都没变动了?

yunfan 发表于 2005-4-29 15:53:20

哈哈,那么这么说,加密和解密的协议都没变动了?

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

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

zhangweizj 发表于 2005-4-29 16:18:17

只要加密解密没变就没关系,协议可以慢慢研究
页: [1]
查看完整版本: 有关腾讯 QQ2004 II 的一些发现