QQ2010協議技術詳細分析QQ登錄過程

來自#博客園#文章,七月份的時候忽然對QQ協議產生了些興趣,因而這幾個月有空就研究QQ協議,目前對QQ2010的協議已經分析得差很少了。 QQ登陸分爲UDP和TCP登陸,還支持代理登陸。默認是UDP登陸。UDP登陸端口服務器爲8000,本地端口通常是從4000開始選擇,若是該端口已 經被佔用,則加1再測試,一直測試到一個沒有被佔用的端口。TCP登陸服務器通常是80或者443端口,本地端口選擇方式和UDP同樣。 html

這些登陸方式登陸設置裏面能夠自由選擇。可是不管哪一種方式登陸,其登陸流程和數據包格式都是同樣。QQ登陸時須要進行6次與服務器的交互,每次交互均伴隨着登陸相關信息的攪渾。QQ登陸主要分6步。 算法

1. 0×0091 Touch包

該數據包是QQ客戶端登陸時發送的第一個包,它的做用在於測試遠程服務器是否可以正常響應,根據咱們的抓包分析,對於不一樣的QQ號碼段,提供服務的 QQ服務器是不相同的,對於QQ會員有專門的QQ會員服務器。在對QQ客戶端的迴應包中,若是鏈接的服務器不對該QQ號碼提供服務,它會返回另一個服務 器地址,讓客戶端從新鏈接該地址。 服務器

0×0091發送包: 測試

02 1E 07 00 91 5B B8 04 EE D4 E9 02 00 00 00 01
01 01 00 00 64 2F 6A 84 FA 78 CC 16 51 86 A7 B8
1C 55 E8 29 6B C8 50 95 FB 5A CE E8 6C 89 0A C9
83 D0 68 51 DB 6E D1 93 C1 32 11 9B 84 13 EF 7D
4B 55 8C 08 6C F3 F0 5F 11 16 26 E4 00 68 0D 98
02 BC 06 B9 4E E2 03
[
02 //包頭
1E 07 //版本號
00 91 //命令
5B B8 //包序號
04 EE D4 E9 //QQ號碼:82760937
02 00 00 00 01 01 01 00 00 64 2F //固定,QQ版本號不一樣則不一樣
6A 84 FA 78 CC 16 51 86 A7 B8 1C 55 E8 29 6B C8 //0x91密鑰
00 01 //固定兩字節
00 00 08 04 01 E0 //0091Data01(在後面的命令裏面要用到的)
00 00 03 20 00 00 00 01 00 00 0B BF //0091Data02(在後面的命令裏面要用到的)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //首次發送爲15字節0
03 //包尾
] 網站

0×0091接收包: 代理

02 1E 07 00 91 5B B8 04 EE D4 E9 00 00 00 C0 EB
D0 BF C5 F9 E1 F2 C9 51 9D 3B 26 07 B5 AD 46 49
49 C4 49 D7 69 36 9E 11 8E 24 2E A1 B3 AB 90 CE
CA 38 C9 99 94 8E 0A 41 03 EB AC E7 C6 BA 34 FD
64 9E E7 4B 3D 24 6F 44 0A 77 80 69 96 91 0C 00
87 6B 51 25 E5 15 9F E3 54 6E B8 C6 1D 5F DE 40
54 BB D8 0C 36 8D 03
[
02 //包頭
1E 07 //版本號
00 91 //命令
5B B8 //包序號
04 EE D4 E9 //QQ號碼:82760937
00 00 00 //固定全爲0
00 //接觸成功
4D 16 07 CC //登陸時間:2010-12-25 23:03:40
7D 47 C8 04 //登陸IP地址:125.71.200.4
00 00 00 00 00 00 00 00 //固定8字節0
00 38 //0091_Token長度:56字節
6E F0 FB 35 5F 8E 65 0F 77 E7 A7 D0 AE 69 8C 4D
EF 43 41 89 BB 79 9C B9 B5 0C 4C 86 5E 8D A0 CB
84 D7 66 69 CF 63 E9 0D 80 48 F4 E6 C1 30 A7 88
7E B0 68 0A E6 8C FC D4
00 //接觸成功
03 //包尾
] htm

2 0x00BA獲取驗證碼

由於部分QQ號碼可能存在異地登陸,或者QQ號碼被盜發送大量垃圾信息,或者用了掛機軟件或者掛機網站掛機,騰訊服務器檢驗到這些非正常的QQ狀況時即會要求輸入驗證碼。如下分析我都直接截取QQAnalyzer的分析圖片。貼分析代碼比較麻煩,關於QQAnalyzer的介紹和下載請看這篇博客:http://www.cnblogs.com/83008911/archive/2010/10/09/QQAnalyzer.html blog

0x00BA發送包 圖片

0x00BA接收包 get

3 0x00DD密碼驗證

該數據包的做用是將本地QQ的密碼發送給服務器端進行驗證。

0x00DD發送包

0x00DD接收包

4 0x00E5數據校驗

該數據包主要用於校驗前幾個數據包的Token數據,若是經過驗證,服務器端會返回本次登陸的時間和IP地址等信息。

0x00E5發送包

0x00E5接收包

5 0x00E3數據校驗

0x00E3發送包

0x00E3接收包

6 0×0030獲取會話密鑰

該數據包是QQ登陸流程的最後一個數據包,主要用於向QQ客戶端返回會話密鑰(Session  Key),該會話密鑰由服務器端生成,目前不知道其生成算法。可是估計和QQ號碼,登陸IP,登陸時間以及QQ密碼有關。

0×0030發送包

相關文章
相關標籤/搜索