Skip to content

小白解密安卓机上微信聊天记录 #3

@psycholali

Description

@psycholali

安卓小白,出于调研“如何迁移微信聊天记录”而去破解了一下安卓机的微信聊天记录数据库文件,这个破解方式2013年就已经有人发表了文章,有兴趣可以去网上搜一搜,这篇文章主要是记录学习历程以及遇到的问题。

##具体过程##
1.聊天记录信息全保存在手机**/data/data目录里。这个目录需要root**之后,手机上才能看到此目录(但是电脑端还是不可直接查看)

2.通过adb连接手机,然后adb shell使用su权限授权/data/data 777权限,然后就可以通过电脑上的android studio里的android device monitor查看此目录结构

3.android device monitor可以选择文件并导出到电脑上,进行进一步查看
image

4.微信聊天记录位置
/data/data/com.tencent.mm/MicroMsg/一串MD5 32位小写格式的文件夹/EnMicroMsg.db里
(这串MD5 32位小写格式的文件夹名是通过mm+uin然后MD5加密而成的)

5.这个EnMicroMsg.db有密码,密码是手机imei+uin 然后进行MD5的32位小写加密,并截取前7位

  • 获取 imei号: 在手机的打电话拨号盘输入*webpack入门必备(二):优化配置 #6#获取
  • 获取 uin:
    方法一:访问/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。

然后网上大部分说这个加密算法是不会变化的(MD5(IMEI+UIN).Substring(0, 7).toLower),因为维系为了兼容以前版本,如果数据库加密算法变动,那么老版本的用户升级到新版本,老版本的数据库解密就会失败的,也就是用户看不到以前的消息内容,那不可能的

6.一般数据库软件像navicat无法打开EnMicroMsg.db,需要专门的处理加解密的数据库软件打开,我用的大部分人推荐的sqlcipher。(这是一个开源的库,听说如果版本不同,使用正确的密码也不能打开,现在使用的是v2.1版本,可以打开

7.成功打开聊天记录信息的数据库,可以看到表结构
image

8.可以去到Browse Date顶部菜单里查看数据数据:

用户基本信息——userinfo表
联系人——rcontact表
聊天记录——message表
已发视频信息——videoinfo2表
已发图片信息——imginfo2表
已发语音信息——voiceinfo2表

然后如果手机微信选择某一条信息删除,然后db就会更新为删除后的表。

参考资料:
https://www.osslab.com.tw/how-decrypt-wechat-sqlite/
https://articles.forensicfocus.com/2014/10/01/decrypt-wechat-enmicromsgdb-database/
https://blog.csdn.net/njweiyukun/article/details/54024442

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions