casper 发表于 2005-7-22 10:42:23

关于登录包的FAQ

1.头部是不是11个字节? 定义如下?

0x02 - 固定头
0x0d05 - 2005beta1
0x00 - 固定
0x22 - req-login
0x0124 - 自增的序列号
0x12345678 - 4 个字节qq号


答:如果是UDP方式的话,头部有11个字节,如下

0x02 - 固定头
0x0d05 - 2005beta1
0x0022 - 命令
0x0124 - 包的序列号
最后4个字节是QQ号

如果是TCP的话,0x02前面多了两个字节,代表整个包的长度


2.然后是16个字节初始密钥? 是不是随便16个字节
答:初始密钥,没有测试过,可能随便16字节都可以。

3.然后是密码经过2次md5之后的passwordkey加密的空串得到的16个字节?怎么加密的?
答:空串的加密如下:

EvaCrypt::encrypt(NULL, 0, getPasswordKey(), login, &pos);
加密后的结果在 login 中, 长度为pos。


4.最后填满后,是不是还要用passwordkey整个加密一次?如何加密呢?
答:这个包是部分加密的。 所以生成后, 直接发送内容,不再加密了。

相关的具体实现代码,请参考evalogin.cpp,以及luma的文档:http://lumaqq.linuxsir.org/doc/3.html
页: [1]
查看完整版本: 关于登录包的FAQ