• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁騰訊專區QQ安全 → QQ聊天記錄數據庫DB探析

    QQ聊天記錄數據庫DB探析

    相關軟件相關文章發表評論 來源:網絡時間:2010/4/24 17:17:46字體大?。?em class="fontsize">A-A+

    作者:佚名點擊:3844次評論:0次標簽: 黑客

    • 類型:SIM模擬經營大?。?i>560M語言:中文 評分:10.0
    • 標簽:
    立即下載

    QQ聊天記錄文件存儲方式解密
    最近花了幾天時間跟蹤了一下“QQ聊天記錄查看器 5.3 華軍版”,總算把聊天記錄的存儲方法弄清了。大家不要笑我,只是好奇而已,呵呵。
    1.聊天記錄存儲方式
    QQ聊天記錄保存在MsgEx.db文件中。以前很早的版本是保存在Msg.db中,文件結構也與現在不同,我們就不分析了。
    MsgEx.db采用Storage結構化存儲。關于Storage復合文檔的知識請查閱Microsoft相關文檔,我們不做贅述。
    大家可以用VC自帶的DocFile View工具查看該文件的內容,可以看到文件結構大致如下:

    |----MsgEx.db
    | |----C2CMsg
    | |----QQ號碼
    | |----Data.msj
    | |----Index.msj
    | |----IMInfo
    | |----info.dat
    | |----Matrix
    | |----Matrix.db
    | |----SysMsg
    | |----10000
    | |----Data.msj
    | |----Index.msj
    | |----DiscMsg
    | |----GroupMsg
    | |----MobileMsg
    |---------TempSessionMsg
    消息內容都存儲在每個號碼下面的Data.msj中,通過Index.msj索引。消息內容是經過加密處理的,必須經過解密才能看到。
    2.解密方法
    消息內容采用BlowFish分組加密。每8個字節為一個分組。密鑰Key通過QQ號碼生成,具體算法稍后討論。
    解密方法:
    a.取前8個字節,通過BlowFish解密, 得到decryptKey;
    b.decryptKey與后面8個字節XOR,對結果再進行一次BlowFish解密;
    c.將decryptKey與前8個字節XOR,得到第一組結果;
    d.decryptKey與后面8個字節XOR,重復b,c兩步;
    e.最終全部數據解密完畢。
    最后會剩下一組8字節無法解密,這個實際上是冗余數據,似乎是用來作為校驗。
    3.具體步驟
    以上解密時,BlowFish的密鑰是一個全局公用密鑰Key。Key要通過QQ號碼生成,具體步驟是:
    a.將QQ號碼進行MD5變換,得到Md5Key
    b.取Matrix.db的數據,對其進行解碼。簡單說一下Matrix.db文件的結構:
    Matrix.db采用分塊存儲,每個Record包含類型、名字長度、名字、內容長度、內容幾個字段組成。用數據結構表示就是:
    struct Record{
    char rType;
    short nLen;
    char Name[nLen];
    int rLen;
    char Content[rLen];
    };
    初始內容也是通過加密存儲的。解密方法很簡單:將長度的低位字節和高位字節XOR,得到key;將內容逐個與key進行XOR,就得到結果。對名字和內容分別進行解密即可。解密后會看到STL, TIP, CRK, CPH, CAH等字段,不清楚具體的啥含義,感興趣的同學可以自己去研究研究。我們要用到的是CRK字段,長度為32字節(如果本地聊天記錄加密,可能會有變化,沒試過)。將得到的CRK字段作為pData。
    c.用Md5Key對pData進行BlowFish解密,得到全局密鑰Key
    4.結論
    以上討論的都是本地聊天記錄沒有加密的情況。如果選擇了加密,沒有密碼是肯定解不出來滴,大伙就不用費心了。

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      第 2 樓 四川成都鐵通ADSL 網友 客人 發表于: 2014/3/17 14:13:40
      hehe

      支持( 0 ) 蓋樓(回復)

      第 1 樓 四川成都鐵通ADSL 網友 客人 發表于: 2010/12/2 17:00:37

      支持( 0 ) 蓋樓(回復)

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>