记微信数据库解密

其实这次折腾和某乎博主目的一样,主要是想把我和她的微信聊天记录导出到文本,以后也可以拿来来看看

查过资料网上也有好几种解决方案,大概有以下几种,我就直接搬运过来了

方法1 设备imei+uin
https://www.zhihu.com/question/19924224/answer/69982884
https://zhuanlan.zhihu.com/p/28935173

方法2 解密CompatibleInfo.cfg
反序列化/data/data/com.tencent.mm/MicroMsg/CompatibleInfo.cfg 文件得到设备id
https://github.com/ppwwyyxx/wechat-dump/issues/42
https://gist.github.com/ChiChou/36556fd412a9e3216abecf06e084e4d9

方法3 利用Xposed
Hook java层openDatabase方法提取解密参数
https://github.com/adamyi/AndroidWechatSQLiteDecrypt

方法4 暴力破解,穷举密码
https://github.com/chg-hou/EnMicroMsg.db-Password-Cracker

其中方法3应该是成功率最高的,但是需要安装xposed框架

我用第一种方法,IMEI+UIN来破解数据库密码

一、准备工作

  1. Android手机,我是mokee系统,已root
  2. 安装WeChat,Root Explorer
  3. 下载数据库浏览工具“sqlcipher.exe”

二、找到微信聊天存储数据库文件”EnMicroMsg.db“

文件位置在:/data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db

三、在”CompatibleInfo.cfg“找到IMEI号

CompatibleInfo.cfg路径:
/data/data/com.tencent.mm/MicroMsg/CompatibleInfo.cfg
打开文件后,在最后面x前面的15位就是IMEI号码。

这里注意,有其它资料说使用手机”*#06#“拨号同样可以看到IMEI号。但并不是这样的,一个手机有多个IMEI,微信所使用的就在”CompatibleInfo.cfg“里可以直接找到,无需其它手段去获取。

四、获取微信uin(user information)号

uin是微信用户信息识别码,每个用户都不一样
uin在/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml 这个xml配置文件里,一共10位数

value后面就是uin

五、将IMEI+UIN进行MD5运算

使用MD5工具将IMEI和UIN进行MD5运算,将摘要取前7位小写作为解开”EnMicroMsg.db“数据库的密码

六、使用”sqlcipher.exe“将”EnMicroMsg.db“打开

通过上面IMEI+UIN MD5已经拿到数据库密码,现在用”sqlcipher.exe“打开,软件可以在网上找到,不建议使用其它数据库管理软件打开,会有问题。

七、导出数据库文件

导出数据库中的表为CSV文件就可以了,下面提供一段查询语句

select datetime(subStr(cast(m.createTime as text),1,10),'unixepoch', 'localtime') as theTime,case m.isSend when 0 then r.nickname when 1 then '我'end as person,m.content from message m inner join rcontact r on m.talker = r.username where m.type=1 and r.nickname = '玖 陆'

当中r.nickname = ’   ‘  单引号里填写对方微信昵称即可,而非wxid。数据库比较大的话查询时间比较久,耐心等待无error即可

记微信数据库解密》有11个想法

    1. BG3IQS 文章作者

      目前微信数据库不受版本限制,找一个root的手机就可以。

      回复
  1. wzyboy

    Android 10 里非系统应用不能获取 IMEI 了。我拿 *#06# 里两个 IMEI 都试了下,都不能解密 EnMicroMsg.db。

    尝试反序列化 /data/data/com.tencent.mm/MicroMsg/CompatibleInfo.cfg 文件,看看微信把啥玩意儿当 IMEI 了,结果发现这文件居然是空的!大小 0 字节……

    回复
    1. BG3IQS 文章作者

      另一种思路,把微信聊天记录导到带root权限的虚拟机里,然后提取文件即可。例如VMOS之类的可以成功。

      回复
      1. a

        这个方法比较可行

        顺便问下,我的数据库4g,打开数据总是奔溃,怎么弄呢

        回复
        1. BG3IQS 文章作者

          4个G有点大,崩溃是正常的,只能换性能好点的手机试试了,再或者导出到X86的安卓系统里试试。

          回复
      2. bs

        大神,请教一个问题,我对代码一窍不通,现在遇到了一个困难,就是我的微信号在冲动之下注销掉了,但是手机里面的聊天记录、好友列表数据都在,我像把数据库破解掉查看一下,按照网上的办法,我将小米手机中相关数据备份到电脑后,在利用方法一的过程中,发现一直都 找不到正确的密码,我自己分析很有可能是因为微信账号无法登录了,导致找到的uin码不是我注销的那个账号的码,所以一直无法得到密码,这种情况是不是只有暴力破解这一个办法了呢?

        回复
        1. BG3IQS 文章作者

          你导出的数据库文件确保有数据(不是空文件),新版版本微信数据库破解密码方式有点区别(和我博客描述的不一样)但大同小异,你搜索下破解方式,祝你成功。

          回复
  2. leeeeegh

    lz你好,我用android-database-sqlcipher这个库去进行解析数据库,部分手机会出现file is not database的错误,有没有其他方案可以在客户端本地进行db文件解析/

    回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注