QQ2008贺岁版协议分析(第三次)

作者:Huang Guan gdxxhg+webqq@gmail.com



'头部:

'0 = 0x02

'1-2 = 客户端版本号码

'3-4 = 命令类型

'5-6 = 包序号 * <li>包序号, 0x05~0x06.

'7-10 = 用户 QQ 号 * <li>用户QQ号, 0x07~0x0A

'

'尾部: 0x03
一、 Touch包0x91

a) 0x2aa8 客户端

原始数据:

02 11 5b 00 91 2a a8 38 25 f5 91 5d 4c af 65 54 44 6d 76 7b ff f0 14 73 e6 0a 95 9d 74 ce b3 b5 fd 61 1d 12 84 a5 04 53 3c b1 d4 f9 27 9c 7c 3f ef f0 bb 3c dc 3f 0f 25 ee 3d 7c 03



包头:

02 11 5b

命令:

00 91

序号:

2a a8

QQ号码:

38 25 f5 91 (十进制:我的Q,942011793)

临时钥匙A:

5d 4c af 65 54 44 6d 76 7b ff f0 14 73 e6 0a 95 (随机生成)

加密数据:

9d 74 ce b3 b5 fd 61 1d 12 84 a5 04 53 3c b1 d4 f9 27 9c 7c 3f ef f0 bb 3c dc 3f 0f 25 ee 3d 7c

包尾:

03



解密数据(临时钥匙A):

00 01 01 00 00 00 02 00 00 00 00 DB 85 31 A9

第一次发送该包时,这里的数据全部为0



b) 0x2aa8 服务器

原始数据:

02 11 5b 00 91 2a a8 ef a7 fc 36 e7 5e f5 df a9 6e e0 e6 5a ba e4 84 03



包头:

02 11 5b

命令:

00 91

序号:

2a a8

加密数据:

ef a7 fc 36 e7 5e f5 df a9 6e e0 e6 5a ba e4 84

包尾:

03



解密数据(临时钥匙A):

00 00


二、 请求令牌0x62

a) 0x221d 客户端

原始数据:

02 11 5b 00 62 22 1d 38 25 f5 91 00 03



包头:

02 11 5b

命令:

00 62

序号:

22 1d

QQ号码:

38 25 f5 91

数据:

00

包尾:

03



b) 0x221d服务器

原始数据:

02 11 5b 00 62 22 1d 00 18 d3 19 45 57 28 1f 56 dd a6 dd be c1 67 2e 32 92 b9 ee ea 81 65 03 68 8d 03



包头:

02 11 5b

命令:

00 62

序号:

22 1d

令牌0x62长度:

00 18

令牌0x62数据:

d3 19 45 57 28 1f 56 dd a6 dd be c1 67 2e 32 92 b9 ee ea 81 65 03 68 8d包尾:

03


三、 登录令牌0xba

a) 0x221d客户端(连发3次)

原始数据:

02 11 5b 00 ba 22 1d 38 25 f5 91 3f 6b e0 82 c8 e2 82 ca a8 5f f6 ee 00 4b 91 3b 47 65 a5 0a 64 2e 37 a9 65 1f 0b d5 fd 37 84 bf 38 bf ab 64 9c 04 5e c6 37 37 b0 d0 f3 de e3 0f a9 54 4a 6f 84 fc a6 37 e6 33 1d 9e 4e b8 65 35 03



包头:

02 11 5b

命令:

00 ba

序号:

0x221d

QQ号码:

38 25 f5 91

临时钥匙B:

3f 6b e0 82 c8 e2 82 ca a8 5f f6 ee 00 4b 91 3b

密文:

47 65 a5 0a 64 2e 37 a9 65 1f 0b d5 fd 37 84 bf 38 bf ab 64 9c 04 5e c6 37 37 b0 d0 f3 de e3 0f a9 54 4a 6f 84 fc a6 37 e6 33 1d 9e 4e b8 65 35

包尾:

03



解密数据(临时钥匙B):

18 (令牌0x62长度)

D3 19 45 57 28 1F 56 DD A6 DD BE C1 67 2E 32 92 B9 EE EA 81 65 03 68 8D (令牌0x62数据)

03 00 05 00 ? (子命令,如果由验证码获得,第一位是04)

00 00 00 00 00 00(固定,未知)



b) 0x221d 服务器(登录令牌)1

原始数据:

02 11 5b 00 ba 22 1d

4d 3e 4b 31 6d ab de 96 b0 52 f3 3d 93 b8 3d 3b c4 92 2c cb 6c 4c 6d ff d5 96 7d 18 48 68 b6 b8 21 5b d8 b2 13 76 4f 63 8b f8 97 9f 36 4f 26 bd 03



包头:

02 11 5b

命令:

00 ba

序号:

22 1d

加密数据:07

很长。。

包尾:

03



解密数据(临时钥匙B):

03 00 05 00 (子命令,如果由验证码获得,第一位是04)

00

20 (令牌c长度)

90 E2 42 7F 2F D4 E3 54 31 76 BA E5 6E A3 39 42 31 DE 2A FF AA 3A CC 36 79 1E 9B 69 69 27 25 F2(令牌c数据)



c) 0x221d 服务器(登录令牌)2

分析同上

d) 0x221d 服务器(登录令牌)3

分析同上
四、密码验证0xdd

a) 0x221d 客户端

原始数据:



02 11 5b

00 dd

22 1d

38 25 f5 91

82 57 80 fb d9 c2 2c 72 3f 6b e0 82 c8 e2 82 ca

