QQ2013协议分析(解密篇)

版本信息:QQ2013beta2

测试QQ:2632949572

QQ密码两次md5所得密钥(MD5(MD5(QQ密码)+0x00000000+QQ号码)):47 D5 0A 0E 5E AD D1 BC F3 6E C3 48 B8 BD B6 00

下面,我们便来一起解析QQ登录得到会话密钥的方法。

QQ协议首选的传输层协议是UDP,如果UDP不可用,那么会再尝试使用TCP进行传输。UDP使用的端口是8000(0x1F40),TCP使用的端口是443(0x1BB)。这里我们只分析udp。

QQ2013登录过程得到会话密钥需要分析命令字为0x0826和0x0828的报文,解密过程使用16轮TEA算法,过程如下:

1、得到客户端->服务器0x0826报文中的密钥A;
2、用密钥A解密1中报文的密文部分(紧跟着密钥A,一直到结束标志0x03前);
3、用QQ号码与QQ密码一起产生密钥B(MD5(MD5(QQ密码)+QQ号码));
4、用密钥B解密2中得到的明文中的120字节,所得到的明文后16字节为密钥C;
5、用密钥C解密服务器->客户端0x0826报文中的密文数据;
6、在步骤5所得明文中取得密钥D;
7、用密钥D解密服务器->客户端0x0828报文中的密文,所得明文第26字节到第41字节
即为会话密钥。

至此,后面的报文都用会话密钥解密。

具体分析包:(此处使用QQAnalyzer工具抓包)

//我们先以包1为例,解析QQ数据构成

0x02标识    版本号       命令字          序号              QQ号             数据            0x03标识

 1字节          2字节         2字节          2字节            4字节             不定              1字节                  

[NO.1 2013-05-02 19:02:34 397 SEND 115字节]
02                      //标识

32 41                //版本号

08 25                //命令字

36 60                //序号

9C EF 9F 44    //QQ号,转换为10进制为2632949572

//从下面开始为实际数据

03 00 00 00 01 01 01 00 00 66 2A 00 00 00 00               //15字节

90 8B 61 FC 82 DC 3E 3C 87 C5 DF 85 63 49 4A 9B    //临时密钥

//从下面开始为密文

15 3E 7B 74 13 D9 78 56 81 CD 4F F9 4A F8 4D 97    

29 39 C0 C7 31 37 CA FB 1E 6C 29 75 98 DF 3B 57

56 F1 40 68 5A 68 5C 83 5A 60 AA C3 6A C8 F5 2B

C8 F1 42 43 88 92 3E 5B 4A 2A 52 DF A6 5C A3 1A

D8 87 20 8B DE AB 52 27

//密文结束

//[  ]内为解密后的明文

[
00 18 00 16 00 01 00 00 04 17 00 00 00 01 00 00
13 C9 9C EF 9F 44 00 00 00 00 01 14 00 1D 01 02
00 19 03 3A 04 4B 55 9B 41 51 6F 63 01 DC 30 13
22 BD A3 A2 5D 02 A4 66 B3 D7 72
]

//实际数据结束

03                      //标识
//以下发送包同上述方法,这里我们只讲得到会话密钥的过程,故而只分析命令字为0x0826与0x0828的包。
[NO.2 2013-05-02 19:02:34 421 RECEIVE 111字节]
02 32 41 08 25 36 60 9C EF 9F 44 00 00 00 E1 47
13 E5 CA 52 48 DF D8 B4 80 47 CD A9 4E 95 7E FF
3D 33 18 49 DE 6A 22 98 49 33 C2 7E 56 D2 31 1F
0E 03 32 DC 0F 6F 67 25 FD 95 EF 71 83 D0 C7 62
EE 5E C5 43 6C 1D E6 94 08 17 EF 4A 9B 89 15 01
32 7E 78 6C 0A 48 CE C3 58 FC 52 EE E1 36 18 DE
49 98 CA E6 92 A9 0E 0A 7D 4B D4 FE 37 28 03

[NO.3 2013-05-02 19:02:34 430 SEND 563字节]
02 32 41 08 26 13 CC 9C EF 9F 44 03 00 00 00 01
01 01 00 00 66 2A 00 00 00 00

7E C4 A2 A9 A5 AA 1A 00 9D 0E 51 71 47 57 E4 B4    //临时密钥

//密文开始

