安卓小白,出于调研“如何迁移微信聊天记录”而去破解了一下安卓机的微信聊天记录数据库文件,这个破解方式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...