08 73 ec e7 85 de 34 40 ab ea 4f fa 43 46 fe 1c 04 0a 32 ac 43 d1 5a ab 9a 0f eb be 0c 2b d3 3a c4 c4 8b 76 b4 8d 04 0d 48 07 35 e6 7e 37 47 c9 4d 92 f4 28 47 da 9e 5f ac 6d 12 a6 63 1f fb dc 9b 0c f8 4e 6a ad 10 3a 8f b3 3f 1f 70 1e ca 87 78 4f 2a c0 7c c9 d0 44 69 69 a5 58 e3 6a 23 c7 30 a1 4f 51 9c 3b 6c 53 a6 b6 c1 6e ed 8e 5c d9

03



随机钥匙:

82 57 80 fb d9 c2 2c 72 3f 6b e0 82 c8 e2 82 ca

密文:

08 73 ec e7 85 de 34 40 ab ea 4f fa 43 46 fe 1c 04 0a 32 ac 43 d1 5a ab 9a 0f eb be 0c 2b d3 3a c4 c4 8b 76 b4 8d 04 0d 48 07 35 e6 7e 37 47 c9 4d 92 f4 28 47 da 9e 5f ac 6d 12 a6 63 1f fb dc 9b 0c f8 4e 6a ad 10 3a 8f b3 3f 1f 70 1e ca 87 78 4f 2a c0 7c c9 d0 44 69 69 a5 58 e3 6a 23 c7 30 a1 4f 51 9c 3b 6c 53 a6 b6 c1 6e ed 8e 5c d9

解密数据(包中的随机钥匙):

00 5F 00 00 08 04 01 E0 (子命令)

20 (令牌c长度)

90 E2 42 7F 2F D4 E3 54 31 76 BA E5 6E A3 39 42 31 DE 2A FF AA 3A CC 36 79 1E 9B 69 69 27 25 F2 (令牌c数据)

00

20 (密码验证串长度)

B6 88 A7 F6 13 DE 95 8B 0E 60 1C 52 F1 E2 6B 62 FD EA 6D EB 54 10 8F D5 F1 6F 80 E5 75 76 81 2F (密码验证串数据)

00

14 (令牌s长度)

43 DA 31 66 F1 1B 40 A0 FA A8 CB 80 BD 69 BD DB 14 D2 60 C4 (令牌s数据,应该随机的)

00

03 (剩余字节长度)

00 (总是0)

37 1A(密码进行1次md5的结果的第二三字节)



密码验证串经密码钥匙解密后得:

1C 37 1A 16 53 8C 69 E8 6A B2 EB 96 62 AD 88 DA (密码进行1次md5的结果)

00 00 (总是0)

15 A8(验证码p,应该是随机的)



b) 0x221d 服务器

原始数据:

02 11 5b

00 dd

22 1d

cb a2 18 53 92 84 c4 1f ac 47 a2 fe ed e1 3a f7 e2 75 b2 3b 88 78 33 9d 42 b9 cf 12 07 7d 21 29 ea 36 ea d7 c4 9d 75 45 b4 85 92 45 54 de 4c 68 0d c9 6d 4c a2 c5 45 f1 61 8a 7a dd 3c b1 f9 7c 93 a0 b2 ee d7 3e dd 72 14 c2 3c 50 a0 f0 63 0f df 4f 87 f3 58 ec 0a ef c3 13 53 4d b4 e8 55 c3 3a 96 f2 dc d1 69 f9 a1 e6 e7 fc cb 23 66 b7 5a 5c c3 0c 95 b6 be 86 dc ac b3 40 03 e1 15 b4 3d d3 b6 02 c7 d3 60 59 0e a9 7b b7 72 f1 55 59 a1 c0 cb f8 8b e4 71 30 5d e8 6a 57 fb 96 3d 8b d8 51 55 84 4e dd 4e b1 36

03





00 97 00 00 00 15 a8 00 20 77 50 8b 34 d2 c1 40 cc cb df c7 96 ac c5 f9 f6 cc b5 26 63 73 b4 db f4 f8 4e e7 89 00 05 c5 6f 00 20 6c 3c 40 26 53 5c 30 56 96 c2 4f 29 21 8c f8 c3 b8 d2 a5 53 08 13 28 e3 a6 b6 88 61 a6 78 f6 40 00 38 c1 46 a7 f2 c9 cc b0 3b 76 7e c4 93 7b ef 8c 17 6b ab 3d 78 0f d6 26 b3 5b e4 7b d4 ac ab d5 f3 96 03 5a 54 74 8b db 86 ca f3 fb bd 39 ac f4 14 c8 53 96 ba fb 77 ce ee

77 39 48 75 47 53 75 57 70 7a 65 70 65 48 35 46 00 00 00 00 00 00

解密数据(密码钥匙):

00 97 00 00 00 (未知,固定)5

15 A8(验证码p)2

00 ========07 8

20

2A D0 7D 70 18 8D F9 70 3C DA 49 91 34 D9 DA D0 51 4D C0 83 49 71 FD 9D FB 8C 52 89 D4 74 00 EF

00

20 (数据U长度)

BE 86 4C F0 FA 79 D0 AF 8D D3 87 BE 55 02 FC B3 F0 E7 53 43 F9 7B 56 25 3A F5 BE 34 29 33 3F A7 (数据U)



00 38 (数据V长度)

5A D5 08 72 EA 98 FA 39 42 76 3B 82 40 8F 7C 9B 73 5A 6A E8 55 57 C6 B8 21 03 8A AC C2 D6 38 6D 22 91 1E C4 27 2F 3F 8A 61 53 97 E7 7C 97 F6 50 49 A9 EC 1D 8A 31 8D 6A (数据V)

70 64 49 50 4B 6E 75 36 34 64 71 6B 38 41 62 6E (0x22使用的临时钥匙W)

00 00 00 00 00 00(总是0)


六、登录0x22

a) 0x2227 客户端

原始数据:

02 11 5b 00 22 22 27 38 25 f5 91 00 38 5a d5 08 72 ea 98 fa 39 42 76 3b 82 40 8f 7c 9b 73 5a 6a e8 55 57 c6 b8 21 03 8a ac c2 d6 38 6d 22 91 1e c4 27 2f 3f 8a 61 53 97 e7 7c 97 f6 50 49 a9 ec 1d 8a 31 8d 6a 69 51 98 e3 4e a1 ca de 8d 74 80 ea dc 33 2b 04 42 6a 80 df 1b 34 3b 94 2b 61 b3 88 ca 1e 4f dd f3 a9 1c e5 45 6e 88 ef b0 a9 78 50 b2 75 bd 09 9d da 25 b8 5c 2b 23 a8 45 c6 b2 cf 0e 23 e8 d5 0a 70 3a 36 0a d4 db c8 08 68 ca 79 45 c5 5f 92 90 95 88 a6 7b 1d c8 ab 9a 37 cb 65 d6 6b cc 0d aa 3e 60 ee a5 1e 07 49 03 4d 54 e7 02 cb 52 8f 74 e3 3d b8 49 73 6b 7d ac 5d d0 b2 63 7b c3 5b 98 f1 20 05 0e 37 93 9a 71 88 2d a8 a6 e0 20 61 76 bf 29 17 77 9a 7f 0b ad ef c8 ec c1 eb 46 0a 07 79 68 f1 c9 7a 04 07 03 a7 33 45 7e 10 50 0c 67 2a 73 44 5d 86 88 30 ce cc a9 1b 0c ce 05 fb 3e 55 8e 81 42 d9 e6 1f bc 2e 1c b7 75 a8 70 4a 1b 6e 9c 72 3a ac 9c 22 e8 c3 75 0e c4 ac 0e 91 02 c0 1e 7b fe dd 4f d2 9d 83 83 5e a2 06 dc f9 00 3c 38 c3 87 9e be fe 6e 96 e1 96 b1 b1 13 97 b8 c9 f3 82 0a 1f 72 c0 b9 cd 81 0e d8 e1 66 8c 1b c4 3d 2b 31 db 84 73 07 e6 16 1c 1a 79 9b 16 b4 13 06 26 d4 1f dc 89 46 05 6b 8b e2 30 80 d0 9e c6 5e 92 32 2d 54 7c 3e 38 ee 68 55 6c 8f b8 3b dc 05 5f ef 58 07 e3 c8 88 07 57 0f 0c 2a f4 d4 e7 b7 9a 50 f7 79 05 66 e7 d9 cc d5 12 52 f2 cf 2f 8b 8d 35 e0 05 ea 96 28 f8 a9 e5 20 d4 7f 9b 2a 50 e8 49 61 26 3b d5 e0 e0 6c 36 99 c3 7e 90 89 dc 42 8c d6 66 5c cb 1b 6b b2 a3 50 f4 31 72 09 d0 dc c4 99 70 dc 66 bd 41 81 f9 a1 1d 63 b6 3f a1 ba 71 9f 95 b9 56 02 16 2a 0d 29 15 78 36 ae 37 9f 7a 9a fb 6d a4 f1 11 2f a0 71 79 27 08 ba bb b9 e1 ef b1 b9 95 a0 db ae 16 dc a3 92 b5 b5 9e 11 68 76 1e 41 49 13 f4 4c e8 04 52 22 86 ad f7 2f 70 29 4f 41 5b be 32 34 5d 0d eb 7f 4b 33 93 ed b1 1d b2 0b 10 8a 86 1b 61 f0 b3 4f 03



包头:

02 11 5b

命令:

00 22

序号:

22 27

QQ号码:

38 25 f5 91

数据V长度:

00 38

数据V:

5a d5 08 72 ea 98 fa 39 42 76 3b 82 40 8f 7c 9b 73 5a 6a e8 55 57 c6 b8 21 03 8a ac c2 d6 38 6d 22 91 1e c4 27 2f 3f 8a 61 53 97 e7 7c 97 f6 50 49 a9 ec 1d 8a 31 8d 6a

加密数据:



包尾:

03



解密数据(临时钥匙W,解密后大小为495字节):

00 00 (未知)

00

20 (数据M长度)

30 11 35 32 3C 16 91 EF 05 7A 80 BC 6A 98 9B D4 DB 67 CC D5 4A 8F 69 BE B2 38 37 BF A1 38 6C 06 (数据M)

2C 8A 45 A8 02 7E 5C CD 44 33 76 AA 2F 7D F9 BD (密码的两次md5对空串加密得到的key T)

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (这19字节总是0)

1D C9 C4 BC BF DF D6 8C 80 16 EB D0 9A 96 F3 27 (QQ.exe程序文件的md5 Key Y)

F9 (本地QQ索引,把T和Y连成串,取当前QQ程序运行进程数目与该串每一字节进行或操作,得到这个结果。具体可以自己用ida分析。)

0A (登录模式,0A表示正常登录,28表示隐身登录)

00 00 00 00 00 00 00 00 00 00 (未知10字节,不一定总是0)

00 01 01 00 00 00 02 00 00 00 00 DB 85 31 A9 (Touch包解密后的内容)

94 0B 73 7A A2 51 F0 4B 95 2F C6 0A 5B F6 76 52 (未知16字节,不同的号在同一机器上都一样)unKnown2

20 (令牌c长度)

90 E2 42 7F 2F D4 E3 54 31 76 BA E5 6E A3 39 42 31 DE 2A FF AA 3A CC 36 79 1E 9B 69 69 27 25 F2 (令牌c)

00 00 00 06 00 00 00 00 00 00 01 40 01 1B 02 84 50 00 (未知18字节,不同的号在同一机器上都一样)

10 (长度)

2D 49 15 55 78 FC F3 D4 53 55 60 9C 37 9F E9 59 (未知16字节,不同的号在同一机器上都一样)unKnown3

00 00 00 00 00 00 00 00 00 00 (同上的未知10字节,不一定都是0)

00 01 01 00 00 00 02 00 00 00 00 DB 85 31 A9 (这里也是Touch包解密后的内容)

02 68 E8 07 83 00 (未知6字节,不同的号在同一机器上都一样)

10 (长度)

3B CE 43 F1 8B A4 2B B5 B3 51 57 F7 06 4B 18 FC (未知16字节,不同的号在同一机器上都一样)unKnown4

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

(总是0,估计是填充到定长)



数据M用密码钥匙解密后:

1C 37 1A 16 53 8C 69 E8 6A B2 EB 96 62 AD 88 DA (密码进行1次md5的结果)

00 00 (未知,为0)

0E AC(随机验证码)



b) 0x2227 服务器

注意,因为已经登录了,在接收这个包之前可能有其他例如接收消息的包发过来。

原始数据:

02 11 5b

00 22

22 27



97 03 0c 5c 94 84 61 78 0f cf 52 18 e2 18 72 5a 35 3f b1 2d 91 2d 73 5b b9 2d f4 58 65 bb b7 ed 95 19 90 a9 5a 90 25 53 e9 12 36 e3 1d 1d 97 00 5e 84 6a a3 bb cb e5 42 b3 0b ff 74 2a 4a 9c d2 95 fe ee 99 11 ea a8 20 48 43 fa 8b f2 92 17 5e ce 54 5b 61 eb f9 2b 68 8a 42 10 bb a6 80 3b f4 50 61 ab 54 a8 76 23 f6 42 98 34 aa 99 94 1a 52 b4 07 99 4d 00 5e d2 27 2e 5c a9 05 a4 26 2c a4 61 c0 c5 bb d8 bc 2e f3 e0 f3 2f 7e ca 62 69 f9 e5 79 aa 14 de bd 1c 9f 41 03 04 e5 64 18 5f 47 0a 30 2b b3 eb 88 a0 76 f1 6b 56 5b 68 a2 ca 73 14 05 0a 55 99 84 7d 5b b7 de 01 32 01 78 a9 64 85 af 12 00 2f df ef ba f4 7f ca 0a e1 12 6d 18 27 5d 28 18 25 82 70 90 10 9b c2 98 ae 05 a8 86 ca 59 96 fc 0e 23 85 fa 12 83 cb 1a d8 a7 2b f6 22 db 20 d0 04 9e 07 c3 9b fc 55 ff e6 b9 d8 06 3a d9 97 14 00 c7 59 86 02 b0 5e c8 d4 be f7 e8 ce 1d 33 ff 71 fd 2f d5 1b 0b 33 5e 9f a4 6b fa c6 f9 b3 79 59 30 41 a2

03



解密数据(密码钥匙):

00 (登录成功)

001 66 41 55 74 51 38 74 57 58 66 42 59 62 4A 46 55 (16字节会话钥匙,以后的数据都用这个加密解密)

017 38 25 F5 91 (QQ号码)020

021 7D 5A 9D 19 (外网IP)

025 C6 F7 (外网端口)

027 7F 00 00 01 (本地IP 127.0.0.1)

031 1F 40 (本地端口8000)

033 47 C1 38 65 (本次登录时间,好像还要加上15小时才是本地时间,好奇+15*60*60)

037 03 (未知,固定)

038 0A (登录模式)

039 00 00 (未知)

041 0E AC 18 4D 8A 27 44 3C 52 42 20 B9 51 06 5B 68 18 DA CA 6E 1C E5 D9 8B F0 8B (未知26字节)

067 00 00 00 00 (IP)

1F 40 (端口)

DA 55 8A 49 (IP)

1F 40 (端口)

00 81 (未知,通常是这个值)

40 (未知)

00 00 00 00 00 (未知)

E3 B7 4B D0 F1 22 A1 43 DD DE F4 40 2C AB 02 65 D7 84 75 2D F0 4B DF 2E E7 41 B3 49 E3 9A AF A5 (未知32字节)

00 00 00 01 00 00 00 00 00 00 00 40 (未知12字节)

DD 58 F6 48 (未知,变化)

47 C1 38 35 (上次登录时间)

47 BF 90 E7 (未知时间)

47 A6 B7 42 (QQ注册时间)

00

0A 00 0A 01 00 00 0E 10 01 14 8F FE 4F BB B4 23 84 00 00 00 00 00 00 00 00 00 00 00 00 00 08 02 04 08 08 08 08 08 04 02 (未知40字节,固定)

00

28 (长度)

1F 03 2E 5D 3F 62 DB 6E AA F4 EC AB F1 8D 5F 2F 1F 63 2E 8E 02 0C EF 10 8C 94 81 78 3A D6 28 8C FB 60 71 18 38 4F 81 7A (未知40字节)

00

30 (长度)

B0 C8 D6 4F 73 90 85 DD F3 18 D2 F5 EA 0F 0C E5 5D 0A 38 CC 08 69 52 22 19 36 58 0B 4A 09 6F 54 98 D9 97 7D 25 23 C0 E6 D7 0C C7 3F A8 11 D5 29 (未知48字节,变化)

3A 3D 20 F2(服务器IP)


七、注销0x01

a) 0x2248 客户端

原始数据:

02 11 5b

00 01

22 48

38 25 f5 91

00 60 31 cd ee 5f 18 f0 64 70 82 eb 29 93 c0 a6 d5 23 5a 84 cb b9 9c be ec 47 d3 e6 73 ff df d9

03



包头:

02 11 5b

命令:

00 01

序号:

22 48

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

B7 A6 F7 A5 13 4B 31 CF 21 92 76 06 93 F8 54 9A(钥匙,(昵称+QQ号码)的md5,20080304)








