微信数据库导出并破解

一日闲着没事打算备份一下微信的聊天记录,使用微信电脑端备份没什么问题,一共生成了三个文件:Backup.db,BAK_0_MEDIA,BAK_0_TEXT。到这里一切顺利,直到我打算输出excel时出了问题。Backup.db文件是加密的无法打开,上网找了一些方法都是针对安卓的数据库。当然心大的可以使用现成的破解软件,但需要提供iphone的账号密码用于破解iOS的系统备份命名规则。

虽然有一台安卓手机,但是由于无法root看不到对应的存放文件夹,最后使用的Android虚拟器,并使用微信电脑端将数据再次备份到虚拟器中。这里需要注意两点

  1. 新版本的安卓客户端据说可能修改了存储方式,我是先安装旧的版本6.2.5,并发了一条消息创建了数据库。再更新到最新版本,因为只有新的版本才能备份数据。
  2.  安卓虚拟机安装微信客户端之前需要首先设置好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 }

← Previous post

Next post →

6 Comments

  1. 匿名

    微信6.2.5好像不让登陆了啊。。

  2. 陈毅

    Hi, 文章很赞,我用你的方法破解了EnMicroMsg.db,但是Backup.db一直不成功,能不能付费请教大神一些Backup.db加密算法的细节(想用微信for windows恢复之前的聊天记录一直导入失败),非常感谢!

    • admin

      非常抱歉,我也没有在网上找到直接破解Backup.db的方法,所以采用安卓虚拟机把Backup.db转换为EnMicroMsg.db,详细方法见本文开篇。

  3. 夏心怡

    你好 搜索到您这篇文章 我手头有Backup.db,BAK_0_MEDIA,BAK_0_TEXT折三个文件想付费请您帮我破解一下,如果方便的话请联系我,谢谢。

    • admin

      因为解密操作还需要微信ID,并且需要在虚拟机中登陆来实现数据导入。所以非本人操作会比较不安全,这也是我不愿使用第三方工具的原因。

发表评论

19 + 3 =