PyWxDump 微信数据导出:从解密到聊天记录备份
【免费下载链接】PyWxDump删库项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump
PyWxDump 是一个微信数据解密与导出工具,把微信本地加密数据库解密,再导出成你能直接浏览的 HTML 或 JSON。适合想给聊天记录存档、或者要换设备迁移记录的新手和普通用户。
你卡在哪
你换了电脑,3 万条微信聊天记录打不开:旧机器里的数据库是加密文件,新机器上根本读不了。你试过程序自带的迁移,要么中断,要么只迁了一部分。PyWxDump 做的是微信数据库解密和聊天记录导出,直接绕开这两步的麻烦。
这篇文章带你从装环境一路做到拿到导出的文件。做完,你会有一份可以逐条翻看、按关键词搜索的本地聊天备份。
先跑起来,3分钟看到结果
最小路径就三步:拿代码、装依赖、跑一条命令。
克隆仓库:
git clone https://gitcode.com/GitHub_Trending/py/PyWxDump cd PyWxDump装依赖:
pip install -r requirements.txt保持微信登录着,跑第一条核心命令(内存扫描拿密钥):
python -m pywxdump bias --auto扫到密钥后会生成config.json。你看到类似"找到密钥:xxxxxxxx"这样的输出,以及配置文件落地,就对了。
装不上怎么办
- 依赖冲突:用虚拟环境隔离,
python -m venv venv再激活后重装 - 权限不足:Linux/Mac 命令前加
sudo,Windows 用管理员终端 - 网络慢:换国内镜像源,
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
它到底在做什么
三步链路:密钥在内存里,不在文件里
把整个过程拆成三层,像剥洋葱:
第一层,加密锁。微信把聊天数据存在本地数据库里,用 AES-256 加密(一种对称加密算法,一把钥匙开一把锁)。文件本身就像上锁的保险箱。
第二层,钥匙在哪。解密密钥只存在微信客户端的运行内存里,就像你手机里的指纹数据:App 不关机,它就在那;一关,就没了。文件里找不到,日志里也没有。
第三层,PyWxDump 干什么。它去扫描运行中微信进程的内存,把密钥找出来(逆向工程定位密钥存放的位置),再用这把钥匙批量解开数据库。
拿到明文数据库后,剩下的就是普通的 SQLite 读取和格式转换,导出成 HTML 或 JSON。
官方方式 vs 本工具
| 对比项 | 官方导出 | PyWxDump |
|---|---|---|
| 数据完整性 | 受迁移流程限制,易中断 | 整库解密,记录完整 |
| 输出格式 | 绑定微信客户端 | HTML / JSON,可自选 |
| 跨设备 | 依赖官方迁移 | 导出文件直接拷贝即可 |
| 过滤能力 | 弱 | 支持时间范围、指定联系人 |
完整工作流:从登录到导出文件
第一步:保持微信登录,扫密钥
你在做什么:让工具拿到解密密钥。微信不运行,密钥就不在内存里。
运行:
python -m pywxdump bias --auto你会看到:密钥被打印出来,config.json出现在项目目录。
如果不对:先确认微信在运行且已登录,再重新执行这条命令。
密钥拿到了,下一步就是用密钥把数据库打开。
第二步:解密整个数据库
运行:
python -m pywxdump decrypt --all你会看到:decrypted目录生成,里面是按库拆开的明文文件。耗时看数据量,从几秒到几分钟。
如果不对:报"解密失败"通常是密钥已失效(比如中途重启过微信)。回到第一步重扫,再跑这步。
数据库明文了,最后一步是导出。
第三步:导出成能直接打开的文件
运行:
python -m pywxdump export --format html你会看到:output目录下多了一个index.html,浏览器打开,按对话逐条翻,还能搜索。
常用过滤参数,按需加在后面:
python -m pywxdump export --format html --start-date 2023-01-01 --end-date 2023-12-31 python -m pywxdump export --format html --target wxid_abc123456加--include-media可以连图片、语音文件一起导。
多账号?分开扫,分开存
一个微信进程对应一份密钥。多账号就逐个切登录,每切一个账号重复"扫描 → 解密 → 导出",导出目录按账号区分开,别混。
扫不到密钥?三步排查
- 重启微信、重新登录,再跑一次
--auto - 换深度扫描:
python -m pywxdump bias --deep,命中位置更全,耗时更长 - 检查微信版本:过老的版本密钥位置可能找不到,建议升到较新版本再试
玩得再深一点
只导你需要的字段
如果你不想把已读状态这类信息带进备份,在config.json里加一段导出字段配置即可:
"export_fields": { "message": true, "sender": true, "timestamp": true, "is_read": false }改完保存,下次导出就按这套字段走。
每天凌晨自动备份
如果需要无人值守,把这个脚本存成backup_wechat.sh:
#!/bin/bash cd /path/to/PyWxDump source venv/bin/activate python -m pywxdump bias --auto || exit 1 python -m pywxdump decrypt --all || exit 1 python -m pywxdump export --format html || exit 1 tar -czf backup_$(date +%Y%m%d).tar.gz output rm -rf decrypted加进 crontab:0 2 * * * /path/to/backup_wechat.sh,每天凌晨 2 点自动扫、解、导、压缩,顺手清掉明文目录。
别踩这些坑
- 扫不到密钥 → 微信没在运行或已注销 → 先登录再扫描,进程在内存里才有钥匙
- 解密报"解密失败" → 密钥已失效,微信重启后内存里的密钥会变 → 先重扫密钥再解密,别反复跑解密命令
- 版本不兼容 → 微信太老,密钥位置识别不了 → 升级微信到较新版本,或先用
--deep试探 - 导出里没有图、没有语音 → 默认只导消息文本 → 加
--include-media重新导出 - 解密文件放哪 →
decrypted里的明文比原文件更敏感,只放自己电脑的加密盘,备份完就删掉 - 三条底线:只处理本人有合法使用权的账号;遵守当地法规;不用于牟利或对外分发解密内容
最后
先备份一份再动真格。用之前去项目 issue 区看一眼当前微信版本的兼容性,别省这一步。
【免费下载链接】PyWxDump删库项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考