安卓小白,出於調研「如何遷移微信聊天記錄」而去破解了一下安卓機的微信聊天記錄數據庫文件,這個破解方式2013年就已經有人發表了文章,有興趣能夠去網上搜一搜,這篇文章主要是記錄學習歷程以及遇到的問題。android
1.聊天記錄信息全保存在手機/data/data目錄裏。這個目錄須要root以後,手機上才能看到此目錄(可是電腦端仍是不可直接查看)算法
2.經過adb鏈接手機,而後adb shell使用su權限受權/data/data 777權限,而後就能夠經過電腦上的android studio裏的android device monitor查看此目錄結構sql
3.android device monitor能夠選擇文件並導出到電腦上,進行進一步查看shell
4.微信聊天記錄位置:
/data/data/com.tencent.mm/MicroMsg/一串MD5 32位小寫格式的文件夾/EnMicroMsg.db裏
(這串MD5 32位小寫格式的文件夾名是經過mm+uin而後MD5加密而成的)數據庫
5.這個EnMicroMsg.db有密碼,密碼是手機imei+uin 而後進行MD5的32位小寫加密,並截取前7位。微信
方法一:訪問/data/data/com.tencent.mm/MicroMsg/*/system_config_prefs.xml,獲取其中name="default_uin" value="([0-9]+)"的value字段值uin。(我用的這個,有效)
方法二:也能夠打開wx.qq.com網頁版,查找.wx.qq.com域的cookie,其中wxuin字段的值就是uin。(試過,密碼錯誤,好像和正負數有關)
方法三:也能夠用backup.tar裏的apps/com.tencent.mm/sp/system_config_prefs.xml。cookie
而後網上大部分說這個加密算法是不會變化的(MD5(IMEI+UIN).Substring(0, 7).toLower),由於維繫爲了兼容之前版本,若是數據庫加密算法變更,那麼老版本的用戶升級到新版本,老版本的數據庫解密就會失敗的,也就是用戶看不到之前的消息內容,那不可能的app
6.通常數據庫軟件像navicat沒法打開EnMicroMsg.db,須要專門的處理加解密的數據庫軟件打開,我用的大部分人推薦的sqlcipher。(這是一個開源的庫,據說若是版本不一樣,使用正確的密碼也不能打開,如今使用的是v2.1版本,能夠打開ide
7.成功打開聊天記錄信息的數據庫,能夠看到表結構學習
8.能夠去到Browse Date頂部菜單裏查看數據數據:
用戶基本信息——userinfo表 聯繫人——rcontact表 聊天記錄——message表 已發視頻信息——videoinfo2表 已發圖片信息——imginfo2表 已發語音信息——voiceinfo2表
而後若是手機微信選擇某一條信息刪除,而後db就會更新爲刪除後的表。
參考資料:
https://www.osslab.com.tw/how...
https://articles.forensicfocu...
https://blog.csdn.net/njweiyu...