QQ2009通讯协议分析(一)

 

最近分析了QQ2009协议,客户端是QQ2009正式版SP2.
配合数据包,简单说下2009的登录过程。
使用的QQ:398967632(17 c7 c3 50)
包数据,未特殊注明均为16进制数据。
登录开始之前,是一个Touch的过程,测试服务器连接性和定向。
第一次Touch
包头:
     02  协议标识
     17 59  QQ客户端版本号
     00 91  命令字(Touch)
     26 ce  序号
     17 c7 c3 50   QQ号码
     后面接着就是包体,包体的前16字节为密钥,其余包体为密文。
包体:
     fa 20 58 64 19 9d 96 d0 a2 d8 a1 ba 02 9c e9 61
     2e 6d e3 3d 91 90 6b d4 b4 10 e6 11 e0 fd f2 a4
     ce a9 70 53 b9 c2 ea 63 1c 61 6d 35 c9 5c 0d fd
     b3 37 96 65 5d 45 78 d9 ad 34 a4 b2 92 90 3d ae

     前16字节为Key,对后续的48字节解密,算法就不多说了,众所周知TEA算法。解密结果如下:
     00 01 00 00 08 04 01 E0 00 00 02 20 00 00 00 01 00 00 09 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     经过多次登录测试,版本不同该数据不同,同一版本数据相同。00 01 00 00 08 04 01 E0 00 00 02 20 00 00 00 01 00 00 09 55 这部分数据
     在后面很多包中出现,猜测其代表版本的一些数据信息。
     后面的15字节实际存放的事服务器返回信息,首次Touch全为0.
包尾:
     03(固定,后续不再介绍包尾)
    
第一次Touch的回复
包头:
     02 17 59 00 91 26 ce
包体:
     d8 bd 95 0b c2 44 f0 0e ae c7 cc ff 8c 21 89 24
     dc 9b 37 9d 12 a1 8a 1d 8f 7c 1d 2e 8f ea cc 66
     57 6d bf d1 a5 d1 f6 9b 87 3b 15 60 8a 17 2f e7
     01 6b 52 a6 43 2f 48 ad f4 b5 59 2b c7 6d 78 c0
     3f 92 c4 6b 18 f8 f8 d5 ec 3a d2 0e 94 c8 45 a2
     de 97 19 27 d1 53 55 5e 6b 7c b3 b0 91 3f 6b 6f
     af 0d 55 e4 2d 18 a3 ea
    
     使用Touch请求的Key:fa 20 58 64 19 9d 96 d0 a2 d8 a1 ba 02 9c e9 61(参看第一次Touch请求包包头前16字节)解密如下:
     00 (结果码,成功)
     4B 03 50 77 (时间,18/11/2009 09:40:07)
     DA 5E 83 CA  (IP地址,218.94.131.202)
     00 00 00 00 00 00 00 00 (8字节0)
     00 38        (令牌长度,下面是令牌数据)
     79 C2 BF BF 80 B8 EB C2 94 B3 CD 94 2D FA 91 A8
     29 C2 EE D8 B1 E9 93 DA 75 65 1C 42 9C A4 67 77
     67 A7 4A 92 A3 69 56 00 9B 07 45 E5 AE 5C 3C 9B
     C0 54 53 B9 EC 77 75 8A
     01  (Touch测试结果,00成功开始登陆,其他继续连接)
     01   (重定向计数)
     00 00 00 01  (连接服务提供者标识)
     00 00 00 00  (服务版本)
     DB 85 33 ED  (服务器IP地址,219.133.51.237)
再次Touch,此次Touch连接的是回复中的服务器地址,即DB 85 33 ED  (服务器IP地址,219.133.51.237)
包头:
     02 17 59 00 91 26 cf 17 c7 c3 50
包体:
     38 53 a8 aa d3 3a 0e 69 00 b4 e0 76 93 16 ae 72
     b7 ad 8f 68 9e 9f 41 86 ac c3 ae a4 25 4c 07 d2
     5d b0 10 16 15 9f 57 e4 6f b6 8a a6 28 cd 4f 97
     0a 84 fa 03 66 bd b2 ae 63 29 30 88 23 30 29 56
     包体前16字节为Key,对后面48字节解密如下:
     00 01 00 00 08 04 01 E0 00 00 02 20 00 00 00 01 00 00 09 55 00 01 01 00 00 00 01 00 00 00 00 FF FF FF FF
     比较第一次Touch的解密数据,除后面15字节变化外,前面的数据是固定不变的。后面的15字节数据的含义,可以参考第一次Touch回复的数据。
返回结果
包头:
     02 17 59 00 91 26 cf
