PC端QQ協議說明,完美搞定QQ智能助手


一、 實驗目的:

  在虛擬機下NAT模式下通過Wireshark抓包,分析QQ的傳輸模式。了解QQ在傳輸信息過程中用到的協議。分析在Nat模式下,信息傳輸的穿透性。

二、 實驗環境:

  Win7 專業版32位(在虛擬機里面)。

  Win7 旗艦版64位(物理機)

  QQ版本:TM2013

  Wireshark

三、文字聊天協議族(TCPF, Text Chatting Protocol Family)

它主要支持與其它QQ客戶端進行文字聊天。TCPF是建立在UDP協議之上。UDP數據包中的第一個字符02為這個協議族的標識。TCPF的服務器使用8000號端口,騰訊的QQ客戶端軟件一般從4000號端口開始嘗試使用,但實際上,對客戶端使用的端口號並沒有限制。目前的研究集中在TCPF上。

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),它是由服務器向客戶端發送的其它包。

TCPF包頭:

0)、所有TCPF包的前7個字節是包頭,包頭可以識別TCPF包的內容。包頭的格式為:

1)、第0字節:TCPF包標識:0x02。

2)、第1-2字節:發送者標識。如果是0x01 0x00,表明是由服務器發送。客戶端的標識與所使用的使用的QQ版本有關,如:版本QQ2013(8550)的標識為0x34 0x33。具體的協議的格式與這個字段所標識的客戶端版本有關。目前我們以這個最新的3433版本來討論。

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作為包尾。

                       

三、 實驗內容:

1、 QQ登錄

  1)、UDP登錄

  在虛擬機的win7打開QQ面板,設置登錄服務器的類型為UDP

        

  啟動wireshark,然后開始登錄QQ,登錄成功等待一會兒停止wireshark的抓包。

  抓包如圖:

       

  我們可以看到本地向遠程登錄服務器183.60.48.174發送了一個UDP的數據包,這個就是IP就是在剛才設置UDP登錄時的系統默認IP,還可以看到這個IP返回了一個UDP的數據包。看來這兩個包就應該是登錄驗證的包,接下來的幾個包的服務器IP變成了183.60.48.165,由於這個IP和登錄服務器的IP位於統一網段,因此我們可以猜測這個IP是騰訊用來存儲我們發送的信息的服務器。需要注意的是,在多次實驗下,可以發現服務器不止183.60.48.165這一個,這是因為想QQ這樣的大吞吐量的信息交互,必須用多台服務器分流,所以這個IP並不一定是某一個。下面的一些包應該就是心跳包。那個OIQC協議就是QQ用的協議,其實實際上也是一個UDP包。下面的DNS協議就是因為我的QQ是在虛擬機里面登錄的,在向外網交互信息的時候會通過網關192.168.214.2解析。

  我們來分析一下登錄時候的UDP包

       

  從這個圖我們可以得知源和目的的IP,mac地址,還有雙方的端口號等等一些信息。

   數據鏈路層:

       

  目的MAC地址:00 50 56 e3 56 95

  本機MAC地址: 00 0c 29 ba 59 3c

  網絡層:

       

  通過查詢資料和分析我們知道:

  45:版本IPv4,首部長度20字節

  00:區分服務

  00-73:總長度175字節

  36-1e:標識

  00-00:標志和偏移

  80:生存時間128

  11:傳輸協議UDP(17)

  傳輸層:

       

  0f-a0:源端口4000

  1f-40:目的端口8000

  009b:長度155字節

  7f-c4:檢驗和

  QQ的數據

       

  通過查詢資料和分析我們知道:

  02:QQ報文的開頭 

  34-20:QQ客戶端的版本號,實驗所用版本為QQTM2013

  08-25:用戶請求登陸的命令的序號 

  67-dc:發送數據的序號  

  56-a6-d2-5c:用戶QQ號碼,實驗中為1453773404

  之后的內容為加密的數據內容 

  最后一個字節03:QQ報文的結尾

  2)、TCP登錄

  設置如圖:

        

  啟動wireshark,然后開始登錄QQ,登錄成功等待一會兒停止wireshark的抓包。

  抓包如圖:

        

  可以看到幾個TCP的包還有一個SSL的包

  對TCP包分析如圖:

       

  通過對UDP協議的分析,我們可以看到數據層和網絡層的十六進制代碼和之前的一模一樣,這里我們就值分析傳輸層的TCP協議了,如圖:

       

  通過查詢資料和分析我們知道:

  C4-5e:源端口號50270

  01- bb:目的端口443

  45-34-fc-63:序號 

  00-00-00-00:確認號 

  80-02:數據偏移,標志 

  20-00:窗口大小8192字節 

  7f-3b:檢驗和 

  00-00:緊急指針  

  其余部分為可選字段和填充字節

  在TCP協議里面我們沒有看到QQ的登錄驗證消息。為什么呢?一看這里還有一個SSL協議,QQ會不會是通過SSL驗證的呢?

  SSL((Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。)

  那么我們來看看這個包:

        

  02:QQ報文的開頭 

  34-20:QQ客戶端的版本號,實驗所用版本為QQTM2013

  08-25:用戶請求登陸的命令的序號 

  67-dc:發送數據的序號  

  56-a6-d2-5c:用戶QQ號碼,實驗中為1453773404

  之后的內容為加密的數據內容 

  最后一個字節03:QQ報文的結尾

  可見,這個包的信息和UDP登錄時候的一樣,那么TCP登錄是確實使用了SSL。

2、 心跳消息數據包

  如圖,通過IP地址查詢,可以知道119.147.45.40是廣東深圳的IP,而深圳是騰訊的老巢。在多次的抓包中也可以看到這個IP段,所以我們有理由相信,這個IP段是騰訊的。

  那么我們打開來看看。

        

  看到這里,確實有很熟悉哦。通過查閱資料和分析我們知道:

  通過查詢資料和分析我們知道:

  02:QQ報文的開頭 

  34-20:QQ客戶端的版本號,實驗所用版本為QQTM2013

  00-58:用戶在線的命令序號 

  3b-09:發送數據的序號  

  56-a6-d2-5c:用戶QQ號碼,實驗中為1453773404

  之后的內容為加密的數據內容 

  最后一個字節03:QQ報文的結尾

3、 收發信息數據包

  對方在線的時候

我們看看第一個包:

  可以看到藍色字體那里的02是QQ報文的開頭,這里需要注意的就是00-cd是客戶端向服務器發送消息的命令序號,1b-db是發送數據序號,其他的都一樣。通過幾次實驗發現,00-cd客戶端向服務器發送消息的命令序號是固定的,而1b-db發送數據序號是會改變的。而且沒每送一個包,服務器是會回復一個包給客戶端的。

 

資料QQ助手方式,關注公總號RaoRao1994,查看往期精彩-所有文章,即可獲取資源下載鏈接

更多資源獲取,請關注公總號RaoRao1994

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM