微信聊天记录导出

本文将介绍如何将微信聊天记录导出为结构化数据

所需材料

  • 一部已经root的安卓手机
  • 带GPU的Linux电脑
    整体流程如下:


数据库文件提取

使用RE管理器,在已经root的安卓手机上,找到如下文件:/data/data/com.tencent.mm/MicroMsg/[weixin_name]/EnMicroMsg.db,(其中[weixin_name]是32位的md5值,如果它有多个值,说明这部手机上登录过多个微信号),将该文件传到电脑上。

破解密码

这个数据库文件进行了加密,密码是7位的小写字母加数字组合,有两种破解的方式

1. 计算的方式

网上有很多方法已经介绍的很详细了,即使用IMEI和微信的uid拼起来计算md5,取前7位,但是我这边测试不通过,有需要的可以参考:微信聊天记录解密并导出

2. 暴力破解方式

使用计算的方式看似比较讨巧,但是比较浪费时间,我的手机IMEI不能复制,需要截图传到QQ/微信识别文字,双卡手机还有两个IMEI,两个都试了均未成功。无意间发现网上介绍有暴力破解的方式,于是打开新世界:提取微信聊天记录。

这个工具https://github.com/whiteblackitty/SQLCipher-Password-Cracker-OpenCL可以实现使用GPU暴力破解数据库密码。

这个配置环境比较麻烦,需要Linux, Python, pip OpenCL,Cuda等等一系列操作,非常恶心。不过对于深度学习er来说,这些都是家常便饭了,直接按照readme装好环境,然后对源码做如下修改:
Lib/pbkdf2-sha1_aes-256-cbc.cl 文件的 752 行 (link) 修改为

  •  ```if(((uint)(data[5] ^ iv[5])==0x40) && ((uint)(data[6] ^ iv[6])==0x20) && ((uint)(data[7] ^ iv[7])==0```
    

运行如下命令,即可开始破解密

  • python Run.py 0

然后你就得到了7位的数据库密码
我用的2080TI显卡,亲测只用5分钟即可遍历完所有可能,实际只用2分钟破解完密码,比前面IMEI+uid计算的方式方便太多。因此,推荐Linux+GPU用户使用暴力破解的方式。

导出为结构化txt

  • 数据库解密:

在ubuntu上安装sqlcipher,目前(2021.12.24)默认安装的3.4.1版本,这个版本可以使用
sudo apt-get install sqlcipher
然后在数据库文件EnMicroMsg.db的目录下,执行如下命令:

sqlcipher EnMicroMsg.db 'PRAGMA key = "yourkey"; 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;

把yourkey换成你的密码,如果有报错,说明密码不对,等待大约两分钟,即可得到解密后的数据库文件decrypted_database.db

  • 聊天记录格式化导出:
    我们使用wechat-dump提供的脚本,将聊天记录按照会话用户名/群聊名称进行整理
  • 复制项目
    git clone [email protected]:ppwwyyxx/wechat-dump.git
  • decrypted_database.db放到wechar-dump文件夹下
  • 执行解析:
    ./dump-msg.py decrypted.db output_dir

然后就可以在output_dir文件夹下看到整理后的聊天记录

其他玩法

根据生成的聊天记录,我们可以做一系列分析,包括统计分析,如词频统计,发言次数统计,发言长度统计;内容分析,如情感分析,意见挖掘,观点提取,主题抽取等;对话生成,可以训练一个略带感情的聊天机器人代替你回复老板,或者让它模仿女朋友的说话口吻跟你说晚安等等。总之,有了原始数据,我们可以为所欲为。

  • 词频统计(词云)
  • 发言统计
  • 聊天机器人

参考资料

  1. 微信聊天记录解密并导出,链接
  2. 提取微信聊天记录,链接
  3. GPU破解密码,链接
  4. wechat-dump,链接

你可能感兴趣的:(微信聊天记录导出)