大家好,我是机灵鹤。

今天教大家如何破解微信聊天数据库,导出自己的微信聊天记录。

注:以下教程都是基于 windows 操作系统和安卓手机,苹果用户有可能不适用。

1. 准备工作

需要准备以下工具和运行环境。

1.1 安卓模拟器

微信数据库文件位于手机系统目录下,需要 root 后的手机才能访问到。

不过由于 root 手机有一定的技术门槛和变砖风险,而且 root 后手机安全性也会下降,甚至失去保修资格。

所以建议没有搞机经验的新手,使用 root 后的 安卓模拟器 替代。

我这里使用的是 逍遥模拟器

下载地址:https://www.xyaz.cn/

1.2 数据库软件

微信数据库导出以后,需要通过数据库软件 sqlcipher.exe 打开。

下载地址:http://pan.smartcrane.tech/s/rmljbfw5

1.3 安装软件

1. PC 版微信

用来通过备份和恢复聊天记录,将聊天记录转移到已经 root 后的安卓模拟器中,方便后续导出。

下载地址:https://weixin.qq.com/

2. 安卓版微信

在安卓模拟器中,通过应用商店或浏览器,下载并安装 微信。

下载地址:https://weixin.qq.com/

3. re 文件管理器

在安卓模拟器中,通过应用商店或浏览器,下载并安装 re文件管理器

:安装 re 文件管理器,是由于模拟器自带的文件管理器无法打开系统根目录。

1.4 Java 环境

破解微信数据库密码,需要运行一段 java 代码,所以需要安装 java 运行环境。

安装教程:https://www.runoob.com/java/java-environment-setup.html

2. 破解流程

总体流程分为三步:

  1. 进入手机系统目录,将微信聊天数据库拷贝出来
  2. 破解数据库密码
  3. 打开数据库,将聊天记录数据表导出

2.1 导出聊天记录数据库

本节教程讲解在手机未 root 的情况下,如何通过安卓模拟器来导出聊天记录文件。手机已 root 的朋友可以直接跳至 2.1.3 拷贝数据库文件

2.1.1 备份聊天记录至电脑

首先登录 PC 版微信,点击左下角 备份与恢复 ,选择 备份聊天记录至电脑

2.1.2 聊天记录恢复至模拟器

启动安卓模拟器并开启 root 模式。

在模拟器上登录安卓版微信,然后通过 PC 版微信进行聊天记录恢复。

:模拟器登录微信后,PC版微信可能需要重新扫码登录。

2.1.3 拷贝数据库文件

在安卓模拟器中,打开 re文件管理器 软件,进入系统根目录。

此时,我们需要找到两个文件并导出。

首先打开 /data/data/com.tencent.mm/MicroMsg 文件夹。

【这里放一张图】

找到 systemInfo.cfg 文件并导出,这是我们需要找的第一个文件。

【这里放一张图】

然后进入一个名字是一长串随机字母的文件夹中,找到 EnMicroMsg.db 文件并导出,这是我们需要找的第二个文件。

【这里放一张图】

导出文件的方法每个模拟器可能有所差异,这里我使用的逍遥模拟器。

只需要将文件拷贝到共享目录 storage/emulated/0/Download/ 下,即可导出文件,导出的文件在电脑的 下载/逍遥安卓下载 文件夹中。

这里简单解释一下,这两个文件是什么。

  • EnMicroMsg.db :微信聊天记录数据库
  • systemInfo.cfg :微信系统配置文件,可以用它计算得到数据库密码。

2.2 破解数据库密码

打开 sqlcipher.exe ,点击 File -> Open Database 打开 EnMicroMsg.db

可以发现,数据库是加密的,需要输入密码才能打开。

查阅资料后得知,数据库的密码生成规则是:

将手机的 IMEI 值与微信的 uin 值拼接,得到的字符串计算 MD5 ,取 32 位小写值前七位 即为数据库密码。

举个例子:

假设 IMEI1234567890ABCDEFuin123456789,两个值直接拼接后为 1234567890ABCDEF123456789,经过 md5 加密后,其 32 位小写的值为 3a57b96eaf77b124fae97d1ee1e120e4 ,取其前 7 位数 3a57b96,即为数据库密码 。

IMEIuin 值具体代表什么含义我们不需要关心,我们只需要知道,这两个值保存在 systemInfo.cfg 文件中。

下面的代码可以从 systemInfo.cfg 文件中提取出 IMEIuin 值。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Map;
 
public class MapTest {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            // replace with your own path of systemInfo.cfg
            FileInputStream file = new FileInputStream("E:/systemInfo.cfg");
            ObjectInputStream mObjectInputStream = new ObjectInputStream(file);
            Map map = (Map) mObjectInputStream.readObject();
            for (Object key: map.keySet()) {
                System.out.println("key: " + key + ", value: " + map.get(key));
            }
            // System.out.println(map);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

首先创建一个文本,重命名为 MapTest.java,复制上面的代码段到文档里,保存(注意修改代码第 16 行,改成自己的 systemInfo.cfg 文件路径)。

然后打开命令行工具,输入下面的命令,运行

javac MapTest.java
java MapTest

即可打印出 systemInfo.cfg 文件中的键值对信息。

其中,键 1 对应的值为 uin 值,键 258 对应的值为 IMEI 值。

如果没有键 258,则 IMEI 值取默认 1234567890ABCDEF

MD5 值计算:https://md5jiami.bmcx.com/

2.3 聊天数据表导出

经过前一步,我们破解了数据库 EnMicroMsg.db 的密码,成功打开了数据库。

接下来,导出需要的聊天记录数据表。

点击 File -> Export -> Table as CSV file ,然后选择 Table namemessage ,点 Export 按钮完成导出。

设置导出的文件名为 message.csv ,然后保存即可。

聊天记录的 csv 文件可以用 excel 直接打开查看。

至此,我们成功导出了微信的聊天记录文件。

后续你可以将其整理排版成文档留存,也可以写脚本进行数据分析。

具体怎么玩就看你自己的想法了。

3. 参考资料

【1】http://www.javashuo.com/article/p-dyceeqay-nx.html

【2】https://blog.csdn.net/jiezhi2013/article/details/22181771

【3】https://blog.csdn.net/F0ED9cZN4Ly992G/article/details/81517739


欢迎关注公众号【机灵鹤】

我是机灵鹤,一个代码写的不错的程序员。

最后修改:2022 年 01 月 19 日 07 : 28 PM
如果觉得我的文章对你有用,请随意赞赏