它主要支持與其它QQ客戶端進行文字聊天。TCPF是創建在UDP協議之上。UDP數據包中的第一個字符02爲這個協議族的標識。TCPF的服務器使用8000號端口,騰訊的QQ客戶端軟件通常從4000號端口開始嘗試使用,但實際上,對客戶端使用的端口號並無限制。目前的研究集中在TCPF上。算法
對於TCPF包咱們又把它分爲5類:服務器
1)、登陸請求包(LIP,LogIn Packet),它是由客戶端向服務器發出登陸請求的數據包。工具
2)、登陸應答包(LRP,Login Reply Packet),它是由服務器響應客戶端登陸請求的數據包。測試
3)、註銷請求包(LOP,LogOut Packet),它是由客戶端向服務器發出註銷登陸請求的數據包,服務器對這個包不做應答。字體
4)、客戶端其它包(CSP,Client Sent Packet),它是由客戶端向服務器發送的其它包。編碼
5)、服務器其它包(SSP,Server Sent Packet),它是由服務器向客戶端發送的其它包。加密
0)、全部TCPF包的前7個字節是包頭,包頭能夠識別TCPF包的內容。包頭的格式爲:spa
1)、第0字節:TCPF包標識:0x02。.net
2)、第1-2字節:發送者標識。若是是0x01 0x00,代表是由服務器發送。客戶端的標識與所使用的使用的QQ版本有關,如:版本QQ2013(8550)的標識爲0x34 0x33。具體的協議的格式與這個字段所標識的客戶端版本有關。目前咱們以這個最新的3433版原本討論。3d
3)、第3-4字節:命令編號。具體的命令編號含義在《QQ協議概述》(Protocol Overview.rtf)中有描述。以QQ2013爲例,若是這個字段是0x00 0x59,那麼這是一個註銷請求包。若是這個字段是0x08 0x25,而第12位爲 0x00,那麼這是一個登陸應答包。若是這個字段是0x08 0x25,而第12位爲 0x03,那麼這是一個登陸請求包。其它的命令代碼代表是其它包,咱們經過發送者標識來區分它是CSP仍是SSP。
4)、第5-6字節:命令序列號。客戶端和服務器都有各自的當前發送序列號。每初始發出一個指令的時候,使用當前的序列號,而後把當前序列號加一,若是超過0xFFFF,就繞回。若是是響應對方發出的命令,則使用這個命令的序列號。例如,客戶端當前的序列號爲0x1110,它向服務發送一個0x0016命令,它使用0x1110這個序列號,服務器收到之後,返回一個序列號爲0x1110的0x0016命令響應。下一次,客戶端又發送一個0x0026命令,這一次它使用加一了的序列號0x1111,服務器也響應0x1111序列號的一個0x0026命令響應。若是這是服務器要向客戶端發送0x0017命令,它使用它本身的當前序列號,好比說0x2220,客戶端收到之後,也響應一個序列號爲0x2220的0x0017命令應答。咱們能夠經過序列號來判斷髮出的指令是否已經獲得了應答,若是沒有,能夠重發。服務器對收到的命令的序列號順序沒有要求。服務器也不會必定按照發出的順序給予應答。
TCPF包尾:全部的TCPF包都以0x03做爲包尾。
QQ2013登陸過程獲得會話密鑰須要分析命令字爲0x0826和0x0828的報文,解密過程使用16輪TEA算法,過程以下:
一、獲得客戶端->服務器0x0826報文中的密鑰A;
二、用密鑰A解密1中報文的密文部分(緊跟着密鑰A,一直到結束標誌0x03前);
三、用QQ號碼與QQ密碼一塊兒產生密鑰B(MD5(MD5(QQ密碼)+QQ號碼));
四、用密鑰B解密2中獲得的明文中的120字節,所獲得的明文後16字節爲密鑰C;
五、用密鑰C解密服務器->客戶端0x0826報文中的密文數據;
六、在步驟5所得明文中取得密鑰D;
七、用密鑰D解密服務器->客戶端0x0828報文中的密文,所得明文第26字節到第41字節
即爲會話密鑰。
圖片取自王超的博客http://blog.csdn.net/nengx/article/category/1320447
3、具體過程
[內爲解密後的內容]
[2013/10/24 14:51:59:824]
02 34 33 08 25 68 23 0E 82 35 B6 03 00 00 00 01
01 01 00 00 66 84 00 00 00 00 DB D4 FC 00 6E E4
B1 6E BE 6A FD 2B E1 34 49 8E 3C D2 FD 78 32 3C
0B FF C0 67 27 49 17 84 FC BE F4 24 8B 03 B0 F4
CA 55 E1 70 67 E4 37 2B A0 60 81 12 20 88 56 08
D7 91 95 E6 74 8C 1F A2 AF 02 98 C0 B4 C1 CF 35
C9 C3 56 97 A3 EF 09 15 B3 E4 81 8D 16 44 26 57
8A 84 17 B9 85 62 F1 8C 72 EF BE 85 BB CA 72 3A
0C DF D9 94 9B 84 8D 30 CF B7 FC 6E 6C 19 21 E9
F8 31 03
02 // 包頭
34 33//版本號
08 25//登陸請求命令
68 23//序列號
0E 82 35 B6//QQ號
03 00 00 00 01 01 01 00 00 66 84//固定
00 00 00 00//固定
DB D4 FC 00 6E E4 B1 6E BE 6A FD 2B E1 34 49 8E //臨時密鑰A
3C D2 FD 78 32 3C 0B FF C0 67 27 49 17 84 FC BE F4 24 8B 03 B0 F4 CA 55 E1 70 67 E4 37 2B A0 60 81 12 20 88 56 08 D7 91 95 E6 74 8C 1F A2 AF 02 98 C0 B4 C1 CF 35 C9 C3 56 97 A3 EF 09 15 B3 E4 81 8D 16 44 26 57 8A 84 17 B9 85 62 F1 8C 72 EF BE 85 BB CA 72 3A 0C DF D9 94 9B 84 8D 30 CF B7 FC 6E 6C 19 21 E9 F8 31//登陸請求包的數據
[
00 18 00 16 00 01 00 00 04 33 00 00 00 01 00 00 14 83 0E 82 35 B6 00 00 00 00 03 09 00 08 00 01 78 C4 D4 65 00 02 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14 00 1D 01 02 00 19 02 AD 2A 08 94 94 7D 74 68 D4 F1 14 CA 94 40 56 03 03 3A 11 96 B6 47 2E C5
00 18 00 16 00 01 //token1 固定的6的長度 這些後續的發包裏須要用到。
00 00 04 33 00 00 00 01 00 00 14 83 //token2 固定的 12的長度
0E 82 35 B6 //QQ號
00 00 00 00 03 09 00 08 00 01//固定的數據
78 C4 D4 65 00 02 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14//未知
00 1D //後面29個隨機字段,隨機填充一些字段增長複雜性。
01 02 00 19 02 AD 2A 08 94 94 7D 74 68 D4 F1 14 CA 94 40 56 03 03 3A 11 96 B6 47 2E C5
]
03//結尾
[2013/10/24 14:51:59:866]接受迴應
02 34 33 08 25 68 23 0E 82 35 B6 00 00 00 C3 B1
99 E9 0D 9E D3 1E EC E2 C8 0A 5B 1B E7 83 8F 16
9A 18 60 9F E7 19 42 AB 35 B6 CF 34 95 F6 A4 24
13 DB 6B 78 D0 39 4C 86 09 50 59 0D 9E 4C 4D 4D
51 29 4B 1A 1E 83 26 91 84 3B B3 DB 56 BB 57 58
4C F7 F5 A2 2A 6C C4 19 3E A7 B6 0C F4 80 DC 74
BA A4 F9 2C CC 1B EE F4 18 6E DD CA 9B 5E 03
02 // 包頭
34 33//版本號
08 25//登陸請求命令
68 23//序列號
0E 82 35 B6//QQ號
00 00 00//固定
C3 B1
99 E9 0D 9E D3 1E EC E2 C8 0A 5B 1B E7 83 8F 16
9A 18 60 9F E7 19 42 AB 35 B6 CF 34 95 F6 A4 24
13 DB 6B 78 D0 39 4C 86 09 50 59 0D 9E 4C 4D 4D
51 29 4B 1A 1E 83 26 91 84 3B B3 DB 56 BB 57 58
4C F7 F5 A2 2A 6C C4 19 3E A7 B6 0C F4 80 DC 74
BA A4 F9 2C CC 1B EE F4 18 6E DD CA 9B 5E//加密字段
[//用第一個數據包中的KEY解密以後
00 01 12 00 38 76 B3 3D 6D 39 3E A8 04 AA BD 57 F1 C1 3B 89 D5 CB 8D 75 76 D0 08 62 C1 23 3C 14 01 E5 C7 C3 E0 05 83 88 4D FF 39 93 55 15 5E 9F 2B FD 6C 57 39 EE B7 9A 6B 0A 36 0E 43 00 17 00 0E 00 01 52 68 C3 94 D3 67 23 07 94 42 00 00
]
00//登陸成功
01 12
00 38
76 B3 3D 6D 39 3E A8 04 AA BD 57 F1 C1 3B 89 D5 CB 8D 75 76 D0 08 62 C1 23 3C 14 01 E5 C7 C3 E0 05 83 88 4D FF 39 93 55 15 5E 9F 2B FD 6C 57 39 EE B7 9A 6B 0A 36 0E 43
00 17 00 0E 00 01//固定
52 68 C3 94//登陸時間(2013-10-24 14:52:04)
D3 67 23 07//登陸IP(211.103.35.7)
94 42 00 00
[2013/10/24 14:51:59:894]
02 34 33 08 26 0C B2 0E 82 35 B6 03 00 00 00 01
01 01 00 00 66 84 00 00 00 00
EC 6C 02 EF 46 5C 7E DD A1 1E F6 73 1E 27 A0 66//密鑰A
//密文開始
D5 A0 07 00 E4 86
63 64 2D 3A 5A 02 EF 59 82 3F C7 E5 6D AD 94 B4
CE 54 AF 0D A1 56 06 CD 8E 2F B5 F5 64 2C 2A 98
A9 5D FB B8 30 B7 7C AF FE F7 68 11 55 E0 44 F1
1F 09 22 76 17 28 8C 3C CC 54 50 B3 72 22 13 75
47 7E 88 95 BD 34 DE C0 3C 15 EA 1C E6 65 64 F1
EF CE 55 55 CB BE E9 02 30 BC 07 D0 77 03 13 10
36 53 6A 43 1F A2 D1 D9 32 41 68 22 59 F2 9A 52
71 E1 12 46 70 62 2B 6E 7D AD 53 A0 87 F6 44 66
60 86 F0 F5 06 E2 CC 13 00 96 97 92 FD 6A C7 07
BE 45 03 11 EE 8B 9E E0 58 F4 31 6E 4E 64 60 F9
08 2C 70 8F E8 87 FC 32 03 0B F9 8B DF AC 82 D2
91 C4 34 3C E3 68 D5 A4 1D 9A 14 5C 46 79 8B E6
35 3B 43 D1 19 CD 4F B4 1C 0D C6 05 DC 38 A0 CC
EB 7A BA D5 58 AC A8 2B 75 1E DF F4 87 D4 14 75
13 30 3A 5F 12 D9 25 AB B4 FA DB 6C 67 EE 33 93
CB FC 25 26 47 56 5F 63 C7 3D 7B 68 E6 6F 88 9F
7F 87 AE 70 00 F1 3B 5E C8 42 05 E1 90 E6 DC 15
35 F4 CC 07 D5 25 36 F6 02 4B 14 ED A3 C6 62 AC
0A E4 4D 69 13 0E 01 5A C7 94 6A 70 A8 3B 3D 79
4E DC 68 5B 54 55 80 26 E2 FE 65 19 CA 01 04 F8
6C 7C 41 C5 F1 71 2F 19 F7 65 D0 57 18 0B 6D 18
7F 83 E5 87 89 BB F6 6C 35 81 36 CD A3 D2 58 6B
94 8C 0F 09 53 47 5E 25 0B E4 DC 58 1A 23 A0 A0
AE C0 62 D9 13 79 60 FD A8 6F 33 8E 76 27 2C A3
33 1F 54 0E 38 A9 E4 8E EC 94 4D D2 8E 85 BE BE
87 D0 B1 12 1D E0 E1 68 82 C3 C7 8E CA 42 70 C0
BD B5 FA 10 04 47 1E 20 ED 3F AA 6D 47 22 F5 AD
E8 86 D1 74 FC 4D 6C CC C7 68 4D 24 8E F5 DB B9
A3 7C C6 E7 6C B6 F8 12 2C F5 31 65 43 AA 85 13
4A 87 84 99 62 42 E6 B2 EC 47 12 3C 8E FB FD 11
D1 DB 8C 96 C0 B2 93 95 36 D5 AA 7B 73 DD 7E D9
B8 79 02 04 0D 36 D3 7E 8A B3 65 3F D1 1D 5E 4B
91 28 74 24 1D F9 C8 FA 57 24 FC CE BF 55 1F 49
03 20 84 5F 75 C9 A0 A2 95 88 AB 6C 34 90 1E 58
17 0D C7 CF EC 84 29 9B DD 98
//密文結束
03
解密後
[01 12 00 38 76 B3 3D 6D 39 3E A8 04 AA BD 57 F1 C1 3B 89 D5 CB 8D 75 76 D0 08 62 C1 23 3C 14 01 E5 C7 C3 E0 05 83 88 4D FF 39 93 55 15 5E 9F 2B FD 6C 57 39 EE B7 9A 6B 0A 36 0E 43 00 05 00 06 00 02 0E 82 35 B6 00 06 00 78 51 63 DD 6C 16 E5 F6 2F 5F 9B 5B 60 7A B8 BA 54 BA 75 0B 48 C4 D7 F8 F3 2B D9 E2 9A 17 DF 9E C5 A5 48 56 A8 05 46 F1 C9 4A B6 4F 9F 0E BE 86 EF C5 28 D3 C1 EA CA 17 5D 14 DC 85 B2 71 FB 0B 32 4A E4 BE 82 02 85 69 DE DD 8D EA 29 37 4F BC 09 B0 DA 5E 7B FA 17 B5 F3 5A 71 5A 52 50 43 81 4F 8C 8E A0 EC 83 A6 65 83 5F EC 0C C7 B1 86 99 EB 48 5F C2 4C 51 D7 A8 84 00 1A 00 40 C5 48 E7 1F A0 CF C5 6C 88 93 DA EB 3E 8E 35 37 E0 00 34 0D 53 5C 70 BD E4 BD 55 9C 9F A6 D4 89 6F 68 89 E8 AE 89 58 16 FD 0E 34 17 C9 5F 51 FC 07 E0 72 0F D3 61 91 04 08 A7 F8 91 BF 39 23 B0 00 18 00 16 00 01 00 00 04 33 00 00 00 01 00 00 14 83 0E 82 35 B6 00 00 00 00 01 03 00 14 00 01 00 10 31 47 8B 75 03 BA 49 ED 84 DA A3 FF B7 DF CA 16 00 32 00 63 3E 00 63 02 03 05 01 00 00 04 00 5C 13 00 00 00 00 AD 37 5C 14 E1 69 BE EE 44 13 2F 3B 00 F2 F5 8E 03 01 00 00 66 84 14 83 00 00 00 00 00 00 00 00 07 DD 00 0A 00 10 00 01 00 02 00 03 00 00 00 00 00 EB 3D F4 52 A3 9C D0 01 F7 E9 38 EE 88 8F 9C 8A 17 C6 B9 B9 ED 11 F3 48 79 09 50 12 33 C9 5D 83 68 01 14 00 1D 01 02 00 19 02 AD 2A 08 94 94 7D 74 68 D4 F1 14 CA 94 40 56 03 03 3A 11 96 B6 47 2E C5 01 02 00 62 00 01 6E DD 50 A8 BA A2 40 53 83 2C 39 E7 8D F7 51 6C 00 38 D1 F1 54 D5 89 39 71 DF 87 27 32 3C CA 8C B2 F1 53 3B 0A FD 35 C8 0C 3B EC 8F 34 89 EF F8 DB 2A 89 FA AE 69 E4 DE 5F 7F 67 46 9A B7 41 6D 3B D0 46 B0 BE A3 FB 4E F6 06 00 14 39 C6 F3 6C 7D AE EE 0B 4D 0A 5A 84 AF 4E 68 2D 3C 56 96 2D
]
對明文分析
01 12
00 38//0x38=56,接下來的56字節
76 B3 3D 6D 39 3E A8 04 AA BD 57 F1 C1 3B 89 D5 CB 8D 75 76 D0 08 62 C1 23 3C 14 01 E5 C7 C3 E0 05 83 88 4D FF 39 93 55 15 5E 9F 2B FD 6C 57 39 EE B7 9A 6B 0A 36 0E 43
00 05 00 06 00 02//
0E 82 35 B6//QQ
00 06
00 78//7*16+8=120字節數據,須要用QQ密碼兩次md5所得密鑰解密(MD5(QQ密碼)+0x00000000+QQ號碼)(0E 70 B3 D2 A0 5F BA D8 BD 82 FF F7 B8 4B A1 8D)
51 63 DD 6C 16 E5 F6 2F 5F 9B 5B 60 7A B8 BA 54 BA 75 0B 48 C4 D7 F8 F3 2B D9 E2 9A 17 DF 9E C5 A5 48 56 A8 05 46 F1 C9 4A B6 4F 9F 0E BE 86 EF C5 28 D3 C1 EA CA 17 5D 14 DC 85 B2 71 FB 0B 32 4A E4 BE 82 02 85 69 DE DD 8D EA 29 37 4F BC 09 B0 DA 5E 7B FA 17 B5 F3 5A 71 5A 52 50 43 81 4F 8C 8E A0 EC 83 A6 65 83 5F EC 0C C7 B1 86 99 EB 48 5F C2 4C 51 D7 A8 84
對上述120字節的明文解密後
[
78 F7 E5 E6 00 01 0E 82 35 B6 00 00 04 33 00 00 00 01 00 00 14 77 00 00 01 4F 43 4E 94 E3 45 0C 60 41 E8 BB EB AC 93 EF 8B 52 61 DD 09 01 52 4E B7 78 00 00 00 02 00 00 00 00 72 DB 0B AE 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
29 71 76 3A 72 61 79 68 25 5F 46 75 58 23 28 63//明文最後16字節,做爲0x0826返回包中密文的密鑰C
]
00 1A 00 40 C5 48 E7 1F A0 CF C5 6C 88 93 DA EB 3E 8E 35 37 E0 00 34 0D 53 5C 70 BD E4 BD 55 9C 9F A6 D4 89 6F 68 89 E8 AE 89 58 16 FD 0E 34 17 C9 5F 51 FC 07 E0 72 0F D3 61 91 04 08 A7 F8 91 BF 39 23 B0 00 18 00 16 00 01 00 00 04 33 00 00 00 01 00 00 14 83 0E 82 35 B6 00 00 00 00 01 03 00 14 00 01 00 10 31 47 8B 75 03 BA 49 ED 84 DA A3 FF B7 DF CA 16 00 32 00 63 3E 00 63 02 03 05 01 00 00 04 00 5C 13 00 00 00 00 AD 37 5C 14 E1 69 BE EE 44 13 2F 3B 00 F2 F5 8E 03 01 00 00 66 84 14 83 00 00 00 00 00 00 00 00 07 DD 00 0A 00 10 00 01 00 02 00 03 00 00 00 00 00 EB 3D F4 52 A3 9C D0 01 F7 E9 38 EE 88 8F 9C 8A 17 C6 B9 B9 ED 11 F3 48 79 09 50 12 33 C9 5D 83 68 01 14 00 1D 01 02 00 19 02 AD 2A 08 94 94 7D 74 68 D4 F1 14 CA 94 40 56 03 03 3A 11 96 B6 47 2E C5 01 02 00 62 00 01 6E DD 50 A8 BA A2 40 53 83 2C 39 E7 8D F7 51 6C 00 38 D1 F1 54 D5 89 39 71 DF 87 27 32 3C CA 8C B2 F1 53 3B 0A FD 35 C8 0C 3B EC 8F 34 89 EF F8 DB 2A 89 FA AE 69 E4 DE 5F 7F 67 46 9A B7 41 6D 3B D0 46 B0 BE A3 FB 4E F6 06 00 14 39 C6 F3 6C 7D AE EE 0B 4D 0A 5A 84 AF 4E 68 2D 3C 56 96 2D
[2013/10/24 14:51:59:941]
02 34 33 08 26 0C B2 0E 82 35 B6 00 00 00 23 CE
59 67 6F 64 07 05 B1 8B 3D 78 86 A9 24 91 B4 FE
79 3B 02 5D 28 75 83 AD 28 87 62 58 E7 21 EB 71
36 ED 65 32 3A D5 AE 8A 9F A3 A6 12 6F C1 06 6E
7A 5A 49 F5 3D 38 49 2B 18 00 AB 0A 2E 31 A0 8A
9F C3 BB 21 6B 53 8B 64 AE 40 1E 19 88 9F BE 74
AF 9F 18 F7 68 1D 2E 81 A4 29 45 F9 C4 71 4A 20
2B 45 58 72 57 CF E0 58 55 15 92 42 AC B4 33 C0
20 65 4F 7A F7 85 F4 BE 4D A3 A5 04 F7 21 CA 7C
A7 A2 92 CD 9D 00 6C 72 DA 03 A4 B0 59 9B 7C 5E
02 9B 1F FD CC 1E 18 6A 7C EE 87 EC D8 7C B2 E9
B3 45 99 A0 4C B7 53 1D 5E AD A7 D4 8D E9 E8 5A
F3 D0 91 D5 42 15 A3 E2 22 6B A2 7C 52 85 EA 20
27 22 97 A3 AA 78 A5 90 6A 3A 3F 77 FB 8E CF 59
BE 93 6D 91 A4 5A 0E F5 23 54 C1 99 16 D0 81 69
99 A4 E5 58 6A CC 8D 7D F2 72 BD FB D9 CA 50 BC
A9 A6 FB 97 6E C3 39 20 16 52 87 0F 21 49 01 A8
C5 AB D8 E7 D3 31 AE 3D BB EE 3D 5C DB 21 4F C5
A5 5B 68 DB 74 B9 5A 4B 98 12 6F E5 A7 5A A4 B4
F5 99 FA A1 41 F9 C2 4F D1 3C B0 8B 31 15 EE 36
12 7C 90 5F 8A E7 EC DA 8D 22 DF CE 3E A8 3E 25
D4 5C 35 C7 D2 EA 03
02 34 33 08 26 0C B2 0E 82 35 B6 00 00 00
//用上面獲得的密鑰解密該密文,解密後以[3F 01 09 00 93 00 01]開頭,暫時不清楚做用,但明確解密後沒法獲得密鑰D,跳過。
若沒法解密,則此處爲異常情況,因此QQ從新發送了0x0826包,咱們將中間的包跳過,直接到第二次發送0x0826包處
//對包進行解析,發現所獲得的密鑰與上面同樣,直接跳過
[2013/10/24 14:51:59:996]
02 34 33 08 26 0C B3 0E 82 35 B6 03 00 00 00 01
01 01 00 00 66 84 00 00 00 00 C6 51 9A 71 81 86
0C 29 77 88 94 23 0C 81 C5 7F D2 02 14 85 94 AA
3E 4A 95 A2 0B 4F FE 89 F6 2E F8 35 26 AF 12 3D
8C AD 3F 9A DD C4 8B 72 1E F1 18 7D 8F 21 AA 78
9C 6D B4 8E 86 7C FD 17 D2 18 84 7A AE 19 A9 18
31 98 94 10 6F 12 A6 A5 F3 B0 3D 82 8D 93 E1 75
97 CE 07 19 5B 81 4C A4 EA 74 0D 76 29 B9 3D 98
10 6B 1D C6 AB EE 07 7D D9 98 57 69 8E 79 FF 64
B5 72 88 F6 42 46 89 EF 33 F4 CD 09 10 DB 52 E0
9B EC 0E 34 25 0A 95 69 9F 83 20 24 15 A0 3D 49
07 CE 4B C6 D0 9F D8 FA D3 96 B0 F0 6D E6 EB 1B
A0 C2 2A FB F0 61 F6 ED 83 73 23 64 4B FE 66 3D
30 37 00 72 04 50 75 35 02 B2 73 38 F3 22 43 5D
AB 5A 5A C0 2E 0E 95 29 65 3C 09 DC 53 39 11 37
28 F7 3F F9 24 30 03 1F CB 1C 53 36 ED 79 82 20
78 E1 5C 41 F8 58 77 E1 21 6D 78 6D B5 C0 84 3C
76 F1 A3 83 D8 DA 86 3E 9D C1 CC 95 E4 E5 81 36
6A 3E 33 25 51 43 11 08 04 7F C0 2D 40 50 CC 5E
8D 42 E0 F6 13 0F 21 95 07 CD 45 26 6D 9A D1 B9
4F A3 2D EA 44 33 96 9E AA B8 47 53 76 A2 3B 99
37 8D 57 B2 7C 8D C3 EE 86 B4 1D 24 69 D7 07 22
27 D7 94 16 ED 5C 5D 5C DD F0 A2 A7 7B A7 E5 71
2D 41 AC C1 61 75 01 F1 F1 E2 D8 FA ED 7F FE C4
86 4A CA C2 2E B1 91 39 83 3D 89 2A FF 0A 80 CF
2E BB 08 16 9C 4A 10 72 34 59 4F FB 0D 26 57 C9
F9 52 7B 3E A3 53 B4 BC A2 3B 83 97 2C 28 99 FC
6D 46 D7 64 4B D3 BA 4B B8 26 52 BC CB 9D BF 57
71 D4 49 97 77 0B 1B B9 14 DF B5 31 E4 AB CA 45
B4 3B 40 1A CE 36 8F 13 0D A2 90 04 75 9F 56 B8
28 94 4D A7 D9 CD BB 98 80 AC 3E FD 5E 33 24 B7
D1 45 A9 12 90 6F AA 82 BC 90 D1 D1 6C 69 B7 DE
59 AB 56 E8 D9 BD 73 24 A7 3C 74 1F C1 D7 B5 2F
7F 6C 2F F3 99 1D 03 55 08 3E 59 E7 61 D5 B6 BA
3A B5 22 E6 47 94 E0 07 5F 6D CC 92 8C 31 5C CA
7E 53 71 67 39 94 FA 27 DF 9C BF 09 FC E1 BC 73
5D 71 5C A7 3A AB 5F 71 B2 73 2A F3 A2 0A B1 CB
8A 5B 20 7B DC 86 52 49 BC 5E 4F 3F AE DE CD 03
6B 0D F4 B4 3D 8B 22 CF 39 4A E5 FA 58 EF 4A C6
44 D0 46 F5 D3 76 79 57 37 A9 2A A3 DB 29 22 45
DB 29 C2 84 4D DA 24 C4 CF 4D B1 C7 44 D9 12 B7
2B 86 02 76 81 90 81 6A 78 5F 9E A6 22 6A 05 17
C8 38 ED B5 EF 72 0A 00 0F B0 A1 F6 83 85 4E 6A
2D AD 73 CC 80 D4 58 25 26 35 2F 68 70 7A 8A 6F
26 BE CD BC 6D C3 DF 21 91 7D 16 C7 0B 80 4F 12
3D E3 5E 64 E1 2B 80 6E B0 00 31 AB 6C 93 A9 FF
ED 59 8A 9F 32 06 F5 D8 1C FB 14 43 2A C6 9C 77
86 7F 76 F3 F7 A3 88 97 09 69 E2 25 6C 1B D7 68
62 DB AF 11 10 D4 FA BA 5C 4C 5C 74 C1 3D 30 F5
9D 8C 03
[2013/10/24 14:52:00:037]
02 34 33 08 26 0C B3 0E 82 35 B6 00 00 00
//密文開始
36 4D
A1 C8 18 A3 FD 73 B0 F6 68 17 31 E5 CF CF 96 FD
EA 7E 4B CE 24 62 B0 D5 F6 C9 CB A4 E2 A5 38 D9
02 2C A9 14 C4 15 16 D0 C1 B3 47 9F 06 34 82 B8
82 7F 54 01 BF 26 73 19 62 6B 2B A5 22 8F AD 38
8D 8F F1 9B 37 01 55 FE 8F 69 B6 CA D8 1F 74 3A
79 3A 72 43 5A ED EC 8C CF 0B 68 53 5C 99 EC B3
6B 5B A9 BE F6 A7 79 D0 2A 5C A7 F9 59 E3 03 0A
31 A9 1E 42 3B BF 6C 97 AB B0 72 67 00 4B D8 EC
E0 31 2F EF AA D9 D8 BB F6 70 EA 61 28 0F CC 4C
91 20 75 F2 BA 40 2B 9A FE BD B7 11 DC C4 D6 2C
D7 5B 89 E1 0C 1E BF 47 35 D4 D2 9B 8B 3E 47 34
B4 53 D2 8F 55 58 74 59 A4 A8 9F 1C D9 5B AE 3D
58 5A 0B 19 A9 5C 68 7E D4 30 A1 50 E9 B1 E7 FB
19 CB E9 A0 45 39 05 74 08 C0 1F C0 78 5B E9 60
88 86 96 10 13 9F 40 88 19 3B 6F 03 9B 42 9B 3C
88 C1 F2 5B DB 92 45 DF 2E 40 7D 32 10 0E 7C B8
85 FA 65 82 FB D6 C6 82 33 48 12 2F 0C A6 C8 A8
18 B4 0E D1 F0 40 68 53 C2 BC 9F FA 71 17 D6 D4
63 AB EC F1 AC 70 B0 B7 4E 77 2E 50 DC 76 EE F1
D6 DC AB FF 84 A2 B3 DC 75 5A 1B C9 13 B6 86 03
95 C6 FF 64 53 B3 3E 9D 5E B2 1B 45 64 E9 87 86
F6 63 AD CC AE 9F 2A 1F EE A6 32 BF 64 73 D9 BF
0C B6 69 04 2D 42 B1 E4 56 FA D5 E0 EC EB 9D 92
21 97 93 93 CC 08 66 3F 80 FF 8A E5 68 5C 0C 72
EE E3 BB E0 EE 22 BE E5 17 E6 6E 8A 72 5B 7A 89
B9 5B 66 30 F1 4B 68 F1 E1 09 6E BA 29 59 C0 78
80 C1 44 65 4C 67 8F 02 14 86 A9 61 5C 77 08 EF
85 4D BB 9A 2F 16 38 7B 33 68 0C 10 9A 50 2C 56
01 E3 94 EC 69 7A 48 3E 7E DC 29 B7 1F 1A 2A 63
07 97 AA 64 9C B5 FF 77 FD D1 AF E3 71 84 51 A9
A4 DA D3 9F F6 70 4F 80 6A C2 56 83 8A F2 B8 AA
80 66 FB 47 DE 1B 76 5E 81 E6 2A CB 53 36 2D FA
EF 21 26 9B 0B 54 C8 E2 C3 A6 F3 EF 43 F3 01 BA
F7 3D 83 03 76 4D 58 AE 40 B7 D2 6A 38 8F D0 C0
DA 8E F5 1D EF FC 7D 70 B6 47 39 25 97 5A 69 82
F3 D8 C4 06 63 5A 0F C0 E7 74 02 D8 F8 38 49 05
7E 27 6A 04 47 2C E3 71 38 9A C7 11 5F 00 E5 34
2F 85 B0 1C 47 58 55 88 88 9D F6 F3 45 06 51 EA
14 DC 0C 30 74 05 EE 82 29 97 76 DA 9B 98 CC 72
4E C4 C6 74 B8 E9 9E A2 89 E1 DF 83 47 3A CC BC
A2 80 BE 06 4F 28 1E CB 82 95 53 6A 86 DC B6 74
BB CB 40 D5 CD 05 5E FE C5 59 F5 04 C8 A7 26 39
13 32 C2 90 E0 DA 4A BE CC DB 0D 4B 98 89 BA 17
CD B5 FD B8 12 07 92 79 17 74 53 5F 3B 9A 74 30
E8 01 B8 70 09 C2 72 EB F1 75 9E B2 51 3B
//密文結束
03
解密後
[
00 01 09 00 93 00 01 65 67 6E 76 54 42 34 63 79 52 64 69 58 7A 59 33 00 38 BC CB B5 B9 25 AB D4 E9 11 8A 87 38 F8 49 40 D0 6F AE 44 B0 63 57 9F 35 08 1E C6 50 60 B6 8B A4 59 B5 5F F9 3C 38 A0 3D B5 56 F8 FC 2C FF F9 48 9C 06 D5 77 D0 F8 B5 40 00 20 2A BD 1A 87 63 69 7B 6F AA CD 3C 46 D4 CE CE 94 A4 FB 0A 45 80 7C 98 77 8F DB E1 B6 C1 2C 8F 27 00 23 02 00 20 F3 5B E4 F4 76 7F 23 C4 96 03 EF 66 6C 72 EA 90 A1 8E FA 26 FB 4A 39 FC EA DD 7E FD 3E E1 96 03 01 03 00 14 00 01 00 10 31 47 8B 75 03 BA 49 ED 84 DA A3 FF B7 DF CA 16 01 07 01 D3 00 01 00 16 00 00 00 01 00 00 00 64 00 00 0D B0 00 01 51 80 00 00 00 3C 00 02 //固定88字節
5A 57 53 74 25 61 5F 50 3B 60 61 3B 29 4D 51 72 //獲得密鑰D,用來解密0x0828返回包的密文
00 88 00 04 52 68 C3 94 D3 67 23 07 00 00 00 00 00 78 B8 F3 C7 AF ED 5B 2C B7 FA A8 4B 73 8F C0 CA DE 2D E3 F9 B1 1E 68 28 7E F0 3E C2 91 A4 83 74 DB E1 06 E2 E4 55 19 74 39 32 C9 B1 B2 28 D5 FC 88 27 19 DA 56 81 F2 71 E8 B8 43 94 FE 9C 2B F4 17 CB DA B7 3D 06 96 90 21 04 55 66 CE 95 09 34 E1 31 53 97 3A 94 32 5C B5 5B 1D 5B BF 9C 1E CC 55 22 F9 0C 0F AA EE F1 BE 32 0D 07 26 AD 1C 27 87 A6 E8 0A D0 93 4E FD 15 43 68 54 44 4D 2B 55 67 65 75 75 4A 3B 63 7A 74 00 78 00 01 52 68 C3 94 00 70 23 DE F6 7E 7A A5 29 6D 85 27 45 C9 EB 57 EC E8 7E 20 F1 54 E7 4E C9 E2 D0 64 A0 E9 45 8B AA E0 90 42 3C 27 D0 46 CA B5 B7 37 AB C3 80 E6 64 C3 DA A6 9F 8A EF 51 91 7B D2 5D 1D CF 7B C1 88 FA 89 AE 41 3C 06 BF AD 87 86 82 32 16 7D 26 4A 14 1A 47 D0 70 B5 AF 92 44 68 8E D3 53 6A EB CE D4 BA A8 AA 93 60 88 47 D3 C9 F8 FC CD A1 56 50 96 00 83 01 51 6E 3B 3E 4D 3E 2B 6B 49 43 79 2A 2D 3E 39 57 00 70 00 01 52 68 C3 94 00 68 3C 74 D5 CF 2C 1A 42 31 A6 CF 32 1B BE E1 46 8E F9 A8 E9 01 4C 4B 4B C2 E9 A9 62 6C 7D 1B AB 0C 53 78 A0 60 9B 2F 3D F3 DA A3 61 5C F3 E8 44 3D 3A 55 79 7C B7 F6 A4 86 F5 71 ED 7E D0 E7 B7 A1 5D F0 20 2B A9 75 3F A1 CC B4 A6 E2 35 93 2E 93 74 77 CC 91 EC 1D 1A 2D 10 CD 6F 05 C6 49 54 21 D2 62 DA 61 E0 63 21 56 4B 77 7B 28 4B 4B 69 54 6D 75 36 67 50 24 75 36 01 08 00 21 00 01 00 1D 00 15 01 29 0C E5 B9 BB E3 81 AE E9 9B B7 E5 85 89 01 03 88 02 46 15 00 04 00 00 00 01 01 15 00 10 43 26 A3 2E 10 39 8A 45 92 1E B1 85 BB 4A B1 5E
]
[2013/10/24 14:52:00:339]
02 34 33 08 28 6B 89 0E 82 35 B6 00 00 00
//密文開始
14 01
98 20 CB 2B 2E EF 83 A6 46 8C 08 11 97 BF BD 43
CD DB C7 06 41 43 AC 93 5A 18 E3 F8 A9 56 47 34
E7 40 89 18 71 F4 8A 0F 61 82 CF DA E3 33 20 67
CD 65 F5 30 CE 1D 0D BC AC 35 E7 E8 1C FE 60 D4
CD 3F 53 35 C9 02 3A 38 C9 26 7F 9C 6F 0A 79 72
DE 4E 30 69 68 3E E3 F6 36 29 7E 07 5D AD 1C 76
45 83 0D 51 96 A6 62 BC B7 96 DD C0 BF EF D3 C3
3C 6A F5 23 49 99 E4 35 08 E1 75 AD 4B 7E 90 9B
9D FF 27 65 F1 23 D4 CF 7E BA 3C BE 6C 5E A4 8F
97 07 98 51 86 DA 15 02 C9 40 A9 5A 8D EC 64 4D
04 BE 40 CB 11 B6 84 D5 FB A5 73 C2 27 9A 94 EA
D8 3C 60 F4 99 66 9C AB B7 18 51 9B BE B3 82 33
D5 30 B8 64 3C F9 3F 62 3E 83 6A 65 22 E6 DC 8B
D6 D2 25 FC 12 1D E2 C2 D8 7B 81 B1 E7 2B D6 1D
8D 37 A0 1F E9 D1 AD ED BD FD D7 08 C1 7D 2F 3D
CD 79 7D BD 32 C2 BE 5B 8D 57 12 26 B0 58 81 F7
BC 96 B2 AC B0 7F D9 A3 C1 6D 0D 11 05 B9 F6 A6
A6 8A 0B 5D 3B 9B FE BC 08 BC 94 BE DA 3E F3 5F
5C AC 51 55 D8 53 1C 25 5D F1 4E 08 86 B5 50 93
8B DC D4 41 0E DC 6E C2 04 D8 0C 08 EC DA E8 3B
92 AE F2 64 38 4E E9 80 78 85 97 79 C6 73 6E ED
3F F1 FC E2 04 CD 51 44 31 E9 B2 8A 56 E0 BC 56
F0 C7 73 45 3C 33 0B 63 F8 A1 F2 B0 CB DD F4 60
84 D0 94 EB 5C 9B 66 E8 90 80 13 1F 2A CF C7 E0
BE 4F 35 28 06 CF 81 B5 C5 66 9C 75 5A 4F BB 5D
12 00 ED EB AB 0B B1 40 87 E1 64 B7 BB CC 03
[
00 00 0D 00 06 00 01 00 00 00 00 00 14 00 04 00 01 00 3C 01 0C 00 73 00 01
72 43 49 71 64 7A 49 78 6D 79 61 64 37 59 4E 71//會話密鑰,之後用來解密,一直持續到QQ下線
0E 82 35 B6//QQ
D3 67 23 07 94 42 52 68 C3 94 00 00 00 B4 03 78 C4 D4 65 B7 3C 13 90 00 00 00 07 00 30 AA 1C 4E A4 96 21 6A 64 A1 51 30 69 41 65 36 DE 2D 13 73 5B 2B D1 FC 47 78 F1 BC 56 DB 8A A4 C1 7F 80 45 FA F4 44 CA C6 F7 64 90 A3 CA 0D 7C C1 08 02 04 08 08 08 08 08 04 00 05 01 78 C4 D4 65 01 0E 00 56 00 01 00 52 03 88 42 46 40 C6 11 00 00 18 E6 8A 5D 29 3E 4B 28 3B F4 5B 2C 65 73 2F C2 48 6B F1 92 3F 0B CE ED 28 00 20 BA 72 7B B2 46 6F 86 9F 52 76 17 5C 0E FA E6 19 DC 5A C2 04 C9 3A 4B D9 C0 CF 51 15 40 DA 76 88 00 0C FF FF FF F3 04 00 50 00 C0 07 20 C0 00 2F 00 2A 00 01 8F FE 4F BB B2 63 C7 69 C3 F1 3C DC A1 E8 77 A3 DD 97 FA 00 36 04 40 EF 11 7A 31 02 4E 10 13 94 02 2C 00 00 00 00 00 00 01 0D 00 2C 00 01 00 28 FF 06 29 2F 6F 27 53 EC BC 61 A9 D8 6F EF D8 0A DF A7 F5 72 7A 0E E5 63 47 C8 32 03 F3 9A 08 81 67 2F 63 02 DF DF E1 9A 01 05 00 49 00 01 02 03 00 15 02 00 01 03 10 09 A0 0F 53 26 02 96 DC CB 51 25 77 FB 28 30 56 00 15 02 00 01 03 10 09 A0 0F 53 26 02 96 DC CB 51 25 77 FB 28 30 56 00 15 02 00 02 03 10 BB 63 9B 49 ED 2D 64 C2 17 C6 D1 13 72 F1 C7 36
]
這樣,就獲得了會話密鑰。
QQ發消息:
命令字:00CD
數據來源:客戶端->服務器
明文格式:發送者(4B) 接收者(4B) 0x64字節 數據大小(2B) 實體數據
備註:一次發送數據過大時,分多個包,結束標誌疑似0x64字節中
倒數第三字節(00表示結束)
QQ收消息:
命令字:00CE
數據來源:服務器->客戶端
明文格式:發送者(4B) 接收者(4B) 0x84字節 數據大小(2B) 實體數據
備註:一次發送數據過大時,分多個包,結束標誌疑似0x84字節中
倒數第三字節(00表示結束)
//發送
[2013/10/24 15:13:27:167]
02 34 33 00 CD 04 82 0E 82 35 B6 02 00 00 00 01
01 01 00 00 66 84
//密文開始
51 88 7E 31 4B 68 39 88 66 13 9F B3 80 BA 89 A8 21 18 25 94 C7 3C CC 5B 75 F2 3C AB 5B DC 5E 11 31 2B 35 D3 23 DB 12 89 70 19 FB 8D 43 D2 A5 A6 F8 92 49 31 8D DE 2D 6D CD FB F1 EC 6D 27 23 9C 91 94 D8 29 2A C4 5A 37 AB C2 6E B1 36 13 F4 51 E3 97 EA B7 EF DE B3 2E EB 60 FE 30 78 2C F3 C1 FA 52 BA C9 8A 4A 29 E0 64 61 9E 61 71 96 89 48 87 9F 1D 67 F2 C5 8D 65 C3 BA 88 F8 91 CC 89 2F 05 93 7A 52 20 4F 80 FF AA 14 DA 53 56 66 AA 1F 05 D6 AA 1D F0 37 F0 9F C1 30 32 0E CF 8B E3 AD BD 2F 00 A9 F4 CF E5 BF
03
[
0E 82 35 B6 30 EE 1B BA 00 00 00 08 00 01 00 04 00 00 00 00 34 33 0E 82 35 B6 30 EE 1B BA 16 C6 7F 91 CE 89 34 92 37 41 EC 81 63 EA 62 80 00 0B 29 F9 52 68 C8 9C 01 29 00 00 00 00 01 00 00 00 01 4D 53 47 00 00 00 00 00 52 68 C8 9C C8 F6 80 CB 00 00 00 00 0F 00 86 31 00 0C E5 8D 8E E6 96 87 E6 96 B0 E9 AD 8F 00 00 01 00 27 01 00 24 E5 8F 91 E4 B8 AA E6 B6 88 E6 81 AF E8 BF 87 E6 9D A5 EF BC 8C E6 B5 8B E8 AF 95 E4 B8 8B E8 BD AF E4 BB B6 08 00 08 01 00 05 08 1B 27 00 00
]
0E 82 35 B6//發送者
30 EE 1B BA//接受者
00 00 00 08 //0x08=8
00 01 00 04 00 00 00 00 //8
34 33 //版本號
0E 82 35 B6//發送者
30 EE 1B BA//接受者
16 C6 7F 91 CE 89 34 92 37 41 EC 81 63 EA 62 80 00 0B 29 F9//20
52 68 C8 9C //時間
01 29 00 00 00 00 01 00 00 00 01 4D 53 47 00 00 //16
00 00 00 05 68 C8 9C C8 F6 80 CB 00 00 00 00 0F 00 86 31 00 0C
E5 8D 8E E6 96 87 E6 96 B0 E9 AD 8F //字體,華文新魏
00 00 01 //表示發送的是文字,00 00 02是表情
00 27 //大小24+3
01//固定,像是分隔符
00 24//送數據大小
E5 8F 91 E4 B8 AA E6 B6 88 E6 81 AF E8 BF 87 E6 9D A5 EF BC 8C E6 B5 8B E8 AF 95 E4 B8 8B E8 BD AF E4 BB B6 //實際發送數據,UTF-8編碼格式,內容「發個消息過來,測試下軟件」
08 00 08 01 00 05 08 1B 27 00 00//應該是炫彩字體信息
//接收
解密後(另一組數據)
1F DA 49 64 //發送者QQ
0E 82 35 B6 //接收者QQ
00 0E 9C 4C 0A 8B 0C 6F //8
1F 40 00 A6 00 00 00 20 00 05 00 02 00 06 00 06 00 04 00 01 01 07 00 09 00 06 03 E9 20 02 85 90 00 0A 00 04 01 00 00 00 0C 17 //42
1F DA 49 64 //發送者QQ
0E 82 35 B6 //接收者QQ
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 62 BE//20
52 6B 2F E8 //時間
00 00
52 6B 2F E8 //時間
01 00 00 00 00 4D 53 47 00 00 00 00 00 //13
52 6B 2F E8 //時間
4D 8E 3F 83
00 00 00 00 09 00 86 02 00 06 //10
E5 AE 8B E4 BD 93 //字體
00 00 01 //發送的是文字
00 07 //大小 4+3
01 //固定
00 04 //大小4
31 32 33 34 //文字內容
附上工具:抓包工具:http://yunpan.cn/Q9wgsXp8KrGIa
QQCrypter:http://yunpan.cn/Q9j7aZc2wBKwk