E1 E6 75 17 1C 4C
8A F6 7B D5 C9 C2 C0 C2 6A 1D 96 35 F7 B9 62 7E
7E 8B 65 7D D5 27 1D FA 29 AA 8B EE 7A 35 63 A2
84 85 E4 FD E8 B0 88 73 3F CB 13 5A 0C DA 48 E2
45 8A 5B D3 BC D3 A9 44 AE 17 3F C8 CE 09 18 3A
E5 06 C2 44 A5 B0 E9 D9 26 1B 62 74 B9 57 87 65
73 3B 1A EC 00 72 84 EC 43 A1 28 60 A7 12 AC 8C
AE 49 8E 9A 44 D2 DF 7C 5C BF 86 5F 9B E7 3A 7A
BA 0A 8A 70 58 B2 73 F9 D6 4E 1A AB 3F 30 8F B4
25 D0 2F 08 B6 E2 53 B1 26 49 2D 37 E9 BF 9B 1A
46 48 1C 28 C7 67 87 A9 39 D1 81 D6 97 94 A2 05
E9 82 2E A5 CE 9B DF E1 E9 25 FF 17 57 CA 34 D7
71 07 99 8B C6 3C 5B E1 FC 5C 85 F2 63 2A BF 77
C3 3A FD D3 7A FC B1 30 80 45 1D 34 90 82 1B 83
93 BF 4C 87 04 59 0B BD CE 70 1B 52 44 10 91 A7
F3 A0 70 24 5E 08 84 CD 95 EA 0B B5 58 54 84 2D
73 AB 7C A8 AD 95 5F CF 62 8E 52 AB 3E D6 44 3F
B4 B9 11 D0 60 0E 8D EA C2 D9 70 33 8A 9E B9 A8
7F 53 85 12 D0 C2 70 89 BD 36 93 EE 94 99 22 98
9D 7C 31 B9 97 E8 02 7A 04 A6 EA 5E 60 73 1F B0
77 63 70 60 F4 15 7C 77 A8 B5 1E 8D 2D EC 2D 97
0E 57 DC E9 10 5A 36 45 6F D5 D0 EA 60 98 62 EC
33 00 6F A9 FF 6C E3 2F 4F 3D 6B 54 1C 32 02 0A
C9 FD B4 08 BB 53 CF 4B D0 F1 76 6D E5 77 0B 35
DD 65 17 73 83 08 B5 38 62 E6 60 9B DF 94 EA 68
51 A9 9B B1 D8 17 DD 3D 14 BB B2 77 25 E2 24 D4
04 63 D6 F5 ED 5C 48 6A 4C 7F F7 BE F5 F7 0A 2C
BB 7C 3B 19 33 7C 29 0F 71 29 2A F1 D5 49 F3 3B
86 B1 C2 CE 44 82 97 95 0F B8 46 9D F9 72 9F 97
4D 24 02 57 4E 97 71 18 C0 9B 7F 90 44 13 8A F2
DF FE F1 D9 88 68 ED 6E 49 A8 A0 2D 17 61 26 28
44 F4 47 2F 56 34 C7 87 AC E2 AA 34 9F 0D 64 9E
D6 D5 AD 15 8C BA 35 70 F3 9D 94 3A A2 34 0D EC
B5 45

