cocohahaha/wechat-decrypt-macos

GitHub: cocohahaha/wechat-decrypt-macos

macOS 微信聊天记录解密工具,通过从进程内存提取 SQLCipher 密钥实现本地数据库的解密、查询与分析导出。

Stars: 0 | Forks: 0

# wechat-decrypt-macos [![Python](https://img.shields.io/badge/Python-3.9+-blue.svg)](https://python.org) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Platform](https://img.shields.io/badge/Platform-macOS-lightgrey.svg)](https://github.com/cocohahaha/wechat-decrypt-macos) **关键词**: 微信解密 / WeChat Decrypt / 聊天记录备份 / 聊天记录导出 / macOS / SQLCipher / 密钥提取 / 内存取证 / 微信数据库 / WCDB ## 功能特性 - 🔑 从微信进程内存自动提取 SQLCipher 加密密钥 - 🔓 解密并查询微信本地聊天数据库 (message_*.db) - 📊 聊天内容分析 — 消息类型、活跃度、时间分布、情感倾向、高频词 - 📤 导出聊天记录为 JSON / CSV - 🖥️ 支持 Apple Silicon (M1/M2/M3/M4) 和 Intel Mac - 🐍 提供 CLI 命令行工具和 Python API 两种使用方式 ## 工作原理 微信 macOS 版使用 SQLCipher 加密本地聊天数据库。本工具通过以下步骤实现解密: 1. **重签名** — 移除微信的 Hardened Runtime 保护,添加 `get-task-allow` 权限 2. **内存搜索** — 通过 Mach VM API 读取微信进程内存,定位数据库加密密钥 3. **解密查询** — 使用提取的密钥通过 sqlcipher 查询加密数据库 ## 前置条件 - macOS (Apple Silicon / Intel) - Python >= 3.9 - sqlcipher: `brew install sqlcipher` - 微信已安装并登录 ## 安装 pip install . 或直接从源码使用: git clone https://github.com/cocohahaha/wechat-decrypt-macos.git cd wechat-decrypt-macos pip install -e . ## 快速开始 ### 1. 检查环境 wechat-decrypt check ### 2. 重签名微信 (首次使用 / 微信更新后) # 先退出微信 sudo wechat-decrypt resign # 重新启动微信并登录 ### 3. 提取密钥 sudo wechat-decrypt extract-key --save key.txt ### 4. 分析聊天 wechat-decrypt analyze --key $(cat key.txt) wechat-decrypt analyze --key $(cat key.txt) --days 7 --json ### 5. 导出聊天记录 wechat-decrypt export messages.json --key $(cat key.txt) --days 30 wechat-decrypt export messages.csv --key $(cat key.txt) --format csv ## 所有命令 | 命令 | 说明 | 需要 sudo | |------|------|-----------| | `check` | 检查前置条件 | 否 | | `resign` | 重签名微信 | 是 | | `extract-key` | 提取加密密钥 | 是 | | `query` | 执行 SQL 查询 | 否 | | `list-chats` | 列出所有对话 | 否 | | `analyze` | 分析聊天内容 | 否 | | `export` | 导出聊天记录 | 否 | ## Python API from wechat_decrypt import extract_key, WeChatDB, analyze_chats, format_report # 提取密钥 (需要 sudo) key = extract_key() # 查询数据库 db = WeChatDB(key_hex=key) messages = db.get_all_recent_messages(days=7) # 分析 analysis = analyze_chats(db, days=30) print(format_report(analysis)) # 导出 db.export_messages("output.json", days=30, fmt="json") ## 技术细节 - **加密**: SQLCipher 4, `cipher_page_size=4096`, `kdf_iter=256000` - **密钥提取**: 在进程内存中搜索数据库 salt (前 16 字节) → 定位 `codec_ctx` 结构体 → 跟踪指针到 `cipher_ctx` → 提取 32 字节派生密钥 - **消息表**: `Msg_`, 通过 `Name2Id` 表反查联系人 - **内存读取**: 使用 macOS Mach VM API (`task_for_pid`, `mach_vm_read_overwrite`) ## 常见问题 **Q: task_for_pid 失败?** 确保: (1) 使用 sudo 运行 (2) 微信已重签名 (3) 微信正在运行 **Q: 微信更新后密钥提取失败?** 微信更新会覆盖重签名,需要重新执行 `sudo wechat-decrypt resign` **Q: 密钥提取后可以正常使用微信吗?** 可以。密钥提取只是读取内存,不会修改微信运行状态。 ## 兼容性 | 项目 | 支持 | |------|------| | macOS 版本 | Ventura 13+ / Sonoma 14+ / Sequoia 15+ | | 芯片架构 | Apple Silicon (M1/M2/M3/M4) / Intel | | 微信版本 | macOS 微信 (新版 WCDB 格式) | | Python | 3.9+ | ## 免责声明 本工具仅用于备份和分析**自己的**聊天记录。请遵守当地法律法规,不要用于未经授权的数据访问。 ## License MIT
标签:HTTP工具, JSON导出, Linux安全, M1/M2/M3支持, Python, SecList, SQLCipher, WCDB, 云资产清单, 内存取证, 密钥提取, 微信备份, 微信解密, 情感分析, 数字取证, 数据导出, 数据库解密, 文档结构分析, 无后门, 电子取证, 聊天记录分析, 自动化脚本, 进程内存读取, 逆向工具, 逆向工程, 隐私合规