Skip to content

Repository files navigation

wechat-decrypt-macos

Python License: MIT Platform MCP

微信 macOS 聊天记录解密与分析 MCP Server — 让 AI 直接读取和分析你的微信聊天记录

关键词: 微信解密 / WeChat Decrypt / MCP Server / Claude Code / 聊天记录分析 / macOS / SQLCipher / 密钥提取

v2.0 — MCP Server 版本

全新架构:从 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-rssjzar/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.py

WeChat 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 Code

推荐方式 — 使用 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.jsonmcpServers 中添加:

{
  "mcpServers": {
    "wechat": {
      "type": "stdio",
      "command": "/path/to/wechat-decrypt-macos/.venv/bin/python",
      "args": ["/path/to/wechat-decrypt-macos/server.py"]
    }
  }
}

MCP 工具列表

工具 说明
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 History

如果觉得有用,请给个 Star ⭐ 让更多人看到!

免责声明

本工具仅用于备份和分析自己的聊天记录。请遵守当地法律法规,不要用于未经授权的数据访问。

License

MIT

About

微信 macOS 聊天记录解密与分析工具 | Decrypt & analyze WeChat chat history on macOS via SQLCipher key extraction from process memory

Topics

Resources

Stars

40 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages