本文將介紹如何將微信聊天記錄導(dǎo)出為結(jié)構(gòu)化數(shù)據(jù)
所需材料
- 一部已經(jīng)root的安卓手機(jī)
-
帶GPU的Linux電腦
整體流程如下:
數(shù)據(jù)庫(kù)文件提取
使用RE管理器,在已經(jīng)root的安卓手機(jī)上,找到如下文件:/data/data/com.tencent.mm/MicroMsg/[weixin_name]/EnMicroMsg.db,(其中[weixin_name]是32位的md5值,如果它有多個(gè)值,說(shuō)明這部手機(jī)上登錄過(guò)多個(gè)微信號(hào)),將該文件傳到電腦上。
破解密碼
這個(gè)數(shù)據(jù)庫(kù)文件進(jìn)行了加密,密碼是7位的小寫字母加數(shù)字組合,有兩種破解的方式
1. 計(jì)算的方式
網(wǎng)上有很多方法已經(jīng)介紹的很詳細(xì)了,即使用IMEI和微信的uid拼起來(lái)計(jì)算md5,取前7位,但是我這邊測(cè)試不通過(guò),有需要的可以參考:微信聊天記錄解密并導(dǎo)出
2. 暴力破解方式
使用計(jì)算的方式看似比較討巧,但是比較浪費(fèi)時(shí)間,我的手機(jī)IMEI不能復(fù)制,需要截圖傳到QQ/微信識(shí)別文字,雙卡手機(jī)還有兩個(gè)IMEI,兩個(gè)都試了均未成功。無(wú)意間發(fā)現(xiàn)網(wǎng)上介紹有暴力破解的方式,于是打開新世界:提取微信聊天記錄。
這個(gè)工具https://github.com/whiteblackitty/SQLCipher-Password-Cracker-OpenCL可以實(shí)現(xiàn)使用GPU暴力破解數(shù)據(jù)庫(kù)密碼。
這個(gè)配置環(huán)境比較麻煩,需要Linux, Python, pip OpenCL,Cuda等等一系列操作,非常惡心。不過(guò)對(duì)于深度學(xué)習(xí)er來(lái)說(shuō),這些都是家常便飯了,直接按照readme裝好環(huán)境,然后對(duì)源碼做如下修改:
將 Lib/pbkdf2-sha1_aes-256-cbc.cl 文件的 752 行 (link) 修改為
```if(((uint)(data[5] ^ iv[5])==0x40) && ((uint)(data[6] ^ iv[6])==0x20) && ((uint)(data[7] ^ iv[7])==0```
運(yùn)行如下命令,即可開始破解密
python Run.py 0
然后你就得到了7位的數(shù)據(jù)庫(kù)密碼
我用的2080TI顯卡,親測(cè)只用5分鐘即可遍歷完所有可能,實(shí)際只用2分鐘破解完密碼,比前面IMEI+uid計(jì)算的方式方便太多。因此,推薦Linux+GPU用戶使用暴力破解的方式。
導(dǎo)出為結(jié)構(gòu)化txt
- 數(shù)據(jù)庫(kù)解密:
在ubuntu上安裝sqlcipher,目前(2021.12.24)默認(rèn)安裝的3.4.1版本,這個(gè)版本可以使用
sudo apt-get install sqlcipher
然后在數(shù)據(jù)庫(kù)文件EnMicroMsg.db的目錄下,執(zhí)行如下命令:
sqlcipher EnMicroMsg.db 'PRAGMA key = "yourkey"; PRAGMA cipher_use_hmac = off; PRAGMA kdf_iter = 4000; ATTACH DATABASE "decrypted_database.db" AS decrypted_database KEY "";SELECT sqlcipher_export("decrypted_database");DETACH DATABASE decrypted_database;
把yourkey換成你的密碼,如果有報(bào)錯(cuò),說(shuō)明密碼不對(duì),等待大約兩分鐘,即可得到解密后的數(shù)據(jù)庫(kù)文件decrypted_database.db
- 聊天記錄格式化導(dǎo)出:
我們使用wechat-dump提供的腳本,將聊天記錄按照會(huì)話用戶名/群聊名稱進(jìn)行整理 - 復(fù)制項(xiàng)目
git clone git@github.com:ppwwyyxx/wechat-dump.git - 將
decrypted_database.db放到wechar-dump文件夾下 - 執(zhí)行解析:
./dump-msg.py decrypted.db output_dir
然后就可以在output_dir文件夾下看到整理后的聊天記錄
其他玩法
根據(jù)生成的聊天記錄,我們可以做一系列分析,包括統(tǒng)計(jì)分析,如詞頻統(tǒng)計(jì),發(fā)言次數(shù)統(tǒng)計(jì),發(fā)言長(zhǎng)度統(tǒng)計(jì);內(nèi)容分析,如情感分析,意見挖掘,觀點(diǎn)提取,主題抽取等;對(duì)話生成,可以訓(xùn)練一個(gè)略帶感情的聊天機(jī)器人代替你回復(fù)老板,或者讓它模仿女朋友的說(shuō)話口吻跟你說(shuō)晚安等等??傊?,有了原始數(shù)據(jù),我們可以為所欲為。
- 詞頻統(tǒng)計(jì)(詞云)
- 發(fā)言統(tǒng)計(jì)
- 聊天機(jī)器人
