日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QQ协议分析及其还原(二)

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QQ协议分析及其还原(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.iprotocolsec.com/2012/02/28/qq%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90%E5%8F%8A%E5%85%B6%E8%BF%98%E5%8E%9F%E4%BA%8C/

QQ協議分析及其還原(二)

2012-02-28

上一篇講到了QQ協議的Header部分,這一篇主要講密鑰生成及其交換的過程。

QQ登陸協議密鑰交換過程,首先我們使用Wireshark抓報文分析,觀察主要用到的命令字(見上一篇Header部分的介紹)。

QQ2011登陸過程分析
命令字含義
1、Touch Information(0×0091)根服務器SAY HELLO,如果對該報文做一些小動作,可以讓QQ認為,TX的服務器或網絡不能訪問…
2、Login Request(0x00ba)未知,可以不進行處理。
3、Login Verify(0x00dd)向服務器發送登陸請求,需要使用密碼進行運算作為密鑰才能機密該報文,解密的報文中包含對第4步的解密密鑰。
4、Login get Information(0x00e5)未知,但是服務器返回的報文你必須得知道,因為這個報文中包含解密會話密鑰報文(第6步)的密鑰。
5、Login verify E3(0x00e3)未知,可以不進行處理。
6、Login send Information(0×0030)客戶端向服務器發送sessionKey,使用第4步獲取的密鑰進行解密。

?

?

1、Touch Information(0×0091)

這個報文無需關心,是客戶端向服務器在SAY HELLO…

2、Login Request(0x00ba)

未知,在此處并不重要。

3、Login Verify(0x00dd)

非常重要!!獲取會話密鑰首先得解密該報文。但是要解密該報文,必須得知道該登陸QQ用戶的密碼,而用戶密碼只有用戶和TX知道,第三方是不知道的(也有可能存在“不可思議”的第三方…)。數據傳輸過程中使用的加密算法是blowfish,這個算法目前從公開的資料上來說,還沒有發現漏洞。因此,要實時獲取用戶的聊天信息,除非已經知道密碼了,或者已經暴力破解了密碼(這里簡單介紹一下怎么進行暴力破解,這里的暴力破解,當然不是模擬一個QQ客戶端不停的向TX服務器發送登陸請求,這樣太慢了,而且TX那邊也會有記錄。首先,得分析出這個報文的密鑰生成算法[不是簡單的直接使用密碼作為密鑰],加密算法(這個已知,是blowfish),第二,需要將對方的登陸報文截取保存到文件,然后寫一個程序,不停拼接字符串、數字、標點符號進行組合,根據第一步分析它密鑰的生成方法生成出密鑰,然后作為blowfish算法的密鑰,去解密報文,如果解密成功,恭喜你,你暴力破解到了一個QQ密碼。但是這種概率比較小,即使有一些,這些號碼的價值不大,扯遠了…)。

LoginVerify報文的解密密鑰生成方法,在QQ2011版本之前,是MD5(MD5(PWD)),對QQ的密碼做了兩次MD5運算。但是QQ2011版本(包括2011版本)之后,這個算法做了一點修改,就是:MD5(MD5(PWD+QQ_NUM)),這個修改其實是非常有必要的,為什么呢?因為隨著硬件技術的發展,以及前些年MD5彩虹表的推出,簡單密碼的MD5值非常容易就能從彩虹表中找出對應MD5值,從而得到原始字符串密碼,即使TX做了兩次的MD5運算。在彩虹表的推出或以前(因為我也不知道是在這以前還是以后,呵呵),在執行MD5運算時,就有了加SALT的說法,很形象!加鹽,在這里,QQ_NUM就是鹽,這樣就加大了使用彩虹表破解的難度。

使用密碼根據以上的算法得出解密密鑰,解密Login Verify報文后,會得到一個新的密鑰,這個密鑰暫且就叫做verify_key。

Login Verify Reply(0x00dd)

服務器對客戶端Login Verify報文的響應,這個報文需要verify_key作為密鑰進行解密,得出一個新的密鑰-verify_reply_key。

4、Login get information(0x00e5)

客戶端接收到服務器的Login Verify Reply報文后,會使用verify_reply_key加密數據發送到服務器,而這里面又包含了一個key – get_info_key。

5、Login verify E3(0x00e3)

未知,此處可以不進行處理。

6、Login send Information(0×0030)

使用get_info_key解密該報文,得到會話KEY – session key。

回想一下:密碼是關鍵,有了密碼才能解密Login Verify(0x00dd)報文,解密了Login Verify(0x00dd),才能解密后續的的報文。其步驟是:passwd -> verify_key -> verify_reply_key -> get_info_key -> session_key。

總結

以上是生活随笔為你收集整理的QQ协议分析及其还原(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。