八、消息提示0xd4

a) 0x2227 客户端

原始数据:

02 11 5b 00 d4 22 27 38 25 f5 91 1b 79 05 8f 6e 16 5c b7 31 18 f2 96 7e 9e 2f 06 03



包头:

02 11 5b

命令:

00 d4

序号:

22 27

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

38 25 F5 91 (自己的QQ号码)



b) 0x2227 服务器

原始数据:

02 11 5b 00 d4 22 27 76 cd c3 7f 17 7a a6 20 2c b5 ff 6c 3c 9f fe 9c 7e 34 ad de 5d eb a6 50 61 ba dd 05 de eb a7 60 0f 2e 47 50 a2 7d d1 72 25 dc 52 6f 20 47 77 bc aa d3 2a 0e a9 9f 8a b7 ad d1 92 06 12 e5 c8 b3 10 17 99 a2 e1 14 57 31 e7 16 9b 54 c4 f3 14 04 3b d3 8f f8 cb 81 3d 75 ee 3e 92 11 58 b3 32 6c 92 db c2 87 95 79 dc 23 c4 9f 6e 86 23 c0 4e e8 bf c7 06 c4 34 5a d7 98 b0 2e b1 84 b5 41 cb 91 c4 be 21 03 72 cd 91 f2 60 3e 8e d1 aa 9c 60 9c 19 d3 29 4e ba 4b 4a 04 ef 2d c8 07 61 d9 df 5a fd a5 30 10 2b 25 85 c3 1b 70 4c e9 81 53 b6 df 12 ba f5 1b 68 02 7c 2b 03



解密数据(SessionKey):

00 01 (未知)

00 28 (未知)

00 02 21 B9 83 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 02 02 25 B9 83 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 07 01 1B 58 23 28 01 F4 00 03 00 04 00 00 00 02 00 05 00 04 00 00 03 84 00 06 (未知)

00

53 (消息长度)

3C 6D 73 67 20 74 79 70 65 3D 22 30 22 3E 3C 74 65 78 74 3E BD BB CC B8 D6 D0 C7 EB CE F0 C7 E1 D0 C5 BB E3 BF EE A1 A2 D6 D0 BD B1 CF FB CF A2 A3 AC CE F0 C7 E1 D2 D7 B2 A6 B4 F2 C4 B0 C9 FA B5 E7 BB B0 A1 A3 3C 2F 74 65 78 74 3E 3C 2F 6D 73 67 3E (消息内容:

<msg type="0"><text>交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。</text></msg>



00 04 00 0A 00 04 04 C1 04 CB 04 CD 04 C7



c) 0x2228 客户端

原始数据:

02 11 5b 00 d4 22 28 38 25 f5 91 d8 98 fe 11 14 99 16 11 8e 55 96 8e ed be 57 1f 76 c2 17 50 53 a7 f0 38 03



包头:

02 11 5b

命令:

00 d4

序号:

22 28

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

38 25 F5 91 (自己的QQ号码)

00 07 00 08 (未知)



d) 0x2228 服务器

原始数据:

02 11 5b 00 d4 22 28 a9 78 05 25 82 d4 c2 29 21 e5 11 ca 00 75 25 98 ce ee f2 30 3d 15 5e d3 eb 01 61 3d 45 8a 03 2d dd 1d 14 ea 05 63 3d 25 80 78 00 dd 1c 9d 1e 67 88 0c e7 ac 84 f3 69 ce b2 c6 2d 6d 00 7c 66 93 6f 0a 22 90 57 95 79 c2 b8 86 a0 c6 cd a5 af ee 0d 9e da 67 70 5a b7 1b 35 a5 d8 9c 83 8a bf cf 7d b2 4e a7 ae e2 92 f6 03



解密数据(SessionKey):

00 07

00

53 (消息长度)

3C 6D 73 67 20 74 79 70 65 3D 22 30 22 3E 3C 74 65 78 74 3E BD BB CC B8 D6 D0 C7 EB CE F0 C7 E1 D0 C5 BB E3 BF EE A1 A2 D6 D0 BD B1 CF FB CF A2 A3 AC CE F0 C7 E1 D2 D7 B2 A6 B4 F2 C4 B0 C9 FA B5 E7 BB B0 A1 A3 3C 2F 74 65 78 74 3E 3C 2F 6D 73 67 3E(消息内容:

<msg type="0"><text>交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。</text></msg>




八、获取用户信息0x06

e) 0x2227 客户端

原始数据:

02 11 5b 00 06 22 27 38 25 f5 91 84 ed 00 40 90 d8 c2 58 bf 1a f4 e4 31 38 01 49 80 c0 62 29 9b 42 ac 99 03



包头:

02 11 5b

命令:

00 06

序号:

22 27

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

39 34 32 30 31 31 37 39 33 (自己的QQ号码的字符串形式:942011793)



f) 0x2228 服务器

原始数据:

02 11 5b 00 06 22 27 46 5b ca a9 ee d7 ac 96 4a 92 72 97 71 78 32 a5 05 75 cb 33 38 97 92 82 ec a0 62 56 60 39 f8 c2 42 92 1e 6c 25 91 ff 97 63 96 bd b6 fe d4 d0 5f 0b 48 18 34 d4 33 cd e9 15 1a ee 7e a2 3d c4 cb 99 a5 7b e2 6f 74 43 da 08 d8 da c4 46 b5 01 66 9e 0d fe 4d 03 d9 b0 f8 31 07 f4 fe c6 bc 0d 01 0f 9c 89 c5 6b f3 c6 03 98 85 2d c2 88 d2 1a 9f 03



解密数据(SessionKey):

用户信息用1E来分隔。

39 34 32 30 31 31 37 39 33 (942011793)

1E

54 75 78 (Tux)

1E

D6 D0 BB AA C8 CB C3 F1 B9 B2 BA CD B9 FA(中华人民共和国)

1E

B9 E3 B6 AB (广东)

1E

1E

(联系地址)

1E

(联系电话)

1E

32 31 (21)

1E

C4 D0 (男)

1E 1E 1E 1E 1E 1E 1E 1E 1E 1E

31 (1)

1E 1E 1E

30 (0)

1E 1E 1E 1E

D4 C6 B8 A1 (云浮)

1E

2D (-)

1E

2D (-)

1E

30 (0)

1E

30 (0)

1E

30

1E 1E

30

1E

30

1E

30

1E

38 33 38 38 36 30 38

1E

31 33 30 32 32 30 32 38 39

1E

30
九、未知命令0xda

a) 0x2227 客户端

原始数据:

02 11 5b 00 da 22 27 38 25 f5 91 b7 51 d5 54 0b a3 71 43 21 b5 23 5a fa 34 71 4b 58 0c 50 2b c0 03 a8 db 03



包头:

02 11 5b

命令:

00 da

序号:

22 27

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

02 02 00

48 F6 58 DD (未知时间)

47 C1 38 35 (上次登录时间)

08 03(未知)



b) 0x2227 服务器

原始数据:

02 11 5b 00 da 22 27 85 1f 63 66 6f ee d4 d5 fc a7 05 16 be e3 60 84 03



解密数据(SessionKey):

02(未知)
十、改变当前状态0x0d

a) 0x2227 客户端

原始数据:

02 11 5b 00 0d 22 27 38 25 f5 91 d4 b0 1e 25 c7 1e 95 45 15 58 e6 a6 0f 6b 86 15 45 ca c0 95 bd 54 02 3e 03



包头:

02 11 5b

命令:

00 0d

序号:

22 27

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

0A (状态: 0A表示在线)

00 00 00 00 00 00 00 00 00 00



b) 0x2228 服务器

原始数据:

02 11 5b 00 0d 22 27 30 ed ac ce ce 5e 73 24 b0 73 cb be a7 5c 4d 52 03



解密数据(SessionKey):

30(ASCII字符‘0’,成功)




十一、接收消息0x17

a) 0x2227 服务器

原始数据:

02 01 00 00 17 38 65 a5 d4 3b 38 fc fb 74 08 1b 4d 4d 15 61 44 2d 6f d3 1c d6 35 14 76 e2 5f 07 43 53 0b 97 cc b0 a4 04 44 a6 b2 9f 1b 6a 8b 17 b9 d8 3c 45 96 9b 55 b7 11 d0 d8 9d 1a c5 0f 45 d3 7a 35 df 19 02 d7 59 e7 48 6c 26 28 c0 3b 52 d1 41 0e 65 99 7a ae 04 94 c9 3f 9f 18 6a f9 90 f2 c2 71 c0 57 fe e2 5b 82 08 e0 90 7c 0c 63 94 b4 93 11 d0 37 28 e2 03



包头:

02 01 00

命令:

00 17

序号:

38 65

加密数据:



包尾:

03



解密数据(SessionKey):

00 00 27 10 (发送者QQ号:10000)

38 25 F5 91 (接收者QQ号)

00 00 D9 A4 (序号)

79 0E 4E 20 (发送者IP)

1F 40 (发送者端口)

00 90 (消息类型,未知类型)

00 00 00 00 00 00 00 0A 51 48 73 3F 21 56 56 62 34 56 69 3A 26 54 78 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 55 27 60 3A 96 C5 07 38 71 7B 24 F9 3D 70 A2 D7 C7 EC 40 2C 89 40 82 6C 94 87 0A 01 B0 FC 1F 87 AA EC A9 2D 13 FA 20 8E(未知,这不是普通的文本消息。)






十三、获取好友列表0x26

a) 0x222a 客户端

原始数据:

02 11 5b 00 26 22 2a 38 25 f5 91 3b 4a 7b b4 ca a6 bc 05 cf 54 32 03 1a d8 07 3a 03



包头:

02 11 5b

命令:

00 26

序号:

22 2a

QQ号码:

38 25 f5 91

加密数据:



包尾:

03



解密数据(SessionKey):

00 00 (排序后的偏移位置)

00(是否排序)



b) 0x222a 服务器

原始数据:

02 11 5b 00 26 22 2a e4 36 68 af 3e 5a d2 2f 05 c5 3e 14 df c3 39 53 24 db d6 ea 9e 50 bb 81 66 8e 4d 21 8d 96 0e 25 59 b8 d4 e9 0d e2 c8 dd fa 97 6d 58 f8 ad bf f9 0e 1a d6 25 b1 ec 08 ae f8 3a b9 bb 28 37 3c c6 03
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注意:本软件以及源代码仅供学习研究使用。所用协议皆属个人业余的黑匣分析结果。 Developer List: 小虾 (gdxxhg@gmail.com) 千月(改进myqq.c界面) Windows编译: 需要Mingw32(Devcpp的bin也可以)。 打开控制台,在当前目录下执行 make -C src clean all Linux编译: 在终端里执行 make -C src -flinux.mak clean all 由于最初没有周全考虑,目前版本暂时不兼容64位的机器,望见谅! Update History: Version 3.13 (2009-3-29) 1. Linux(Ubuntu) version compiled! Version 3.12 (2009-3-22) 1. 用Windows的Sleep代替不推荐的_sleep。 2. 在Mingw32-gcc4.3.3上编译成功。 Version 3.11 (2009-2-8) 1. 输入验证码提示。 2. 修正myqq.c删除好友的bug。 3. 修正添加附言的bug。 Version 3.10 (2009-2-7) 1. 修正09接收消息协议。 2. 全部源代码文件更改为UNIX-UTF8格式。 3. 增加Preference来自定义屏蔽部分协议。 4. 增加添加、删除好友基本协议,支持验证码。 5. 登录后更改状态。 6. 登录机器数据随机填充。 7. 修正myqq.c里无法打印某些消息的bug。 Version 3.08 (2009-1-27) 1. 修正myqq.c里显示好友状态。 2. 修正因缺少pthread_mutex_destroy引起的资源泄漏(可以检测到)。 3. 修正好友数目多时导致分组信息与群信息未能获取的问题。 4. 10分钟刷新群在线成员。 5. 自动建立qqconfig.txt配置文件。 Version 3.03 (2009-1-26) 1. 修正prot_im.c中buf->pos += get_word( buf );在Linux上运行时发生的错误。 2. 编译Linux版本。 3. qqconfig.txt缺失提示。 Version 3.00 (2009-1-25) 1. 更换QQ2008贺岁版协议QQ2009Preview4协议。 2. 全面使用utf8,myqq.c为Windows用户转换为gb。 3. 移除所有多余,功能不确切的协议处理函数。 4. 能够接收08,09协议的好友消息与群消息。 5. 处理消息中的表情字符,转换成[face:*]以及[image]来表示。 Version 2.95 (2008-10-26) 1. 处理返回NULL的可能。 2. 服务器列表由配置文件导入。 Version 2.9 (2008-10-1) 1. 支持字符颜色显示。 2. 中文字符界面。 3. 补充了几个新的服务器IP。 4. 输入密码时去掉回显或打*。 5. 修正prot_login_verify_password_reply处理返回包的误解,感谢CC-Akita(CCPaging)。 6. 增加Dev-cpp工程文件,增加程序图标。 7. Makefile里定向pthread库,便于不同环境的编译。 Version 2.8 (2008-8-3) 1. Linux Build Support. Version 2.7 (2008-8-2) 1. 使用上次登录IP,加快多Q登录速度。 2. 修正list.c里添加项在满时没有返回<0的漏洞。 3. 在登录未完成时,不接收消息。 Version 2.6 (2008-7-27) 1. 登录中的未知字节用0填充,原来是用随机数。 2. 根据文档,进一步完善登录协议,但还是没有解决验证码的出现问题。 Version 2.5 (2008-7-26) 1. 修正一个发包的bug,包被送进已发送队列之后time_alive应该为当前时间。之前因为 这个问题,导致一个包超时其他包也要重发? 2. 恢复注销命令(没有这个,怎么下线呢)。 3. 登录首先获取所有钥匙,避免出现登录后被Kick out。 4. 感谢网友008的提醒,号码格式化字符%d已被替换为%u。 Version 2.4 (2008-7-24) 1. 好友添加。 2. Packed with pthread library. 3. 删除注销命令(可能引发异常) 4. 重发时长为6秒 Version 2.3 (2008-7-22) New features: 1. 支持UDP协议登录。 2. 调整了登录后的发包次序。 3. 好友使用qsort快排。 4. 完善了event的缓冲区,和以前的webqq结合使用。 5. 使用assert函数,便于精简发布版本的代码。 Version 2.0 (2008-7-17) New featrues: 1. 包管理器的链表改用loop数据结构,精简代码,减少错误。 2. (--a)%b可能为负数,原来没注意到,引发了改写mcb的内存错误。 3. 发包序号策略改善,不再每次发包都递增。 Version 1.9 (2008-7-15) New features: 1. 重新策划程序,采用QQ2008贺岁版协议。 2. 原来的group改名为qun,原group被用作管理好友分租。 3. 增加memory.c内存管理和debug.c调试信息及日志记录。 4. ccpaging建议改掉qqqun这个结构名,我打算下个版本把它改为qun_t,其它类似如 member_t, group_t, buddy_t。 5. 具备登录输入验证码功能,验证码图片保存在web/verify目录下。 6. 修正qqsocket里接收数据溢出。 Version 0.9 (2008-2-12) New features: 1. MyQQ库可以登录多个ID,API全部更新。 2. 修正好友名称里混有QQ号码和特殊字符。 3. 完善了好友状态回调。 4. 延长了重发包的时间,避免发送两次。 5. 修正在自动回复时控制台提示的问题。 6. 回调函数全部使用stdcall模式。
MyQQ is a cross-platform library for communication which uses a TencentQQ-like protocol to communicate with friends on the Internet. It can work well now and maintained by Xiaoxia (gdxxhg@gmail.com). If you are interested in MyQQ and have improved it, I suggest you that you send your source code to me then everyone will know your work and thank you! You can get the latest version of this software (including its source code) at http://home.xxsyzx.com 注意:本软件以及源代码仅供学习研究使用。所用协议皆属个人业余的黑匣分析结果。 Developer List: 小虾 (gdxxhg@gmail.com) 千月(改进myqq.c界面) ccpaging Windows编译: 需要Mingw32(Devcpp的bin也可以)。 打开控制台,在当前目录下执行 make -C src clean all Linux编译: 在终端里执行 make -C src -flinux.mak clean all MacOSX编译: 在终端里执行 make -C src -fmac.mak clean all 由于最初没有周全考虑,目前版本暂时不兼容64位的机器,望见谅! Update History: Version 3.17 (2009-6-30) 1. 修正发送消息后头像的变化。 2. 修正09SP1接收信息的bug。 3. 修正0x18包中获取好友失败时的内存访问错误。 4. 修正09SP1系统消息协议。 5. 盲目修正09接收消息的bug。 6. 增加qqconn.c,支持代理登录。 Version 3.16 (2009-6-27) 1. 增加NoColor配置项关闭色彩文字。 2. 增加cls/clear/clrscr命令来清屏。 3. 提示消息发送失败,但不具体。 Version 3.15 (2009-6-24) 1. 增加qqclient_detach()。 2. 编写成libqq,供外部程序调用。 Version 3.14 (2009-6-21) 1. 命令行参数方式登录失败后的死循环。 2. 内核使用QQ2009SP1协议。 3. 修正08之前接收消息的bug。 4. 兼容Mac32。 5. utf8.c里添加qqdef.h头文件。 Version 3.13 (2009-3-29) 1. Linux(Ubuntu) version compiled! Version 3.12 (2009-3-22) 1. 用Windows的Sleep代替不推荐的_sleep。 2. 在Mingw32-gcc4.3.3上编译成功。 Version 3.11 (2009-2-8) 1. 输入验证码提示。 2. 修正myqq.c删除好友的bug。 3. 修正添加附言的bug。 Version 3.10 (2009-2-7) 1. 修正09接收消息协议。 2. 全部源代码文件更改为UNIX-UTF8格式。 3. 增加Preference来自定义屏蔽部分协议。 4. 增加添加、删除好友基本协议,支持验证码。 5. 登录后更改状态。 6. 登录机器数据随机填充。 7. 修正myqq.c里无法打印某些消息的bug。 Version 3.08 (2009-1-27) 1. 修正myqq.c里显示好友状态。 2. 修正因缺少pthread_mutex_destroy引起的资源泄漏(可以检测到)。 3. 修正好友数目多时导致分组信息与群信息未能获取的问题。 4. 10分钟刷新群在线成员。 5. 自动建立qqconfig.txt配置文件。 Version 3.03 (2009-1-26) 1. 修正prot_im.c中buf->pos += get_word( buf );在Linux上运行时发生的错误。 2. 编译Linux版本。 3. qqconfig.txt缺失提示。 Version 3.00 (2009-1-25) 1. 更换QQ2008贺岁版协议QQ2009Preview4协议。 2. 全面使用utf8,myqq.c为Windows用户转换为gb。 3. 移除所有多余,功能不确切的协议处理函数。 4. 能够接收08,09协议的好友消息与群消息。 5. 处理消息中的表情字符,转换成[face:*]以及[image]来表示。 Version 2.95 (2008-10-26) 1. 处理返回NULL的可能。 2. 服务器列表由配置文件导入。 Version 2.9 (2008-10-1) 1. 支持字符颜色显示。 2. 中文字符界面。 3. 补充了几个新的服务器IP。 4. 输入密码时去掉回显或打*。 5. 修正prot_login_verify_password_reply处理返回包的误解,感谢CC-Akita(CCPaging)。 6. 增加Dev-cpp工程文件,增加程序图标。 7. Makefile里定向pthread库,便于不同环境的编译。 Version 2.8 (2008-8-3) 1. Linux Build Support. Version 2.7 (2008-8-2) 1. 使用上次登录IP,加快多Q登录速度。 2. 修正list.c里添加项在满时没有返回<0的漏洞。 3. 在登录未完成时,不接收消息。 Version 2.6 (2008-7-27) 1. 登录中的未知字节用0填充,原来是用随机数。 2. 根据文档,进一步完善登录协议,但还是没有解决验证码的出现问题。 Version 2.5 (2008-7-26) 1. 修正一个发包的bug,包被送进已发送队列之后time_alive应该为当前时间。之前因为 这个问题,导致一个包超时其他包也要重发? 2. 恢复注销命令(没有这个,怎么下线呢)。 3. 登录首先获取所有钥匙,避免出现登录后被Kick out。 4. 感谢网友008的提醒,号码格式化字符%d已被替换为%u。 Version 2.4 (2008-7-24) 1. 好友添加。 2. Packed with pthread library. 3. 删除注销命令(可能引发异常) 4. 重发时长为6秒 Version 2.3 (2008-7-22) New features: 1. 支持UDP协议登录。 2. 调整了登录后的发包次序。 3. 好友使用qsort快排。 4. 完善了event的缓冲区,和以前的webqq结合使用。 5. 使用assert函数,便于精简发布版本的代码。 Version 2.0 (2008-7-17) New featrues: 1. 包管理器的链表改用loop数据结构,精简代码,减少错误。 2. (--a)%b可能为负数,原来没注意到,引发了改写mcb的内存错误。 3. 发包序号策略改善,不再每次发包都递增。 Version 1.9 (2008-7-15) New features: 1. 重新策划程序,采用QQ2008贺岁版协议。 2. 原来的group改名为qun,原group被用作管理好友分租。 3. 增加memory.c内存管理和debug.c调试信息及日志记录。 4. ccpaging建议改掉qqqun这个结构名,我打算下个版本把它改为qun_t,其它类似如 member_t, group_t, buddy_t。 5. 具备登录输入验证码功能,验证码图片保存在web/verify目录下。 6. 修正qqsocket里接收数据溢出。 Version 0.9 (2008-2-12) New features: 1. MyQQ库可以登录多个ID,API全部更新。 2. 修正好友名称里混有QQ号码和特殊字符。 3. 完善了好友状态回调。 4. 延长了重发包的时间,避免发送两次。 5. 修正在自动回复时控制台提示的问题。 6. 回调函数全部使用stdcall模式。 Version 0.6 (2008-2-5) New features: 1. Wait for message to send. 2. Improve input. 3. Check for repeated messages. 4. Add refresh command. Version 0.5 (2008-2-4) New features: 1. Send message to group. 2. Get group list. 3. List groups, online users and online group members. 4. Get group member information. 5. Get buddy information. 6. The original interface works. Version 0.1 (2008-2-1) Use QQ2006 Protocol to login. Support Receiving messages from buddies and groups, sending messages to buddies. Compiled and linked on Linux(GCC 4.1, Debian etch). Compiled and linked on Windows(MingwGCC 3.4.2).

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值