QQ协议分析及其还原(一)
原文網址
QQ協議分析及其還原(一)
2012-02-26QQ,一個通信工具,號稱6億的用戶量,現在每天的活躍賬戶在1億以上。在中國,只要是一個經常上網的網民,手中必須得有一個,當然也可以沒有,但是朋友、同學、同事都有,就你沒有,人家說什么事都是用這個在聯系,你不用,都不好進行溝通和做事情了。
既然是通信工具,肯定就涉及的網絡通訊,自然就引申到協議了。其實QQ協議,在國內已經分析的比較完善了,由于TX在基于QQ這個產品上承載的很多很多的業務(當然收入也是很多很多很多…..),因此要將其全部分析完全,那工作量非常大,而且沒有必要,只需要分析它的密鑰交互過程,獲取密鑰之后,解密的明文做幾次比對分析,就基本知道是啥意思了。
最初,QQ通信協議并沒有加密,而是直接采取明文的方式進行傳輸,到了后來才使用了加密傳輸,加密算法一直沒有變過,使用的是blowfish算法,但是密鑰的交換協議變得比較頻繁。其實TX也是被逼的,現在的互聯網用戶比前幾年更加注重隱私安全,這么大用戶量的通信軟件,如果用戶與對方之間的聊天信息可以輕易的被第三方破譯獲取,那么用戶量肯定會離開她,而去選擇那些能夠更加保護好個人隱私的人通信軟件。因此,隨著時間的推移和技術的發展,以前設計的協議可能會被研發者發現一些弱點,“圖謀不軌”者加以利用,會對TX造成一些潛在的風險,他不得不對協議進行修改(QQ2011正式版中的密鑰交換中對密碼的MD5計算就加入了salt的概念,這個salt就是對應的QQ號碼,后面會有詳細的描敘)。
QQ協議首選的傳輸層是UDP,如果UDP不可登陸,那么會再嘗試使用TCP進行傳輸。UDP使用的端口是8000,TCP使用的端口是443,應用協議基本一樣,只是在通過TCP進行傳輸時,前兩個字節為協議內容的長度(包括2個字節)。
QQ協議中每個通信內容都帶有一個協議頭部,如下圖:
其中標識1一個字節,版本號、命令字和序號都是2個字節,QQ號碼有4個字節,接下來是數據部分(已加密),最后是一個尾部標識1個字節。
在進行協議還原的時候,最關心的就是協議頭部的命令字,需要根據不同的命令字,來進行相應的處理,最終獲取密鑰解密聊天內容。
第二篇見….
總結
以上是生活随笔為你收集整理的QQ协议分析及其还原(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优秀的领导与差劲的领导
- 下一篇: WI-FI无线数据解密