libqq-pidgin的0xdd部分解密错误,存在安全隐患(警告)

请参考这个地址的协议
http://code.google.com/p/libqq-pidgin/issues/detail?id=108
http://code.google.com/p/libqq-pidgin/wiki/QQ2010Protocol
对于Authenticate 0xDD Client发送的这个数据包,文中给出的密钥和加密了的数据是:

17 B1 11 99 74 3A D6 6B DD A4 E9 80 F6 95 A6 D4 //TEA Key
A7 F7 A5 43 52 62 BC 6B DE BC 73 5F E6 A3 AD 9E
ED 53 12 D2 A1 20 66 5D 77 B3 CF E9 C0 81 E6 15
A2 93 DA 32 C6 00 1E 8D 0F 51 D8 B0 84 94 06 78
45 CD 5F 8F 25 42 AE B6 15 EA AF 55 0C C7 34 8D
BF C2 06 90 A7 B8 1E E8 23 B8 D3 2B D2 26 F6 18
49 03 72 E0 E1 E0 F8 E1 D9 B1 D2 1D F8 4E 85 F1
80 B9 98 F9 0E BE 09 48 65 D2 E8 34 9B 8C CE 58
09 9B 00 52 D6 64 1E B8 3B 9A 1D A9 F5 6D 65 65
A2 D3 21 A8 17 EF 38 0D 44 29 83 BB 58 1F 54 62
F4 6C 7B 5F FC 74 E1 8D 54 7F C5 57 60 D3 E3 AA
08 C7 D6 AA 00 8C F7 36 6A 80 7C D1 D7 6B C8 67
59 D9 C8 E6 04 0E 0C 5A 53 9C F8 30 01 0A 51 C2
BC E0 F5 B6 42 CF 2D 89 AF DC 13 2C 29 53 45 2C
6F 68 FB 2A 80 65 3F 4B F6 20 29 94 B1 DD 87 10
9C 6D C4 92 81 C1 76 19 31 8B F2 50 E8 18 60 D0
A5 57 B1 C9 82 33 C6 6C A1 2A 6F 0E D3 06 76 7E
0D D6 26 B7 EB 8E 00 41 19 62 78 A4 06 CF 75 BD
D0 84 F6 16 1C 6E 36 9D F4 21 11 51 8B CE B5 43
6D D6 02 62 50 27 8C B5 E8 19 19 90 96 D7 5E E5
12 F8 1F 23 3F 6D 14 95 96 36 8B 6F 10 F9 4F 6D
5F 2E 8E F4 CA A5 70 D6 FE 40 E3 C0 DE 81 15 83
61 B4 3F 1E 73 41 8D A7 06 7C 35 4F B6 60 68 FC
7B F5 BD AA 18 F7 56 62 1D 0A B5 C1 30 5C 5C 63
D5 FD 92 6A F3 9A 33 09 E7 40 54 23 49 DE FD 3E
0F D1 62 53 55 04 13 BA C0 C1 D8 63 0F A9 B0 F1
BB 7E 9A CD 06 A7 D7 C0 74 CC 8F CD 33 B9 3B BC
61 29 47 B0 2B DF 83 4F BC 21 87 16 63 8E 17 EC
C8 7D 37 76 EF 94 9D EC 63 E7 FF 85 1D 11 D2 61
26 CE 29 CA C1 43 36 EC F0 12 9C E6 C1 A8 6B 37
9A D4 35 3F F3 06 0B C3 40 6A 7C 87 4F E3 E7 74
00 C4 75 DB 61 FA 9D CD EB F8 BD B3 A6 B2 2C 03
56 8B F4 2F 3E 2D 70 24 71 0C 70 97 6A AB AB C1
1B 80 22 97 DE CB 6A D1 F6 F7 1D B4 F7 46 3E F8
83 30 11 6B B1 74 81 91 18 48 B7 82 67 39 52 7F
1D 70 92 AC AC AE E8 53 66 62 62 54 47 20 57 B5
AE 94 FA 50 BF 31 8A B1 1B 34 68 B4 A6 2D 6E 06
41 B9 6E FF F9 6D 12 0D 37 C5 39 3A 4D 13 33 99
E8 73 81 06 62 7A E6 20 29 6D 80 3E 46 08 05 80
C5 39 76 88 FA E2 6E 16 //TEA Value
使用从这个源svn回来的tea算法解密后为
00 DE 00 01 00 00 04 09 01 E0 00 00 03 30 00 00
00 01 00 00 0B C5 00 38 C3 B1 A9 05 76 D6 16 36
5E 7A 9D D9 56 4E AF 53 C3 DA 40 94 9A 50 C4 B0
14 52 3D 47 DC 5B 77 6F DA CC B3 D1 50 3B A4 9B
19 32 D8 29 7A 59 1A 05 AC 6E A0 90 DC 72 BF 3D
00 78 CF CE EF 5A 3F C5 C2 CF 2F 60 E7 22 9C 65
50 FB 34 8B B9 1C C4 AD 16 39 F2 53 17 C3 34 B6
EA 4F 06 85 72 06 F5 9A 3C 96 A3 65 45 CD 7E F7
88 3F 6E 42 3A 62 0C B1 4C 27 5A 27 B3 83 70 B0
1C F0 F7 FE FC 5B CD 6F 21 AE 1E B3 0A DF A6 B1
01 66 3A CA 88 53 75 2F F5 53 5D 35 06 E8 AA DC
CE 27 A0 79 FD 85 3F 02 69 FD 32 3C 1D CF 42 1A
03 4F 0D 39 5F 92 61 B9 5F 1E 00 14 FB D4 9A 8C
63 7A D6 0C A5 B3 48 43 EB D2 D3 F9 CD 8F AA 6B
01 77 2E 01 BC A7 5E 24 00 10 14 82 79 84 1A 79
D0 D4 FD 11 26 38 39 EC F6 39 02 AD 98 B7 D2 00
10 7E D6 F3 98 B1 03 E9 C8 96 32 72 4F 7E 2E 7B
D0 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 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
按照文中的格式整理后发现,所有的字段都可以对得上,唯独一个对不上:
C5 F6 F7 EC 10 CB 98 E2 E2 75 77 F3 E7 06 28 F3 //Key0_Auth, As the TEA Key to Decrypt Response TEA Value
这个字段的值应该是:(在解密后的数据中偏移量为234)
14 82 79 84 1A 79 D0 D4 FD 11 26 38 39 EC F6 39
正如文中所说的那样,这个key0_auth是用来解密服务器返回的数据包的,如果在Authentication TEA Encryted Data(两次密码的md5加密的部分)以外出现,将使得以后的通讯完全暴露在偷听者的监视之下,任何加密都没有意义了。
因此,我希望原文作者可以出来解释一下这个问题,是笔误吗?另外使用QQAnalyzer对于0xdd发送包的分析也存在同样的问题。
PS:不排除这个值的随机性,事实上我们通过多分析几次正常的QQ登录会发现,这个值是变动的,并不是固定的。故而即便使用一个固定的值也同样能正常登录。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注