wx-dump-mac

April 21, 2026 · View on GitHub

License: MIT Python 3.9+ macOS

macOS 微信聊天记录导出工具 — 本地解密并浏览你的微信聊天记录。

macOS WeChat data export tool — decrypt and browse your WeChat chat history locally.

免责声明: 本工具仅供个人数据备份使用。请尊重他人隐私,遵守相关法律法规。

⚠️ 注意: 使用本工具需要对微信进行重签名(codesign),这会导致微信的截图、屏幕录制等系统权限失效。使用完毕后请参考文档末尾的恢复指南还原。

功能

  • 密钥提取 — 自动从微信进程内存中提取加密密钥
  • 数据库解密 — 解密微信 SQLCipher 数据库(支持 pysqlcipher3、sqlcipher CLI 和原生 AES-CBC)
  • 聊天浏览 — 浏览聊天记录,支持文字、图片、语音、视频、表情等消息类型
  • 联系人管理 — 查看联系人列表,含头像占位和消息数统计
  • 数据导出 — 支持导出为 HTML、JSON、CSV 或批量 ZIP 压缩包
  • 统计分析 — 消息统计、热门联系人、每日活跃度、消息类型分布
  • 版本支持 — 同时支持微信 3.x 和 4.x macOS 版本

环境要求

  • macOS 10.15+(Catalina 或更高版本)
  • Python 3.9+
  • Node.js 16+(用于构建前端,若 web/dist/ 已存在则可选)
  • Xcode 命令行工具(xcode-select --install
  • GNU coreutils(brew install coreutils
  • macOS 版微信(提取密钥时需要运行)

快速开始

git clone https://github.com/tomqiaozc/wx-dump-mac.git
cd wx-dump-mac
chmod +x start.sh
./start.sh

打开浏览器访问 http://localhost:8899,按照设置向导操作。

手动安装

1. 重签名微信(仅需一次)

提取密钥前,需要对微信进行重签名以允许内存访问:

sudo codesign --force --deep --sign - /Applications/WeChat.app

重签名后需要重启微信

2. 安装 Python 依赖

python3 -m venv venv
source venv/bin/activate
pip install -r py/requirements.txt

提示: 后续所有 python / pip 命令都需要先激活虚拟环境。每次打开新终端需运行 source venv/bin/activate

3. 编译密钥提取工具

cd tools
make
cd ..

4. 构建前端(可选)

cd web
npm install
npm run build
cd ..

5. 提取加密密钥

确保微信正在运行,然后:

cd /path/to/wx-dump-mac
sudo ./tools/find_keys_macos

会在当前目录生成 all_keys.json,包含每个数据库的加密密钥。

6. 启动服务

source venv/bin/activate
python main.py

打开 http://localhost:8899,按照设置向导操作。

工作原理

  1. 微信使用 SQLCipher 加密聊天数据库
  2. 加密密钥保存在微信进程内存中
  3. 本工具扫描内存找到密钥,然后解密数据库
  4. 通过 Web 界面浏览和导出聊天记录

项目结构

wx-dump-mac/
├── py/                     # Python 后端
│   └── wxdump_mac/
│       ├── api/            # FastAPI 服务器 & 路由
│       ├── core/           # 密钥提取、解密、路径检测
│       ├── db/             # 数据库处理(消息、联系人、媒体)
│       └── analyzer/       # 统计分析
├── web/                    # Vue 3 + Element Plus 前端
│   └── src/
│       ├── views/          # Setup, Chat, Contacts, Statistics, Export
│       └── api/            # API 客户端
├── tools/                  # C 密钥提取工具
│   ├── find_keys_macos.c   # 内存扫描器
│   └── Makefile
├── tests/                  # 测试套件(62 个测试)
├── main.py                 # 入口文件
└── start.sh                # 一键启动脚本

安全说明

  • 密钥仅在本地提取,不会发送到任何服务器
  • 所有数据处理都在本机完成
  • 工具需要 sudo 权限访问进程内存

常见问题

task_for_pid failed

  • 使用 sudo 运行
  • 确保微信已重签名:sudo codesign --force --deep --sign - /Applications/WeChat.app
  • 重签名后重启微信
  • 在系统设置 → 隐私与安全性中授权开发者工具权限

pysqlcipher3 安装失败

pysqlcipher3 是可选的。工具可以使用 sqlcipher CLI 或内置的 AES-CBC 解密:

brew install sqlcipher        # 可选,CLI 后端
pip install pycryptodome      # AES-CBC 后端(推荐)

找不到数据库

  • 确保微信已登录且有聊天记录
  • 检查数据路径是否存在:~/Library/Containers/com.tencent.xinWeChat/

开发

# 激活虚拟环境
source venv/bin/activate

# 后端开发
python main.py

# 前端开发(热更新)
cd web && npm run dev

# 运行测试
PYTHONPATH=py python -m unittest discover -s tests -v

API 文档

启动服务后访问 http://localhost:8899/docs 查看 Swagger 交互式文档。

接口方法描述
/api/versionGET获取版本信息
/api/wechat_statusGET检查微信运行状态
/api/extract_keysPOST提取加密密钥
/api/initPOST初始化(解密 + 合并数据库)
/api/user_listPOST获取联系人列表
/api/msg_listPOST获取消息列表
/api/export_csvPOST导出为 CSV
/api/export_jsonPOST导出为 JSON
/api/export_htmlPOST导出为 HTML
/api/export_allPOST批量导出为 ZIP
/api/statisticsPOST获取统计数据

贡献

欢迎贡献!请:

  1. Fork 本仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature
  3. 提交修改(git commit -m 'Add amazing feature'
  4. 推送分支(git push origin feature/amazing-feature
  5. 创建 Pull Request

致谢

本项目基于 wx-dump-plus(baiyajin),适配 macOS 平台并支持微信 4.x 原生密钥提取。

恢复微信原始签名

使用本工具需要对微信重签名,这会导致截图、屏幕录制等系统权限失效。导出完成后,按以下步骤恢复:

方案一:重新安装微信(最简单)

  1. 删除微信:将 /Applications/WeChat.app 拖到废纸篓
  2. Mac App Store官网重新下载安装
  3. 打开微信,系统会重新请求权限,点击授权即可

方案二:重置系统权限(推荐)

  1. 打开 系统设置 → 隐私与安全性 → 屏幕录制
  2. 移除微信,再重新添加
  3. 如果无效,在终端执行:
tccutil reset ScreenCapture com.tencent.xinWeChat
  1. 重新打开微信并授权

提示:恢复原始签名后,find_keys_macos 将无法提取密钥。需要再次导出时,重新执行重签名步骤即可。


License

MIT