西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)騰訊專區(qū)QQ安全 → QQ聊天記錄數(shù)據(jù)庫(kù)DB探析

QQ聊天記錄數(shù)據(jù)庫(kù)DB探析

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:網(wǎng)絡(luò)時(shí)間:2010/4/24 17:17:46字體大。A-A+

作者:佚名點(diǎn)擊:3844次評(píng)論:0次標(biāo)簽: 黑客

  • 類型:SIM模擬經(jīng)營(yíng)大。560M語(yǔ)言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載

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

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

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    第 2 樓 四川成都鐵通ADSL 網(wǎng)友 客人 發(fā)表于: 2014/3/17 14:13:40
    hehe

    支持( 0 ) 蓋樓(回復(fù))

    第 1 樓 四川成都鐵通ADSL 網(wǎng)友 客人 發(fā)表于: 2010/12/2 17:00:37

    支持( 0 ) 蓋樓(回復(fù))

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)