其实这次折腾和某乎博主目的一样,主要是想把我和她的微信聊天记录导出到文本,以后也可以拿来来看看
查过资料网上也有好几种解决方案,大概有以下几种,我就直接搬运过来了
方法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来破解数据库密码
一、准备工作
- Android手机,我是mokee系统,已root
- 安装WeChat,Root Explorer
- 下载数据库浏览工具“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即可
大神牛逼
微信7 能解吗?
目前微信数据库不受版本限制,找一个root的手机就可以。
Android 10 里非系统应用不能获取 IMEI 了。我拿 *#06# 里两个 IMEI 都试了下,都不能解密 EnMicroMsg.db。
尝试反序列化 /data/data/com.tencent.mm/MicroMsg/CompatibleInfo.cfg 文件,看看微信把啥玩意儿当 IMEI 了,结果发现这文件居然是空的!大小 0 字节……
另一种思路,把微信聊天记录导到带root权限的虚拟机里,然后提取文件即可。例如VMOS之类的可以成功。
这个方法比较可行
顺便问下,我的数据库4g,打开数据总是奔溃,怎么弄呢
4个G有点大,崩溃是正常的,只能换性能好点的手机试试了,再或者导出到X86的安卓系统里试试。
大神,请教一个问题,我对代码一窍不通,现在遇到了一个困难,就是我的微信号在冲动之下注销掉了,但是手机里面的聊天记录、好友列表数据都在,我像把数据库破解掉查看一下,按照网上的办法,我将小米手机中相关数据备份到电脑后,在利用方法一的过程中,发现一直都 找不到正确的密码,我自己分析很有可能是因为微信账号无法登录了,导致找到的uin码不是我注销的那个账号的码,所以一直无法得到密码,这种情况是不是只有暴力破解这一个办法了呢?
你导出的数据库文件确保有数据(不是空文件),新版版本微信数据库破解密码方式有点区别(和我博客描述的不一样)但大同小异,你搜索下破解方式,祝你成功。
我这边也是
lz你好,我用android-database-sqlcipher这个库去进行解析数据库,部分手机会出现file is not database的错误,有没有其他方案可以在客户端本地进行db文件解析/