一日闲着没事打算备份一下微信的聊天记录,使用微信电脑端备份没什么问题,一共生成了三个文件:Backup.db,BAK_0_MEDIA,BAK_0_TEXT。到这里一切顺利,直到我打算输出excel时出了问题。Backup.db文件是加密的无法打开,上网找了一些方法都是针对安卓的数据库。当然心大的可以使用现成的破解软件,但需要提供iphone的账号密码用于破解iOS的系统备份命名规则。
虽然有一台安卓手机,但是由于无法root看不到对应的存放文件夹,最后使用的Android虚拟器,并使用微信电脑端将数据再次备份到虚拟器中。这里需要注意两点:
- 新版本的安卓客户端据说可能修改了存储方式,我是先安装旧的版本6.2.5,并发了一条消息创建了数据库。再更新到最新版本,因为只有新的版本才能备份数据。
- 安卓虚拟机安装微信客户端之前需要首先设置好IMEI,因为无论是数据库文件夹的命名和密码都跟IMEI有关。
虚拟机里操作自然简单了很多,微信聊天数据导入之后找到 /data/data/com.tencent.mm/MicroMsg 文件夹,底下会有像乱码一样很长名字的文件夹,其中又会有一个数据库文件:EnMicroMsg.db。至此破解需要的数据库文件就已经拿到。
下面开始生成数据库的密码,这个需要刚才设置的IMEI和微信的uid。微信uid在登录微信版网页后使用chrome自带的抓包插件chrome://net-internals/#events即可找出,这里需要注意uid可能是负值,需要做无符号数到符号数的转换,即uint32 -> int32。最后将IMEI和uid进行拼接,并做MD5计算,在计算时使用“32位小写”选项,取计算结果的前7位即是数据库文件密码。(没看明白的先别急,后面有流程图展示)
下一步就是解密EnMicroMsg.db,这里又要注意:sqlcipher新版本(3.x)默认不向下兼容。首先从文章最后下载解压sqlcipher,并用cmd定位到sqlcipher所在目录,同时将EnMicroMsg.db放入目录,输入以下语句(KEY用自己的密码替换):
sqlcipher EnMicroMsg.db
PRAGMA key = “KEY“;
PRAGMA cipher_use_hmac = off;
PRAGMA kdf_iter = 4000;
ATTACH DATABASE “decrypted_database.db” AS decrypted_database KEY “”;
SELECT sqlcipher_export(“decrypted_database”);
DETACH DATABASE decrypted_database;
解密输出的速度会比较慢,需要进度条的朋友可以在文件夹中查看decrypted_database.db 文件的大小,最终大小和EnMicroMsg.db近似。
最后用DB Browser for SQLite打开解密后的文件,在浏览数据页面选择message表就可以看到所有的聊天记录。如果只需要导出与某人的聊天记录,在talker中过滤即可。注意有些好友是后来修改的微信号,talker内容还是保持最开始的默认以 wxid_ 开头的名称,需要与聊天内容对应后再过滤。
下面放上一张流程图作为总结,最开始密码生成没看懂的朋友可以看下图:
参考文献:
https://blog.csdn.net/njweiyukun/article/details/54024442
https://blog.csdn.net/wengpanfeng/article/details/78406172
https://blog.csdn.net/f2006116/article/details/51073202
最后给出使用的软件:
安卓虚拟机及IMEI配置文件:
[此处被服务器提供商判断为病毒文件,请自行搜索下载。也可留言邮箱,将通过邮件方式发送]
配置方法见 http://www.droid4x.cn/bbs/forum.php?mod=viewthread&tid=46466
微信6.2.5安卓版:wechat-6-2-5-16-r6928c0f-multi-android
MD5计算:http://tool.chinaz.com/Tools/md5.aspx
sqlcipher工具:sqlcipher_tools-3.0.1
DB.Browser.for.SQLite:DB.Browser.for.SQLite-3.10.1-win64
{ 本文链接: https://www.sy2k.com/2018/%e5%be%ae%e4%bf%a1%e6%95%b0%e6%8d%ae%e5%ba%93%e5%af%bc%e5%87%ba%e5%b9%b6%e7%a0%b4%e8%a7%a3/;
原创文章, 转载请保留. 转载自 https://www.sy2k.com }
丁先生
请问怎么可以联系到你,我手头有这个三个文件BAK_1_MEDIA,BAK_0_MEDIA,BAK_0_TEXT,请问下可以恢复聊天记录吗
winnip
可以发给我一份吗( 安卓虚拟机及IMEI配置文件)
很感兴趣,我也想试试,谢谢
chris
ATTACH DATABASE “decrypted_database.db” AS decrypted_database KEY “”;
运行这个的时候报错
Error: file is encrypted or is not a database
请问如何解决?
江湖李某
楼主大神,女朋友不小心删了我的记录,我自己全部记录都在,有没有什么办法将Backup文件内容修改之后,通过备份与恢复的形式转移到她的手机上呢?求指点🥺
daidai
你好,我想付费求远程指导,备份的都是自己的聊天记录,但分手了互删了加载不回去了,想看。如方便请联系,谢谢。
admin
都分手了就别再回忆了,the show must go on…
PENG
您好,我在2018年备份了一个文件,里面只有三个文件,分别是backup.db, backup.db shm 和 wal 文件大小大约20M,请问有什么方法可以读取里面的聊天记录吗?非常感谢帮助。
Winnie Shen
跪地感谢。之前用的是sqlcipher 2.0,虽然有UI,导出不用使用cmd,但是导出的csv的编码问题无法解决。这篇文章给了sqlcipher 3.x而且还详细讲了使用方法,真的非常感谢!
翁晓晖
大神,我想请问你IPHONE的备份Manifest.db 数据库文件损坏丢失的情况下有办法恢复吗? Iphone的备份文件名全部用哈希算法重命名了文件数量很多很难分析哪些是什么文件
admin
iphone文件备份机制我也不熟,之前也尝试过直接从iphone中导出数据但以失败告终,所以先将数据转移到安卓虚拟机内再进行导出。
匿名
2019 8 19 亲测方法可用 虽然用的是 7.0.6版本微信
另外 网页版微信获取 uin的方法已经失效了 需要在引用的文章中找到 从安卓的SharedPreferences 中获取uin的方法 988444102
在这个字段中
其他的都有效。感谢博主
Lynx
求大神的虚拟机与IMEI配置文件,做一回伸手党,邮箱2019796946@qq.com,十分感谢!
匿名
没有做过安卓,大神可不可有偿帮我弄一下,谢谢啦
匿名
微信6.2.5好像不让登陆了啊。。
陈毅
Hi, 文章很赞,我用你的方法破解了EnMicroMsg.db,但是Backup.db一直不成功,能不能付费请教大神一些Backup.db加密算法的细节(想用微信for windows恢复之前的聊天记录一直导入失败),非常感谢!
admin
非常抱歉,我也没有在网上找到直接破解Backup.db的方法,所以采用安卓虚拟机把Backup.db转换为EnMicroMsg.db,详细方法见本文开篇。
陈毅
好的,我再研究一下,谢谢!
述阳
您好,我最近也在研究如何破解backup.db,想请请教一下您的进展情况~
匿名
backup.db网上有可用的解密方法[看雪上找],我已解开,只是text和media两个文件暂无法解开。
杨喆
看雪能给个链接吗
小A
可以教一下吗?
夏心怡
你好 搜索到您这篇文章 我手头有Backup.db,BAK_0_MEDIA,BAK_0_TEXT折三个文件想付费请您帮我破解一下,如果方便的话请联系我,谢谢。
admin
因为解密操作还需要微信ID,并且需要在虚拟机中登陆来实现数据导入。所以非本人操作会比较不安全,这也是我不愿使用第三方工具的原因。