包体:
     b4 70 90 99 62 40 6f 5d da
     c7 41 0b bf 6f 1b 8f d8 5c 41 df 5e 1c 19 ef 7e
     fb 1d 09 46 82 8b 5e d1 1e fc 80 cf 71 28 4b 4f
     0b 17 ba ff 86 4d af 9b f8 d0 8c ab 0b f2 56 1f
     64 64 6d 50 4f f8 b4 09 74 c6 f2 96 98 8e 93 42
     fe ca 9e 5b 14 74 dc 67 9f 10 0d ad 53 59 2a
     解密结果:
        Key:38 53 a8 aa d3 3a 0e 69 00 b4 e0 76 93 16 ae 72
        00 (结果码,成功)
        4B 03 50 77 (时间,18/11/2009 09:40:07)
        DA 5E 83 CA (IP地址,218.94.131.202)
        00 00 00 00 00 00 00 00 (8字节0)
        00 38      (令牌长度,下面是令牌数据)
        AE D7 65 CD 44 06 A9 3F 10 88 CE 07 EB DA F4 66
        9B A5 56 E3 AA CF 68 6F A2 D8 1C 4F CA 04 16 EE
        1C E3 A6 ED 26 22 43 E5 37 E8 E1 63 39 88 C1 CE
        C2 70 12 45 CE 30 CE FE
        00   Touch测试结果,00成功开始登陆,其他继续连接)
开始登陆请求
包头:
     02 17 59 00 ba 49 b2 17 c7 c3 50
包体:
     b2 ba fb 1e 2f ff 38 7c 15 92 f4 31 80 ec 4d 2e
     ba 25 3d 5f e6
     bd 38 51 4a c1 65 1e e9 40 b3 d1 f5 f4 7b 33 ed
     76 fb b5 af b6 58 29 08 b4 a6 83 f7 ae 14 62 a1
     5e 52 6d bb 69 b6 23 08 c6 2c bf df 6c 11 7e 6e
     9e 80 8c 02 27 e4 49 36 08 f2 23 b8 96 b0 a0 3f
     ff e2 2b b4 be 38 4f 37 08 13 b8 18 44 c8 c9 4a
     cf 67 29 c7 19 1f a8 b7 4d 30 bb f4 88 22 b4 49
     a8 35 60
    解密结果:
       Key:b2 ba fb 1e 2f ff 38 7c 15 92 f4 31 80 ec 4d 2e
       00 01 00 00 08 04 01 E0 00 00 02 20 00 00 00 01 00 00 09 55  (基本固定)
       00 38  (令牌长度,下面是令牌数据,此令牌取自第二次Touch)
       AE D7 65 CD 44 06 A9 3F 10 88 CE 07 EB DA F4 66
       9B A5 56 E3 AA CF 68 6F A2 D8 1C 4F CA 04 16 EE
       1C E3 A6 ED 26 22 43 E5 37 E8 E1 63 39 88 C1 CE
       C2 70 12 45 CE 30 CE FE
       03  (待定含义,后续内容基本固定)
       00
       05
       00 00 00 00
       00
       00
       00
登陆请求回复
包头:
     02 17 59 00 ba 49 b2
包体:
     1e 47 01 71 10 98 4a 8c ff
     a3 21 02 dc ed 88 91 b5 f9 fb fc ba 63 7a 7a 29
     a9 06 3b e4 9a 9a 8d 75 6b d1 db 80 44 2b a2 d8
     76 26 0c 95 fd 81 78 ae 70 49 75 ce 08 73 87 c2
     e5 0b 75 cc 57 df 66 ef e0 f5 a4 98 16 83 f8 a9
     44 ef a6 9b a7 c3 2a
                 
     解密结果:
        Key:b2 ba fb 1e 2f ff 38 7c 15 92 f4 31 80 ec 4d 2e   (取自登陆请求的Key)                        
        03  (结果,03,成功,04,需要验证码)
        00
        05
        00
        00 00 00 00   (需要验证码时为00 00 01 23,不需要时为全0)
        00 38  (令牌长度,后续为数据)
        9B 84 A3 8C F1 B1 F3 9D 71 4B A7 86 A3 55 75 AD
        34 24 A0 8D EC 3D 41 F5 21 E4 D0 1D FC 8C 1B 53
        2F 8C 5A 17 1C 3D 70 BF 72 8E EC CF 9F 7E 08 1C
        3D 9C 96 6F D9 53 61 68
        根据结果码的数据,下面开始密码校验,或者输入验证码再校验密码。
       
下面是校验密码的数据包,里面穿插了MD5,Double MD5,TEA加密,包体甚为硕大,在此不详述了,下篇文章介绍。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值