//密文结束
[
01 12

00 38   //3*16+8=56字节数据

//56字节数据开始

EA 5C 1A EE 2D F7 18 D3 4D FB D1 24
74 25 77 02 2E 99 90 84 04 C1 68 E1 DF 07 92 0A
34 CE DD AF 1B 1F 10 08 3A 52 10 69 02 8C 3A 9F
ED C8 E7 6C 04 36 53 36 F7 4C 1E 15

//56字节数据结束

00 05 00 06 00 02      //6字节

9C EF 9F 44                //QQ号

00 06                            //2字节

00 78                            //7*16+8=120字节数据,需要用QQ密码两次md5所得密钥解密

//120字节密文开始

42 B7 E6 23 4A 2B
DA 2B 58 F2 81 99 8D 96 9F 5B 17 48 A2 66 EF 46
12 D3 B7 B2 08 33 EA 66 1B A2 75 DA 20 D3 E9 35
68 44 8D 03 02 AF 4F 71 66 66 CB 54 97 0A B3 00
A9 89 C5 B8 AE E7 0A BB 61 19 F8 58 B9 02 1B 51
A1 45 8E 96 E3 BC 13 42 C6 B6 FE 28 73 07 2E 48
27 62 23 BC 81 B0 C0 14 14 48 F9 FA 17 01 CD C8
65 9F 0F 6A BE 7D 2C 73 A3 8A B0 E0 F6 DB 95 B3
CA 6B 

//120字节密文结束

//[  ]内为解密后的明文(密钥为47 D5 0A 0E 5E AD D1 BC F3 6E C3 48 B8 BD B6 00)

[
33 9E B3 E7 00 01 9C EF 9F 44 00 00 04 17 00 00
00 01 00 00 13 C9 00 00 01 82 DA D8 40 3F 68 A1
04 8A 36 CD 88 A9 C2 55 18 51 7E 8A 8D 00 00 00
00 00 00 00 00 00 00 00 00 00 DE F0 A5 84 00 00
00 00 00 00 00 00 00 10 F0 F0 F0 F0 F0 F0 F0 F0
F0 F0 F0 F0 F0 F0 F0 F0

98 C7 D1 C2 AF 0D 7F 95 BF F1 78 D4 90 32 23 F7    //明文最后16字节,作为0x0826返回包中密文的密钥
]

00 18 00 16 00 01 00 00 04 17 00 00 00 01
00 00 13 C9 9C EF 9F 44 00 00 00 00 01 03 00 14
00 01 00 10 EB 63 EF A6 FD C3 12 53 BB 5E 68 AE
32 09 41 C1 00 32 00 37 3E 00 37 01 03 01 03 00
00 04 00 18 35 00 00 00 00 0A D2 B0 25 00 7A 83
7F D7 16 E9 6E 62 69 71 55 80 9C 7F 04 AD 38 11
B7 4D DE 1C 6F C7 E5 50 B0 6D 19 B7 0A 54 68 01
14 00 1D 01 02 00 19 03 3A 04 4B 55 9B 41 51 6F
63 01 DC 30 13 22 BD A3 A2 5D 02 A4 66 B3 D7 72
01 02 00 62 00 01 DA 3C 15 43 7B BD A9 7F 22 F8
A9 A9 60 4A CE 2C 00 38 43 99 35 3E 7C E7 A7 12
BD 26 1D 4F 65 4E 83 C2 5F AE BD 4F 47 7F E8 2E
CF BF E2 54 62 3D 0C 2E 07 F0 4E 95 87 8C 5C FF
D2 57 38 F2 9F 39 F9 BF 53 13 CA 6C 24 52 35 F2
00 14 A5 66 78 FE 1D 53 15 C4 F4 58 1E 9D 3B C0
F8 44 A2 1C ED B3 00 1A 00 40 77 67 E5 D5 74 98
A5 90 97 57 8C 32 F3 FE 57 01 E2 A2 06 98 DE 9E
7F 3B 45 58 85 44 DC 70 41 BF 31 D6 F8 99 19 3A
F9 E1 BC 88 FD 30 C3 40 FD 35 17 D4 19 C9 E0 4A
33 36 89 C5 9F C3 CE 28 F3 8B
]

03

[NO.4 2013-05-02 19:02:34 477 RECEIVE 871字节]
02 32 41 08 26 13 CC 9C EF 9F 44 00 00 00 

//密文开始

D0 B6
21 12 62 87 A4 2C 1E 3A 26 DB D0 C2 C7 91 58 20
6B 3B F5 29 C8 EB D4 EA 9D A1 53 77 ED F9 9E 95
F0 25 23 AD 5A 1D 96 AC 3E B2 C3 22 CE 75 23 AF
65 ED F2 B9 10 64 7E 2E 84 D8 10 1B A6 0A 0A B5
5C 96 DE D3 3C 56 97 B8 6D AD 0A B3 91 92 9D D6
3D 7B 00 5E 66 F1 4F 78 55 49 70 2D BF 8B 84 72
E9 2E A4 4D 68 80 5D 66 E0 25 BA 1D 69 5A 79 F5
EA DB B5 FC C5 17 4A 02 85 81 45 DD 6B CB A0 1C
A9 BC 65 FD B9 EA FB 0F 19 2D 89 76 52 FC D4 25
21 2B 16 42 97 97 D4 11 67 C2 90 6A 91 ED 82 43
65 BA 75 4D F4 BC 5C 8C D3 DB 32 DE CB C9 D8 58
9B 55 55 8A C9 73 AF 26 0D 35 43 CD 67 FE 07 FA
8D 27 F4 18 C7 3B AA ED 90 6A 38 27 4B 54 C1 C9
B7 11 1B A3 47 19 A1 18 3E 0B 70 C5 B2 D7 C7 C7
50 69 C1 6B 16 DC BF D6 CC B1 69 30 F8 96 13 F9
70 5A E0 FC 5A 0E 1B A5 24 E2 2B DB D5 75 82 60
D9 0F B7 F9 D5 1C 7D 13 FE 5E 6D 4A 6D 2A 72 73
5C 0B 85 25 AB 4B 84 FB A9 90 3B F1 48 A0 06 E0
39 F6 6C 96 8E 7A 93 6D CA CE BE D2 E4 F4 61 C6
04 94 3C 74 CB C0 23 1D 86 D1 B3 35 9D E0 CF 92
5D CB 47 0F 1D C6 52 85 9C 9F 7A FA 13 9E 49 E9
FA 43 FF 48 CF D6 A0 60 3B 2C 65 44 12 49 F0 60
0D AB 5C 6B 26 07 76 0C 2B A6 D8 CD 41 D5 E9 A6
02 BC 62 C7 0D 26 E2 DB 52 41 3B E3 C5 8E 9B BA
72 AC E7 64 C7 6D B5 85 11 51 9C 53 7F 3C 2C 41
11 F9 7E D6 75 37 64 B0 37 4F 9A 40 67 F7 D8 6C
F0 7A 57 BC EA 25 10 9A C5 0E 89 84 32 F6 AC E0
D1 F4 1C 5C 7B 1B C0 9F 68 66 5A 78 75 54 25 14
05 AC 85 AA D6 2A 36 2A B2 FF C2 30 F1 2E 22 E5
BC 99 58 B5 B1 A2 D4 80 F6 5C 71 ED FF 2E 22 5A
D6 06 FD 53 8F BB 21 3E 38 C5 18 CC 0D 2F 03 4B
AB 46 4A 5F 48 00 BA 14 73 C4 FA D8 BA AD EE 2D
E9 01 FE 28 BF 4E 25 81 7B 3B 45 56 8B C4 64 19
60 42 99 F8 C5 5B AF 1E 80 93 53 23 4A EF B5 1D
74 D3 36 E1 DB B8 95 55 70 76 17 9D 5C CB EA 1B
F2 E5 2B 1A 6B 36 C8 EE 0C 00 B7 73 F0 55 51 C6
12 AA 1F 0B B6 EA 4D A6 72 21 B0 8F 5E 94 F9 7E
E7 76 3B 45 F4 3D FA AC 28 F1 A4 8D CB 9D 6C E6
C0 D1 5A 18 EE E7 5A 92 F6 B4 3F 85 67 AA B0 E5
CB D2 EE 39 93 58 30 0E 31 BC 37 4F 9E 6C B7 0F
64 8E 11 F6 04 95 78 1D EF 0F 82 3F 24 0A 46 94
47 CE 6F 02 AC 61 46 6F 56 14 94 9C A1 49 C5 CB
2C 5E 5C DC 76 B7 2B 90 86 AD 3B 42 CF 55 77 E6
D9 FD 5E 18 D0 2B E2 FF 6F 4A A3 96 E2 C9 A4 44
15 A8 2E D5 A3 99 24 A3 EA 11 4B 3C DD A4 92 6B
8A AF F5 D0 EC EC A1 75 99 FC 6B DA 71 A0 38 9F
C0 2F 50 95 40 AD A9 65 53 4B 50 D8 42 D5 F7 8E
E5 47 D6 8E C6 27 BD 02 C1 4E C8 64 8D CA DC 5F
7B B6 A3 E6 15 F7 4B 6D 6F FD 2B 08 BB 4B 25 BA
53 2A FF F3 49 D0 3A 8A 8C D0 58 C5 8D F1 25 AF
9B 90 1D BB A0 D2 4D E2 D0 B9 84 10 04 2E 3C 47
6C 39 81 57 5E D1 BA 88 B9 D1 C0 C4 FF D2 2D 3B
1C 12 A7 A1 5C 42 7D 41 47 A3 4F A9 90 C9 EB 7C
3D EC 47 6D 88 FD 

//密文结束,用上面得到的密钥解密该密文,发现无法解密,此处为异常状况,所以QQ重新发送了0x0826包,我们将中间的包跳过,直接到第二次发送0x0826包处

03

//对包11进行解析,发现所得到的密钥与上面一样,直接跳过
[NO.11 2013-05-02 19:02:39 851 SEND 627字节]
02 32 41 08 26 13 CD 9C EF 9F 44 03 00 00 00 01
01 01 00 00 66 2A 00 00 00 00 28 EA 0D DA 85 44
F4 8A 84 57 CB 13 FD EB 4E 14 9C A5 E7 55 BD 17
7D 0F C0 99 51 89 1F F7 71 B3 F7 FC BB 2F E6 78
2E 7C F7 4B 23 1D 12 42 FE 07 6C 56 B0 6C A0 6A
A3 04 19 AE 6C 4E C9 6D 46 D6 CE 20 4C 3A CF FB
F4 F9 04 DE BF F4 0E EA 63 B6 BA 97 6D 95 B4 11
CA 5A 3F A0 7B 03 B5 B4 B4 B1 EF 03 24 0B 03 88
0E B0 E6 42 51 C8 ED A3 9E 53 46 B1 35 30 6D 4E
C1 BC 3A 53 23 64 E9 A2 27 A4 1B 09 9D 90 99 7A
44 DB 9E 3E 51 86 56 CE A7 6D 9B 6B 00 F1 DD 7F
A7 D8 63 5E D6 FC 49 EB FD 53 25 E3 CC EA F5 35
66 DD 3B EA FD FA E5 5F A7 31 9A 2D 57 BA 14 15
FD 79 E1 D8 0D 00 FC E8 52 08 06 27 B1 BE 3E 54
4F 1A EA 4C D5 C3 75 22 92 04 74 4F 76 88 CD 75
7E 32 BD 16 05 8C E0 98 06 52 3A 94 9D F2 FC 6B
C1 87 2C C3 4F 97 81 62 6C 7D 3A 9A D4 45 BF 44
F4 4B C3 D8 00 DD 8A D1 71 17 2D 59 B7 2E 8C 62
D6 B5 3B 98 5D F6 D9 85 26 81 86 4E F3 72 A1 74
EC 20 DA 40 9F 29 AF FB AA 9A 09 9A CB FF 81 9B
5A 8B CE FC 9B 57 AE BA 09 41 4A BB D6 5D EB 29
E4 BB E4 9B F2 98 B4 8E 1F 97 45 7A CC 4D D7 4F
DA 5B E1 EF D0 92 8B 6E B0 E7 35 44 62 D6 CA 5C
14 EC D1 B5 A2 B3 81 3B 19 1A D8 93 34 4D 64 F0
2A 88 4E 5C FC 4D 97 3A DD 6D 19 20 77 85 72 4E
70 D2 11 61 9D 23 79 6E BF 35 4F 19 0A FB B8 1E
DB DD 92 84 76 1C 15 E3 DE 86 CD 93 07 DC 91 42
9A 5E 19 40 4B AD 6C 03 58 BD 19 5F 26 18 76 7B
61 F8 F4 10 1F B8 FB C1 B1 A8 B9 03 11 02 9E 9B
E8 84 61 0F 82 3D 96 37 85 64 97 F7 08 44 01 AB
11 99 B7 8C 09 27 2C 7E 39 8D 64 16 29 C4 40 4F
01 9E CB 2C B1 1C F8 AC E6 2D C7 18 19 48 18 3C
66 2D E6 58 C3 75 58 57 AC 5C CD 77 7C 0C D7 06
A9 90 E2 C0 8C 24 98 6E 65 FD C0 C5 0F 71 76 1D
A5 E5 6C BC E1 C4 D9 2B 78 C5 6A A7 94 7F BB 9F
04 90 11 C0 AA 36 94 96 86 6B 0D AB FA A0 F6 01
21 94 89 4C 67 AF F0 72 B6 5B 9D D2 AA 8A 28 B4
C6 09 A7 42 DF C3 0A 7B 98 DE D6 5B FA E3 D9 4C
26 6F 6C A2 CE 83 CD 51 AA 97 A9 7A 92 C5 45 64
CB 93 03

[NO.12 2013-05-02 19:02:40 097 RECEIVE 719字节]
02 32 41 08 26 13 CD 9C EF 9F 44 00 00 00

//密文开始

2B 8C
F4 1A 61 A5 D2 B8 0F 79 32 50 55 DE 7B BF F6 20
C3 A6 2E 61 7F CF 56 23 2A F2 30 61 73 2B 80 17
D1 53 5C 9D A7 DF 5A E6 4C FE 44 10 B7 07 22 6C
3F CC 2B D7 49 56 16 00 83 C4 10 77 85 38 33 62
DC 9A 57 68 78 1F 87 17 24 A1 8F CD F9 78 AC 5A
2F 7F BD B3 AB 31 64 E8 93 C2 A4 A4 7C F5 E5 72
48 6B 10 7A B4 22 F2 AF A6 98 99 E8 D9 D9 E3 A6
5D 05 02 AE 73 99 C5 57 F9 52 AC 66 3E 43 1C D9
FA 13 D5 8D 12 35 3F CE 2C 68 37 39 F1 12 2C C1
D4 A8 E0 FF 53 EE 39 29 4A DD 64 E1 CF 25 A1 B4
5C C8 21 C0 02 90 1A 9D A5 9F 40 FF D6 B7 33 89
3D 53 9A EA 9D 7B 3B E8 67 8B D8 25 A4 71 C5 24
D4 00 D8 F8 75 60 42 54 0B A3 9E 9A 6B 23 44 B4
DC 1C 84 97 73 2F DB BB 1F 4C 49 8E B7 5C C3 9D
37 F8 3A DC D2 29 35 07 67 29 96 3D 02 14 86 2D
6C F7 75 E5 34 00 C9 35 6B E3 87 F6 08 18 66 9C
0E 41 1D A9 A8 44 32 4A 24 53 F3 35 28 BF D2 39
78 AB 82 D7 A2 A6 70 CF D6 F1 EA 93 88 27 9D 90
A7 30 D6 B1 6E F2 A6 06 51 46 5B 6B B2 C1 C8 44
B6 58 B9 5C 1E 5D 2C 44 49 D3 F0 6B 3B 3E F2 A4
AC 6F B6 28 3A 5C 59 12 1F A8 9A 3C F6 8C 09 EC
6C 4A C9 9B B3 42 82 40 29 3E 3E 40 7B 6E 98 36
5B 95 7A C8 4F B3 DB 66 CA FF 93 36 3F 4B 6D 7D
41 3A DF 0F A2 8C E4 9B 63 5A CF 7E 6C 06 C9 FA
FD AD 1C 86 69 D6 B8 87 5B 51 67 AC 15 1A AB 45
B6 3E 9C B0 C5 82 B4 22 4C DA 36 AF 63 00 58 1E
85 D2 C7 83 36 AD A4 D9 AC 69 67 00 F4 24 59 26
BF BA 63 D7 CE 58 00 FD 02 54 22 FF BA 64 78 08
97 B7 15 1D AB 0F D5 50 01 E7 E9 5A D9 D9 2E 2E
76 19 AF 14 89 92 8D 2B BD EF 57 AF 81 87 80 EE
2B CF 9D 94 18 36 46 EB 3E C1 A4 0A D7 D8 07 96
19 31 13 0E 22 18 BF 03 BF 61 D4 94 72 D7 BD EE
B6 18 B8 72 C4 3F FA 5E D2 B8 2C DD EE 9D 38 4C
4A E7 EC A9 66 00 91 EA 65 EC BF A5 33 CE 94 FD
77 6C 6D CF EC 29 5D 4D 43 24 92 9A D1 5B EB 39
B3 FB 7F AF 66 19 46 ED 10 35 8F 22 59 2D 76 5C
CE A0 5A 53 1A 8B 70 3B F4 C4 10 BA D9 1E 09 93
0A 0D 29 F2 97 B7 19 F1 DC 9C C2 20 F5 CC 98 9D
EF 00 84 84 2A 88 44 A4 38 52 E1 D5 1A F0 B5 C9
AD 90 62 CA F6 91 7A 97 8F 1B 65 7C CF B6 C9 C7
AC 1E A4 49 13 D9 52 F9 8F 8E 63 48 A9 85 03 DD
30 5B 5E 83 3F 5E 8C E4 A8 22 57 1E CC 73 74 EE
73 21 4F 33 4C 62 4E DA FF 3D 1F 81 4B 12 A7 8F
D7 97 E8 9D 71 CB 8A 9A FB 5B 97 83 97 2B 

//密文结束

//用98 C7 D1 C2 AF 0D 7F 95 BF F1 78 D4 90 32 23 F7解密该密文,得到[  ]中的明文

[
00 01 09 00 70 00 01 35 4D 46 37 6E 79 79 49 41
45 44 69 51 41 34 39 00 38 11 E8 FA 18 5A D6 54
99 DB 22 35 2C EF 36 74 DE 25 1D 55 2F 73 7E 6E
7A 20 E8 EB FE B6 4A FC CF 46 DE 29 05 41 23 67
F9 F9 5B 98 58 5A 3C 69 0E 7A 70 9C B6 87 9A 32
C1 00 20 C8 8F 1A E3 0E 7B C2 79 49 CF 6B 71 06
86 32 F7 59 D4 D8 C8 18 50 E3 A9 BB C8 45 38 0E
E4 5D 6A 00 00 01 03 00 14 00 01 00 10 EB 63 EF
A6 FD C3 12 53 BB 5E 68 AE 32 09 41 C1 00 33 00
18 4D A7 F4 02 9C DB 2F CE DA 98 D8 08 3F C0 39
65 98 6E 5F D7 EE AE 38 3A 01 07 01 D3 00 01 00
16 00 00 00 01 00 00 00 64 00 00 0D B5 00 01 51
80 00 00 00 3C 00 02

55 43 6D 73 2E 4E 78 3D 57 7B 53 58 5A 52 49 2C          //得到密钥,用来解密0x0828返回包的密文

00 88 00 04 51 82 47 D0 3B
AC EA AA 00 00 00 00 00 78 DE 52 B0 21 55 B0 76
A9 B6 24 B6 CD 71 59 FF FB E7 F8 6B 00 57 C8 BC
2A 35 EF 43 0D E7 64 3B E1 25 46 2D DE 27 8B 96
04 54 73 8C 3E 13 02 26 25 19 C4 04 B1 37 40 02
B3 B0 85 1C 73 4E F4 F1 3E 37 9F C7 0B 16 30 27
67 85 28 7A 3F 5C 5C 99 F9 A1 73 84 4A A2 FB 8D
C5 E8 1B F0 ED EF A8 66 5E F4 F4 20 D5 BB 8F 4B
DB 1D CC E9 69 B3 A0 D7 98 0C 4B 51 F1 E3 FD DD
EF 3A 46 76 27 75 3F 59 54 4D 40 79 49 3E 56 33
72 00 78 00 01 51 82 47 D0 00 70 D3 D3 80 2B FC
D1 07 31 CD A9 97 52 CD 00 77 AF B4 51 1D 93 E6
E2 EF 5F A2 BC 1D DD EC 1F 5A C0 7C 96 7C 88 C9
27 FE 92 35 05 A7 F6 81 33 8D B7 55 4C 16 DE 91
A3 ED 38 6A 83 45 4B BD 1A 90 4D 50 54 1D C5 B3
DF B9 29 58 E4 4A 18 A3 F0 8E CE B8 7E 14 09 56
28 BC DB 76 D8 37 52 97 7F C6 13 CF BA 82 F5 86
A8 88 18 89 0C 59 D6 18 77 C3 9C 00 83 01 70 70
7A 78 49 40 4A 47 64 2B 2B 4E 32 7B 37 4E 00 70
00 01 51 82 47 D0 00 68 52 A1 9F 38 4D DB 64 5B
CF 29 37 52 3B C7 DF 43 BC 9B 97 86 69 E6 40 C0
E7 A6 B9 92 53 CD 65 5D AF 83 7C AD 54 5A 3A 2D
55 B6 E4 DF 33 7A 18 31 67 30 62 BE 19 57 CD 37
9E B9 D5 7C 1E 88 36 A7 78 4E 90 86 E6 9E E4 5C
10 DE 96 9B 4A 46 85 4D 3C 1B 38 52 8F 77 C4 DA
75 39 32 AB 20 A6 9C 6D 54 91 9E 83 65 E5 68 84
40 48 4D 49 3A 69 66 5D 23 49 39 21 21 62 42 2B
01 08 00 17 00 01 00 13 00 0B 02 07 02 68 6B 01
00 80 00 00 10 00 04 00 00 00 00 01 15 00 10 E8
D4 A8 E3 90 9F F2 48 86 6C E9 E9 B3 56 4A D1
]

03

[NO.14 2013-05-02 19:02:40 612 RECEIVE 399字节]
02 32 41 08 28 5E DB 9C EF 9F 44 00 00 00

//密文开始

FB D6
3F BC DF B5 C5 83 EA 7C 5C BB 23 69 1A 51 F7 44
03 21 68 D6 74 54 CB 8D 06 32 D8 56 42 D7 12 03
C8 75 F4 4F 6A A2 EF 50 25 10 A5 AC E3 29 31 DA
0E 09 4E 43 C6 E1 E1 2B 8D EF 52 13 9D 2F 5D 3C
6C BC F1 F6 04 26 93 1B 9A 5F 72 BB 38 E5 1F 67
45 D2 4B 72 66 5B 28 18 60 A0 BA 92 92 A2 14 AF
20 9D FC F9 E3 F2 28 59 63 78 04 93 1C ED 9E 3A
28 24 32 9C B0 F8 86 A6 46 69 32 A9 86 B2 25 62
CD 28 19 50 AD DC F3 C7 15 24 0A 95 DB C4 20 9E
53 3A 2B FA 69 BB 50 97 9A 28 B1 45 67 49 B9 9D
2D DB D9 84 77 27 94 32 42 A7 74 37 CF 76 3A 2C
3A 9B 45 CA 95 8A 66 C5 CD 4E 97 D2 EE AE 41 A8
38 7C 4C DE 40 81 A9 3C 09 16 2F 8E 5E 4C 5F BE
46 A1 95 A7 B2 1C 35 E6 8E 89 0E 43 38 FF 99 80
CE EE AE DB F7 52 57 80 DE A3 20 90 07 76 FB 47
3C 69 08 A7 CD E4 34 00 C3 49 73 BF 7F 6B AE DC
46 6C 26 54 67 80 D2 97 72 19 07 04 39 BB 3E 94
BB A5 FF E1 E9 E4 B6 B4 2A 11 C1 4F F9 A2 39 46
0E B8 24 0B 16 09 01 19 B8 BB 88 16 FC 0D 90 45
FE 96 B7 B0 8E E1 29 F5 53 3A 5A BC D9 CC F5 C2
04 4D CB E9 B4 40 FF 8C 27 FC 10 A2 B5 BF 88 83
55 F2 CD A9 19 21 7D 45 4F BD 62 DA E5 91 8F FA
05 A9 4C FF 46 78 07 B4 14 17 9B 41 D3 6D 2B DC
96 20 80 86 EF F2 4F B3 E0 5D 66 0B E1 FA 

//密文结束

//用55 43 6D 73 2E 4E 78 3D 57 7B 53 58 5A 52 49 2C解密该密文,得到[  ]中的明文

[
00 00 0D 00 06 00 01 00 00 00 00 00 14 00 04 00
01 00 3C 01 0C 00 6E 00 01

71 33 78 75 67 72 59 46 6A 34 69 46 35 50 75 54             //会话密钥,以后用来解密,一直持续到QQ下线

9C EF 9F 44                   //QQ号

3B AC EA
AA 0F A0 51 82 47 CF 00 00 00 B4 03 77 93 2D 4C
B7 3C 32 0F 00 00 00 07 00 30 0E 2B 0F 94 F5 9E
D6 CD B2 84 A3 6E 65 10 4D 6A C1 E9 78 2D 1D C3
86 1F 4F C6 54 D1 82 CD 80 65 47 91 E5 9D 08 46
AA 1B 5B 7E 44 D3 D5 BE 17 D9 08 02 04 08 08 08
08 08 04 00 00 01 0E 00 56 00 01 00 52 00 80 40
00 00 00 00 00 00 18 5B ED 2E 33 43 5E DD B1 32
61 1B 88 3D 3F 44 83 96 19 7A 6D EC 77 55 C4 00
20 DC 75 4E FD 8E A3 5A 57 08 27 81 6D BD E3 B3
3A 24 6C 13 54 B5 00 D4 18 23 DB 6F FC 10 F7 F8
28 00 0C 00 00 00 01 00 00 00 00 00 00 00 00 00
2F 00 2A 00 01 8F FE 4F BB B2 63 C7 69 C3 F1 3C
DC A1 E8 77 A3 CD 97 FA 00 26 04 40 EF 11 7B 31
02 4E 10 13 80 00 00 00 00 00 00 00 00 01 0D 00
2C 00 01 00 28 C4 2D FF E1 0E 7F 1E 64 A4 F5 86
FB E2 26 FC F5 7A 60 9C FD 36 7E 51 25 30 6E F5
D0 ED BA CA 5A 08 03 1E 24 42 7D 6C A3 01 05 00
32 00 01 02 02 00 15 02 00 01 03 10 FC 1B 3F 17
FA 6F 75 D4 E5 A7 4D AE CE AB 06 0D 00 15 02 00
02 03 10 35 A1 29 2F 52 BE 75 25 39 9D 09 85 56
72 B8 9D
]

03

这样,就得到了会话密钥。

下面,我们便继续来看发送消息。(接收消息大致解法一样,此处不予讨论)


QQ发消息:
命令字:00CD
数据来源:客户端->服务器
明文格式:发送者(4B) 接收者(4B) 0x64字节 数据大小(2B) 实体数据
备注:一次发送数据过大时,分多个包,结束标志疑似0x64字节中
      倒数第三字节(00表示结束)

QQ收消息:
命令字:00CE
数据来源:服务器->客户端
明文格式:发送者(4B) 接收者(4B) 0x84字节 数据大小(2B) 实体数据
备注:一次发送数据过大时,分多个包,结束标志疑似0x84字节中

      倒数第三字节(00表示结束)


我们来分析具体数据:

[NO.226 2013-05-02 19:02:58 502 SEND 151字节]
02 32 41 00 CD 7D BA 9C EF 9F 44 02 00 00 00 01
01 01 00 00 66 2A

//密文开始

E2 D0 B5 DD AC 86 56 87 DA F7
D2 4A 7A AE D7 8B E5 26 98 60 3D C5 8B 89 20 09
C0 7D 97 0A AA 98 05 31 59 E9 CF 47 07 DC C7 2B
69 AB 26 6F 95 B8 39 E9 78 00 F3 79 CB 53 00 2A
6D 26 E1 77 0B 39 EC AA 9A 88 80 D7 6C 6B 75 6C
79 C5 CA CB EE A7 81 ED 9D 9A F4 50 B6 A1 51 CC
A5 95 CD 2B 15 D2 37 0F 94 31 5B 67 4B C3 F1 00
01 7F 66 45 8B 83 35 BE E8 E5 96 6E 7B 12 A4 16
A5 E8 B1 8D 83 84

//密文结束
[
9C EF 9F 44          //发送者QQ

09 3B 7D AF          //接收者QQ

//0x64字节数据开始

00 00 00 08 00 01 00 04
00 00 00 00 32 41 9C EF 9F 44 09 3B 7D AF DB 88
7B 56 C7 3D F1 82 7B 41 99 BD 6D FE F5 2C 00 0B
7F 69 51 82 47 E1 02 07 00 00 00 00 01 00 00 00
01 4D 53 47 00 00 00 00 00 51 82 47 E1 15 8B BB
BA 00 00 00 00 09 00 86 00 00 06 54 61 68 6F 6D
61 00 00 01 00 09 01 

//0x64字节数据结束

00 06                   //实际发送数据大小

E6 B5 8B E8 AF 95   //实际发送数据,UTF-8编码格式,内容为“测试”
]

03

你可能感兴趣的:(qq,解密)