微信作为中国最受欢迎的移动即时通讯应用程序,不提供任何导出结构化消息历史记录的方法。
我们对微信消息的存储协议进行了逆向工程,提供了该工具在root后的安卓手机上解密并解析微信消息。它还可以将消息呈现为独立的 html 文件,包括语音消息、图像、表情符号、视频等。
该工具最后一次验证可与最新版本的微信兼容,时间为 2025 年 1 月 1 日。如果该工具适合您,请花点时间将您的手机/操作系统添加到 wiki。
./third-party/compile_silk.sh
构建)pip install -r requirements.txt
。 ./android-interact.sh db
。它可能使用了不正确的用户 ID。/data/data/com.tencent.mm/MicroMsg
的内容找出您的${userid}
。它应该是由十六进制数字组成的 32 个字符长的名称。/data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db
。./decrypt-db.py decrypt --input EnMicroMsg.db
获取微信uin(整数),可能的方式有:
./decrypt-db.py uin
,在/data/data/com.tencent.mm/shared_prefs/
中查找 uindocument.cookie
中获取wxuin=1234567获取您的设备id(正整数),可能的方式有:
./decrypt-db.py imei
实现了一些查找设备 id 的方法。*#06#
使用 uin 和设备 id 的组合解密数据库:
./decrypt-db.py decrypt --input EnMicroMsg.db --imei <device id> --uin <uin>
注意:您可能需要尝试不同的方法来获取设备 ID 并找到可以解密数据库的方法。有些手机可能有多个 IMEI,您可能需要全部尝试。参见#33。该命令将在EnMicroMsg.db.decrypted
转储解密的数据库。
如果上述解密不起作用,您还可以尝试密码破解器来暴力破解密钥。加密密钥不是很强。
将手机上的微信用户资源目录/data/data/com.tencent.mm/MicroMsg/${userid}/{avatar,emoji,image2,sfs,video,voice2}
复制到resource
目录:
./android-interact.sh res
RES_DIR
。对于旧版本的微信,该目录可能是/mnt/sdcard/tencent/MicroMsg/
tar
进行压缩或不进行压缩,然后复制存档会更快,建议使用busybox tar
,因为 Android 系统的tar
可能会在长路径上阻塞。resource
目录: avatar,emoji,image2,sfs,video,voice2
。 (可选)从这里下载表情符号缓存并在wechat-dump
下解压。这将避免在渲染过程中下载太多表情符号。
wget -c https://github.com/ppwwyyxx/wechat-dump/releases/download/0.1/emoji.cache.tar.bz2
tar xf emoji.cache.tar.bz2
解析并转储每个聊天的文本消息(需要解密的数据库):
./dump-msg.py decrypted.db output_dir
列出所有聊天记录(需要解密数据库):
./list-chats.py decrypted.db
生成短信统计报告(需要./dump-msg.py
中的output_dir
):
./count-message.sh output_dir
将一个联系人的消息转储为 html,包含语音消息、表情符号和图像(需要解密的数据库和resource
):
./dump-html.py "<contact_display_name>"
输出文件是output.html
。
检查./dump-html.py -h
以使用不同的路径。
生成的html截图:
请参阅此处的 html 示例。
grep 'TODO' wechat -R