QQ的版本:
QQ的版本升級比較頻繁,而且與多數的軟件不同的是,它客戶端的升級往往伴隨著協議相應的改變。
目前,對研究QQ協議版本比較重要的是:
QQ2000c 。它對應的客戶端協議版本是08xx,目前對這個版本的研究比較多。
QQ2003 (0808) 這是騰訊最新公布的QQ版本,目前發現它對應的客戶端協議版本是0A 1D。目前對這個版本的研究才剛剛開始,此版本對協議做了比較大的改動。
協議類型:
我們嘗試把QQ的協議進行分類:
文字聊天協議族(TCPF, Text Chatting Protocol Family):它主要支持與其它QQ客戶端進行文字聊天。TCPF是建立在UDP協議之上。UDP數據包中的第一個字符02為這個協議族的標識。TCPF的服務器使用8000號端口,騰訊的QQ客戶端軟件一般從4000號端口開始嘗試使用,但實際上,對客戶端使用的端口號并沒有限制。目前的研究集中在TCPF上。
其它未知可能存在的協議族:
我們觀察到QQ除了與TCPF服務器通信以外,還有與其它的服務器使用UDP進行通信。目前我們觀察到的服務器為 218.17.217.111 : 8000??蛻舳耸褂门cTCPF不同的端口。目前觀察到的從客戶端發出的包以06開頭,而服務器返回的包則以01開頭。目前其具體作用未知。我們注意到一個有趣的現象是,如果選擇離線后重新上線,那么在發出登錄包之前,這個通訊已經開始。我們暫時把它命名為數據傳輸協議族(DTPF,Data Transfer Protocol Family)。最新的研究發現,它傳遞的是QQ Show的圖片數據。
語音、視頻聊天:目前還沒有開始分析,尚未知道是使用UDP還是TCP協議。
聊天室:沒有分析,應該是TCP協議。
隨著對這些協議分析的開始,我們會給它們更精細的劃分和恰當的命名。
TCPF:
TCPF是建立在UDP協議上的協議族,主要支持文字聊天功能。TCPF是以請求-響應模式工作的。也就是說,客戶端發出一個請求,服務器端會給出一個相應的響應;服務器向客戶端發送信息,客戶端也會給服務器相應的響應。請求和響應通過相同的序列號來進行配對(請求代碼也應該相同)。而且每種請求的發起方都是相同的。目前,已知的請求包括:
0x0001 注銷登錄
0x0002 心跳信息
0x0004 更新用戶信息
0x0005 搜索用戶
0x0006 獲取用戶信息
0x0009 不需認證方式添加好友
0x000a 刪除好友
0x000b 需要認證的方式添加好友
0x000d 設置隱身、示忙等狀態
0x0012 確認收到系統消息
0x0016 發送消息
0x0017 收到消息(服務器發起)
0x001a 未知作用。
0x001c 在對方好友列表上刪除自己
0x001d 未知作用。
0x0022 登錄
0x0026 獲取好友清單
0x0027 獲取在線好友
0x0030 群操作指令
0x0080 收到系統消息(服務器發起)
0x0081 收到好友狀態改變消息(服務器發起)