微信 macOS 聊天记录解密与分析 MCP Server — 让 AI 直接读取和分析你的微信聊天记录
关键词: 微信解密 / WeChat Decrypt / MCP Server / Claude Code / 聊天记录分析 / macOS / SQLCipher / 密钥提取
全新架构:从 CLI 工具升级为 MCP (Model Context Protocol) Server。现在你可以直接在 Claude Code 中对话式地查询和分析微信聊天记录,无需手动输入命令。
⚠️ 现状(2026-06):自动密钥提取在 WeChat 4.x (macOS / WCDB) 上尚未跑通。MCP Server、解密查询、聊天分析等代码均完整可用,前提是已有正确的
key.txt。 但从内存自动提取密钥的extract_key.py目前只在标准 Zetetic SQLCipher 4 库上自测通过。 在实测的 WeChat 4.1.11 (macOS) 上,已尝试 HMAC-SHA512 / SHA256 / SHA1(含大小端)、 salt 原始字节与十六进制串锚点、以及与 HMAC 无关的 AES-256-CBC 头部校验(page_size 与 reserve 多种组合), 扫遍进程可写内存均未能定位到有效密钥——推测微信 WCDB 对内存中的密钥做了混淆或采用了非标准方案。 能给出确切方案的参考工具(0xlane/wechat-dump-rs、sjzar/chatlog)已于 2026-01 被 DMCA 下架。所以:若你已通过其他途径拿到正确的 64 位十六进制密钥,写入
key.txt即可正常使用本工具; 仅靠本仓库的extract_key.py暂时无法在 WeChat 4.x 上自动提取。欢迎 PR 补全 WCDB 的密钥定位逻辑。另注:
extract_key.py/setup_key.sh会用codesign给微信打 ad-hoc 签名以读取进程内存, 这会改变微信的代码身份,破坏其录屏等系统权限与登录态(需重新授权/登录,且微信每次更新都会还原签名)。 在密钥提取确认可行之前,不建议对日常使用的微信执行重签名。
- 🔑 从微信进程内存提取 SQLCipher 加密密钥(
extract_key.py;⚠️ WeChat 4.x 尚未跑通,见上方「现状」) - 🔓 解密并查询微信本地聊天数据库 (message_*.db, contact.db)
- 💬 列出对话、读取消息、搜索关键词、获取最近消息
- 📊 聊天分析 — 消息统计、活跃度、时间分布
- 🤖 MCP 协议 — 可直接被 Claude Code、Cursor 等 AI 工具调用
- macOS (Apple Silicon / Intel)
- Python >= 3.10
- sqlcipher:
brew install sqlcipher - 微信已安装并登录
git clone https://github.com/cocohahaha/wechat-decrypt-macos.git
cd wechat-decrypt-macos
bash install.sh脚本会自动:检查依赖 → 创建虚拟环境 → 安装包 → 注册 MCP Server 到 Claude Code。
git clone https://github.com/cocohahaha/wechat-decrypt-macos.git
cd wechat-decrypt-macos
python3 -m venv .venv
source .venv/bin/activate
pip install -e .微信使用 SQLCipher 加密本地数据库。需要先提取 32 字节十六进制密钥,保存到项目根目录的 key.txt 文件中。
仓库已提供 extract_key.py,自动从微信进程内存定位并校验密钥后写入 key.txt。
# 1. 退出微信
osascript -e 'quit app "WeChat"'
# 2. 重签名微信,移除 Hardened Runtime(首次使用 / 微信更新后需重做;macOS 无需关 SIP)
sudo codesign --force --deep --sign - /Applications/WeChat.app
codesign -dvvv /Applications/WeChat.app # 确认签名显示 (adhoc)、flags 不再含 runtime
# 3. 重新启动微信并登录
open -a WeChat
# 4. 提取密钥(需 sudo:读取其他进程内存需要 root)。成功后自动写入 key.txt
sudo .venv/bin/python extract_key.py原理:微信启动后会把数据库 salt 与 32 字节 SQLCipher 密钥一起放在堆上的 codec_ctx
结构体里。extract_key.py 用 Mach VM API(task_for_pid + mach_vm_read_overwrite)
读取微信进程内存,以 salt(数据库文件头 16 字节)为锚点枚举 32 字节候选,再用
SQLCipher 4 的 page-1 HMAC(纯 Python,hashlib)校验,第一个通过的即为真密钥。
自测校验算法(无需 sudo / 微信):
.venv/bin/python extract_key.py --self-test
社区中有多种微信密钥提取工具可用,例如搜索「微信 macOS SQLCipher 密钥提取」。提取到密钥后,保存到项目根目录的 key.txt 即可。
# 用提取到的密钥校验并核对 server.py 依赖的字段是否都在你这个微信版本里存在
.venv/bin/python inspect_db.pyWeChat 4.x 的表结构没有公开权威参考,inspect_db.py 会用解密后的真实库确认
Name2Id 表与每个 Msg_* 表的 local_id / create_time / local_type / real_sender_id / message_content 字段是否齐全;若字段名有出入,按提示修改
server.py 中对应的 SELECT 即可。
也可直接用 sqlcipher 手动验证:
sqlcipher ~/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files/*/db_storage/message/message_0.db \
"PRAGMA key = \"x'$(cat key.txt)'\"; PRAGMA cipher_compatibility = 4; PRAGMA cipher_page_size = 4096; SELECT count(*) FROM sqlite_master;"
# 如果输出数字(如 5),说明密钥正确推荐方式 — 使用 claude mcp add 命令(user scope,所有项目通用):
claude mcp add -s user wechat /path/to/wechat-decrypt-macos/.venv/bin/python /path/to/wechat-decrypt-macos/server.py例如:
claude mcp add -s user wechat ~/wechat-decrypt-macos/.venv/bin/python ~/wechat-decrypt-macos/server.py如果使用了
bash install.sh安装,脚本会自动完成注册。
手动方式 — 编辑 ~/.claude.json
在 ~/.claude.json 的 mcpServers 中添加:
{
"mcpServers": {
"wechat": {
"type": "stdio",
"command": "/path/to/wechat-decrypt-macos/.venv/bin/python",
"args": ["/path/to/wechat-decrypt-macos/server.py"]
}
}
}| 工具 | 说明 |
|---|---|
wechat_list_chats |
列出所有聊天对话 |
wechat_read_chat |
读取与指定联系人的聊天记录 |
wechat_search_messages |
按关键词搜索消息 |
wechat_recent_messages |
获取最近消息概览 |
wechat_chat_summary |
生成结构化摘要,提取待办和行动项 |
配置完成后,直接在 Claude Code 中用自然语言:
你:帮我看看最近和张三聊了什么
Claude:(自动调用 MCP 工具读取微信数据库,返回聊天摘要)
你:搜索一下我和李四聊天记录中提到"项目"的内容
Claude:(搜索并返回相关消息)
你:分析一下我最活跃的 5 个聊天对话
Claude:(查询数据库,返回统计分析)
MCP 工具默认使用微信 ID 显示联系人。如果你希望显示昵称/备注名,可以创建 contacts.json:
cp contacts.example.json contacts.json
# 编辑 contacts.json,填入你的联系人信息格式参考 contacts.example.json。该文件已在 .gitignore 中,不会被提交。
- 架构: FastMCP Server (单文件
server.py, ~440 行) - 加密: SQLCipher 4,
cipher_page_size=4096,cipher_compatibility=4 - 密钥提取: 在进程内存中搜索数据库 salt → 定位
codec_ctx→ 提取 32 字节派生密钥 - 协议: Model Context Protocol
- 内存读取: macOS Mach VM API (
task_for_pid,mach_vm_read_overwrite)
| 项目 | 支持 |
|---|---|
| macOS 版本 | Ventura 13+ / Sonoma 14+ / Sequoia 15+ |
| 芯片架构 | Apple Silicon (M1/M2/M3/M4) / Intel |
| 微信版本 | macOS 微信 (新版 WCDB 格式) |
| Python | 3.10+ |
| AI 工具 | Claude Code, Cursor, 及任何支持 MCP 的客户端 |
如果觉得有用,请给个 Star ⭐ 让更多人看到!
本工具仅用于备份和分析自己的聊天记录。请遵守当地法律法规,不要用于未经授权的数据访问。
MIT