[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-70542":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":16,"starSnapshotCount":16,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},70542,"wechat-decrypt","ylytdeng\u002Fwechat-decrypt","ylytdeng","WeChat 4.0 database decryptor - extract keys from memory, decrypt SQLCipher 4 databases, real-time message monitor",null,"https:\u002F\u002Fgithub.com\u002Fylytdeng\u002Fwechat-decrypt","Python",3973,2153,18,25,0,64,208,727,192,109,false,"main","2026-06-12 04:00:56","# WeChat 4.x Database Decryptor\n\n> 💬 **交流群 \u002F 防失联**: [Telegram - t.me\u002Fwechat_decrypt](https:\u002F\u002Ft.me\u002Fwechat_decrypt)\n\n**微信 \u002F 企业微信本地数据库解密 + 数据工具集** (Windows \u002F macOS \u002F Linux)\n\n从运行中的进程内存提取加密密钥,解密 SQLite 加密数据库,衍生出一整套实用工具:\n\n| 能力 | 支持范围 |\n|---|---|\n| 🔓 **数据库解密** | 个人微信 4.0 (SQLCipher 4) + 企业微信 5.x (wxSQLite3 AES-128) |\n| 📡 **实时消息监听** | Web UI (SSE) \u002F 命令行 \u002F MCP Server (Claude AI 集成) |\n| 📦 **批量导出** | 全部聊天 → JSON \u002F CSV \u002F HTML, 含增量 + 日期范围 + dry-run |\n| 🖼️ **图片解密** | V1 \u002F V2 \u002F wxgf 三种 .dat 格式 + 朋友圈缓存 |\n| 🎙️ **语音转录** | SILK → WAV → 文本 (local Whisper \u002F OpenAI \u002F whisper.cpp 三种 backend) |\n| 🪧 **朋友圈** | SnsTimeLine 解析 + 缓存图片解密 + HTML 时间线 |\n| 🖱️ **Windows GUI** | tkinter 界面整合所有功能 + PyInstaller 单 exe 打包 |\n\n---\n\n## ⭐ 快速开始\n\n\u003Cdetails open>\n\u003Csummary>macOS — 最小路径（展开查看）\u003C\u002Fsummary>\n\n```bash\n# 1. 安装依赖\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install -r requirements.txt\nbrew install whisper-cpp           # 语音转录加速（可选，推荐）\n\n# 2. 密钥提取（退出微信后先重签名）\nkillall WeChat\nsudo codesign --force --deep --sign - \u002FApplications\u002FWeChat.app\ncc -O2 -o find_all_keys_macos find_all_keys_macos.c -framework Foundation\nsudo .\u002Ffind_all_keys_macos         # 扫描内存提取密钥\n\n# 3. 解密 + 导出 + 转录\npython3 decrypt_db.py              # 解密所有数据库\npython3 export_all_chats.py -t     # 导出全部聊天并转录语音\n\n# 或一条命令从零到完成：\nmake all\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Windows — 最小路径 (CLI)\u003C\u002Fsummary>\n\n```bash\n# 1. 以管理员身份打开终端\n# 2. 安装依赖\npy -m pip install -r requirements.txt\n\n# 3. 提取密钥 + 解密\npython main.py decrypt\n\n# 4. 批量导出\npython export_all_chats.py\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Windows — Web UI (推荐, 跨平台 + 实时监听)\u003C\u002Fsummary>\n\n```bash\npython monitor_web.py        # → 浏览器自动开 http:\u002F\u002Flocalhost:5678\n```\n\n工具箱 3 个 tab (📱 个人微信 \u002F 🏢 企业微信 \u002F 🔧 工具), 覆盖解密 \u002F 导出 \u002F\n朋友圈 \u002F 语音转 MP3 全部场景, 导出带模态框筛选 (不会一点就跑全量)。\n实时消息监听跟工具箱在同一页面。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Windows — 桌面 GUI \u002F EXE (tkinter, 适合不开浏览器的场景)\u003C\u002Fsummary>\n\n```bash\n# 直接跑桌面 GUI\npython app_gui.py\n\n# 或打包成单 exe 分发给别人 (默认入口 Web UI)\nbuild.bat                    # 输出 dist\u002FWeChatDecrypt.exe\n```\n\n跟 Web UI **共存**, 两者覆盖功能基本一致。tkinter 优点是不依赖浏览器\n(全离线 \u002F 公司机器禁浏览器场景), 缺点是中文渲染糊 + 不跨平台 +\n没远程访问。 详见 [EXE_USAGE.md](.\u002FEXE_USAGE.md)。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Windows — 企业微信 (实验)\u003C\u002Fsummary>\n\n```bash\n# 1. 启动企业微信并登录\n# 2. 提取企微 keys + 解密\npython find_wxwork_keys.py    # 自动检测 Documents\\WXWork\\\u003Cid>\\Data\npython decrypt_wxwork_db.py   # 解密到 wxwork_decrypted\u002F\n\n# 3. (可选) 导出聊天记录\npython export_wxwork_messages.py\n```\n\n仅 Windows 5.x 实测可用。详见技术细节里的「企业微信数据库解密」章节。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Linux — 最小路径\u003C\u002Fsummary>\n\n```bash\n# 1. 安装依赖\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install -r requirements.txt\n\n# 2. 提取密钥（需要 root 或 CAP_SYS_PTRACE）\nsudo python3 main.py decrypt\n\n# 3. 批量导出\npython3 export_all_chats.py\n```\n\n\u003C\u002Fdetails>\n\n---\n\n## 📖 详细指南\n\n### 环境要求\n\n- Python 3.10+\n- 微信 4.x 正在运行\n\n**macOS**:\n- Xcode Command Line Tools: `xcode-select --install`\n- 需要对 `\u002FApplications\u002FWeChat.app` 做 ad-hoc 重签名（允许进程内存读取）\n- 需要 root 权限运行扫描器\n\n**Windows**:\n- 管理员权限（读取进程内存）\n- 微信正在运行\n\n**Linux**:\n- root 权限或 `CAP_SYS_PTRACE`\n- 微信正在运行\n\n### 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n\u003Cdetails>\n\u003Csummary>⚠️ 安装失败？ 点击展开\u003C\u002Fsummary>\n\n**问题：`error: externally-managed-environment` (PEP 668)**\n\nHomebrew Python (3.12+) 和部分 Linux 发行版禁止 `pip install` 直接写入系统 Python 环境。\n\n**解决：使用虚拟环境**\n\n```bash\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate   # 激活虚拟环境\npip install -r requirements.txt\n\n# 后续运行脚本时使用 .venv 中的 Python\n.venv\u002Fbin\u002Fpython3 main.py\n.venv\u002Fbin\u002Fpython3 decrypt_db.py\n```\n\n或使用 Makefile（已配置 `.venv\u002Fbin\u002Fpython3`）：\n\n```bash\nmake setup   # 一键安装所有依赖 + 编译扫描器\nmake decrypt # 等价于 .venv\u002Fbin\u002Fpython3 main.py decrypt\nmake all     # 从密钥提取到导出全部完成\n```\n\nWindows 可改用：\n\n```bash\npy -m pip install --user -r requirements.txt\n```\n\n\u003C\u002Fdetails>\n\n### 配置\n\n程序会自动检测微信数据目录并生成 `config.json`。如果自动检测失败，手动创建：\n\n```json\n{\n    \"db_dir\": \"\u002Fpath\u002Fto\u002Fyour\u002Fwxid\u002Fdb_storage\",\n    \"keys_file\": \"all_keys.json\",\n    \"decrypted_dir\": \"decrypted\",\n    \"wechat_process\": \"WeChat\"\n}\n```\n\n各平台默认路径：\n- macOS: `~\u002FLibrary\u002FContainers\u002Fcom.tencent.xinWeChat\u002FData\u002FDocuments\u002Fxwechat_files\u002F\u003Cwxid>\u002Fdb_storage`\n- Windows: 微信设置 → 文件管理中查看\n- Linux: `~\u002FDocuments\u002Fxwechat_files\u002F\u003Cwxid>\u002Fdb_storage`\n\n### 常用命令\n\n| 用途 | 命令 |\n|------|------|\n| 提取密钥（macOS） | `sudo .\u002Ffind_all_keys_macos` |\n| 提取密钥（Windows\u002FLinux） | `python find_all_keys.py` |\n| 解密全部数据库 | `python decrypt_db.py` |\n| 启动 Web UI（实时消息） | `python main.py` |\n| 批量导出聊天记录 | `python export_all_chats.py` |\n| 批量导出 + 语音转录 | `python export_all_chats.py --with-transcriptions` |\n| 转录单个文件语音 | `python transcribe_chat.py input.json [output.json]` |\n| 注册 MCP Server（Claude） | `claude mcp add wechat -- python \u002Fpath\u002Fto\u002Fmcp_server.py` |\n\n### Web UI\n\n`python main.py` 启动后打开 http:\u002F\u002Flocalhost:5678 查看实时消息流。\n\n- 30ms 轮询 WAL 文件变化\n- SSE 实时推送到浏览器\n- 图片消息内联预览\n\n#### HTTP API\n\n| 端点 | 说明 |\n|------|------|\n| `GET \u002Fapi\u002Fhistory` | 最近消息列表 |\n| `GET \u002Fapi\u002Fhistory?chat=群名` | 按会话过滤 |\n| `GET \u002Fapi\u002Fhistory?since=1712000000` | 增量拉取 |\n| `GET \u002Fapi\u002Ftags` | 联系人标签 |\n| `GET \u002Fstream` | SSE 实时消息推送 |\n\n### MCP Server（Claude AI 集成）\n\n将微信数据查询能力接入 Claude Code，让 AI 直接读取你的微信消息。\n\n**注册：**\n\n```bash\nclaude mcp add wechat -- python \u002Fpath\u002Fto\u002Fmcp_server.py\n```\n\n**可用工具：**\n\n| 工具 | 功能 |\n|------|------|\n| `get_recent_sessions(limit)` | 最近会话列表 |\n| `get_chat_history(chat_name, limit, offset, start_time, end_time)` | 聊天记录 |\n| `search_messages(keyword, chat_name, limit, offset, ...)` | 搜索消息 |\n| `get_contacts(query, limit)` | 联系人搜索 |\n| `get_contact_tags()` | 联系人标签 |\n| `get_voice_messages(chat_name)` | 语音消息列表 |\n| `decode_voice(chat_name, local_id)` | 解码语音为 WAV |\n| `transcribe_voice(chat_name, local_id)` | 转录语音为文字 |\n\n### ⚠️ 语音转录\n\n`export_all_chats.py -t`、`transcribe_chat.py` 和 `transcribe_voice` MCP 工具共享同一套转录配置。\n\n**后端对比：**\n\n| 后端 | 速度 | 隐私 | 依赖 | 配置 |\n|------|------|------|------|------|\n| `local`（默认） | CPU，较慢 | 数据不出本机 | `pip install -r requirements.txt` | 无需配置 |\n| `openai` | API，最快 | 语音上传至 OpenAI | `pip install openai` | 需 `openai_api_key` |\n| `whisper_cpp` | Metal GPU，3-5x | 数据不出本机 | `brew install whisper-cpp` + 模型 | 自动检测 |\n\n**配置方式（config.json）：**\n\n```json\n{\n    \"transcription_backend\": \"whisper_cpp\"\n}\n```\n\n启用 whisper_cpp 前需安装：\n\n```bash\nbrew install whisper-cpp\n# 模型自动检测常见路径，或手动下载：\n# curl -L -o ~\u002Fwhisper-models\u002Fggml-base.bin https:\u002F\u002Fhuggingface.co\u002Fggerganov\u002Fwhisper.cpp\u002Fresolve\u002Fmain\u002Fggml-base.bin\n```\n\n**注意事项：**\n- 首次启用 openai 或 whisper_cpp 时会打印一行提示\n- openai 缺 key 时静默回退 local\n- whisper_cpp 二进制未找到时静默回退 local\n- 切换后端后旧缓存自动失效并重新转录\n\n### 图片解密\n\n微信 4.0 的 .dat 图片文件使用三种加密格式之一：\n\n| 格式 | 时期 | 加密方式 |\n|------|------|---------|\n| 旧 XOR | ~2025-07 | 单字节 XOR |\n| V1 | 过渡期 | AES-ECB + XOR |\n| V2 | 2025-08+ | AES-128-ECB + XOR |\n\nmacOS 图片密钥从磁盘 kvcomm 缓存派生，无需扫描进程内存：\n\n```bash\npython find_image_key_macos.py\n```\n\n密钥自动保存到 `config.json`，之后 Web UI 自动显示图片预览。\n\n### Makefile 命令\n\n```bash\nmake setup      # 全自动：venv → pip install → brew install → 编译扫描器 → 配置\nmake build      # 编译 macOS 密钥扫描器\nmake keys       # 提取密钥（需要 root）\nmake decrypt    # 解密全部数据库\nmake web        # 启动 Web UI\nmake all        # 从零到完成：setup → keys → decrypt → export\nmake status     # 显示当前数据状态\nmake clean      # 交互式清理：选择删除 decrypted \u002F exported_chats \u002F 临时文件\nmake help       # 列出所有命令\n```\n\n---\n\n## 文件说明\n\n文件按功能分组,方便定位。\n\n\u003Cdetails open>\n\u003Csummary>\u003Cb>① 入口 \u002F 一键脚本\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `main.py` | **CLI 总入口** — 子命令 `decrypt` \u002F `export` \u002F `all` \u002F `status` \u002F `decode-images` \u002F `help` |\n| `monitor_web.py` | **Web UI 总入口 (推荐)** — 浏览器界面: 实时监听 + 8 个工具按钮 + 导出筛选模态框, 也是 PyInstaller 单 exe 的入口 |\n| `app_gui.py` | **桌面 GUI (备用)** — tkinter 界面, 跟 Web UI 功能基本对齐, 适合不开浏览器场景 |\n| `setup.sh` | 一键安装依赖 (macOS \u002F Linux \u002F Windows Git Bash) |\n| `setup.py` | 交互式配置向导 (`python setup.py --check` 仅检查环境) |\n| `cleanup.py` | 磁盘清理工具 (`status` 查看用量 \u002F `--dry-run` 预览) |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>② 密钥提取 (从进程内存)\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `find_all_keys.py` | 平台分发入口 (Windows \u002F Linux) |\n| `find_all_keys_windows.py` | Windows: 扫 Weixin.exe 内存找 SQLCipher raw key |\n| `find_all_keys_linux.py` | Linux: 同上, 走 \u002Fproc\u002F\u003Cpid>\u002Fmem |\n| `find_all_keys_macos.c` | macOS: C + Mach VM API (需 codesign + 重签 WeChat.app) |\n| `find_image_key.py` | 从进程内存提取图片 AES 密钥 (Windows \u002F Linux) |\n| `find_image_key_macos.py` | macOS: 从磁盘 kvcomm 缓存推算 (无需进程在线) |\n| `find_image_key_monitor.py` | 持续监控模式 (Windows) |\n| `find_wxwork_keys.py` | **企业微信 5.x** wxSQLite3 raw key 提取 (cipher 结构体扫描) |\n| `key_scan_common.py` \u002F `key_utils.py` | 扫描器共用工具 |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>③ 数据库 \u002F 图片 \u002F 语音解密\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `decrypt_db.py` | 全量解密 SQLCipher 4 数据库 (支持 `-i` 增量) |\n| `decode_image.py` | 图片 `.dat` 解密 (V1 \u002F V2 \u002F 旧 XOR), 含 `aligned_aes_block_size` 公共 helper |\n| `decrypt_wxwork_db.py` | **企业微信** wxSQLite3 AES-128 数据库解密 |\n| `decrypt_sns.py` | **朋友圈缓存图片**解密 (V1 \u002F V2 \u002F XOR) |\n| `wxwork_crypto.py` | 企业微信 wxSQLite3 per-page 加密原语 (MD5 派生 + AES-128-CBC) |\n| `batch_decrypt_images.py` | CLI: 任意目录递归批量解 .dat |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>④ 导出 (JSON \u002F CSV \u002F HTML)\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `export_all_chats.py` | 批量导出全部聊天为 JSON (含 `-t` 转录 \u002F `-i` 增量 \u002F 日期范围 \u002F `--dry-run`) |\n| `export_chat.py` | 单会话 JSON 导出 (供 `export_all_chats` 调用) |\n| `chat_export_helpers.py` | JSON 导出共享格式化函数 (避免漂移) |\n| `export_messages.py` | CSV \u002F HTML \u002F JSON 三种格式导出, 图片可内联 (PR #107) |\n| `export_wxwork_messages.py` | 企业微信版导出 (CSV \u002F HTML \u002F JSON) |\n| `export_sns.py` | 朋友圈 SnsTimeLine 导出 (JSON + HTML 时间线) |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>⑤ 实时监听 \u002F 服务\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `monitor_web.py` | (见 ① 入口) — 同一个文件既是 Web UI 总入口也是实时消息监听 |\n| `monitor.py` | 命令行实时监听 |\n| `mcp_server.py` | **MCP Server** — Claude AI 查询微信数据 (含 `get_chat_history` \u002F `decode_voice` \u002F `decode_refer` 等 20+ 工具) |\n| `decode_transfer.py` | CLI: 查单条转账消息 (mcp_server `decode_transfer` 工具的命令行包装) |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>⑥ 语音 \u002F 音频\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `transcribe_chat.py` | 语音转文本 (local Whisper \u002F OpenAI \u002F whisper.cpp 三 backend) |\n| `voice_to_mp3.py` | SILK_V3 → MP3 (需要 ffmpeg in PATH) |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>⑦ 打包 \u002F 配置 \u002F 文档\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 文件 | 说明 |\n|---|---|\n| `config.py` | 配置加载器 (自动检测微信数据目录, 支持打包后 exe 路径) |\n| `config.json` | 配置文件 (首次运行自动生成) |\n| `WeChatDecrypt.spec` | PyInstaller 打包描述 |\n| `build.bat` | Windows 一键打包为单 exe |\n| `requirements.txt` | Python 依赖 |\n| `EXE_USAGE.md` | GUI \u002F EXE 使用说明 |\n| `Makefile` | 常用命令快捷方式 (`make all` \u002F `make clean` \u002F `make status`) |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>⑧ 测试 \u002F 文档\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 路径 | 说明 |\n|---|---|\n| `tests\u002F` | 单元测试 (185+ 用例, 含 wxsqlite3 \u002F image v2 \u002F msg types \u002F pagination 等) |\n| `docs\u002F` | 部署 \u002F 排错指南 + 字段研究报告 |\n| `latency_test.py` | 开发工具: 测量消息从 WeChat 写入到我们检测的延迟 |\n\n\u003C\u002Fdetails>\n\n---\n\n## 🔧 技术细节\n\n### 原理\n\n微信 4.0 使用 SQLCipher 4 加密本地数据库：\n- **加密算法**: AES-256-CBC + HMAC-SHA512\n- **KDF**: PBKDF2-HMAC-SHA512, 256,000 iterations\n- **每个数据库有独立的 salt 和 enc_key**\n\nWCDB (微信的 SQLCipher 封装) 会在进程内存中缓存派生后的 raw key，格式为 `x'\u003C64hex_enc_key>\u003C32hex_salt>'`。三个平台均可通过扫描进程内存匹配此模式，再通过 HMAC 校验 page 1 确认密钥正确性。\n\n#### 安全提示\n\n- `all_keys.json` \u002F `wxwork_keys.json` 包含明文 raw key,落盘时已 `chmod 0600`(Unix)或保留默认 ACL(Windows)。**勿提交到 git 或与人共享**——拿到 key 等于拿到全部聊天解密能力。\n- 解密后的 `.db` 文件是明文 SQLite,内容包括所有联系人、群、消息,**同样需要小心备份和分享**。\n\n### 朋友圈解密的 XML 安全\n\n`export_sns.py` 解析 SnsTimeLine 的 XML 时已加 **XXE 防护**(拒绝 `\u003C!DOCTYPE>` \u002F `\u003C!ENTITY>` + 200KB 大小上限),避免恶意朋友圈 XML 通过 entity expansion 或外部实体引用执行 SSRF \u002F 读取本地文件。`mcp_server.py` 解析其他类型 appmsg XML 同样有这层保护。\n\n### GUI 工具箱 (Web UI 推荐 + tkinter 备用, 共存)\n\n项目提供 **两套 UI 共存**, 用户按场景选:\n\n#### Web UI (`monitor_web.py`) — 推荐\n\n```bash\npython monitor_web.py        # → 浏览器自动开 http:\u002F\u002Flocalhost:5678\n```\n\n右上角 🛠️ 工具 按钮展开 3 个 tab:\n\n- **📱 个人微信**: Step 1 解密 \u002F 图片密钥 → Step 2 导出聊天 \u002F 批量解图片 \u002F 朋友圈\n- **🏢 企业微信**: Step 1 解密 → Step 2 导出聊天 (CSV\u002FHTML\u002FJSON)\n- **🔧 工具**: 语音转 MP3 等\n\n特点:\n- **导出筛选模态框**: 不会一点就跑全量, 弹框选会话 (含搜索\u002F全选\u002F选最近 30 天)\n- **任务终止**: 按钮变红 🛑, 一点立刻 SIGTERM 子进程\n- **跟实时监听共存**: 同一页面下方就是消息流, 互不影响\n- **跨平台 + 远程可访问**: 浏览器渲染清晰, 默认 bind 0.0.0.0 同局域网可用\n\n#### 桌面 GUI (`app_gui.py`) — 备用\n\n```bash\npython app_gui.py            # 直接弹 tkinter 窗口, 不开浏览器\n```\n\n适合: 公司机器禁浏览器 \u002F 全离线场景 \u002F 喜欢传统桌面应用的用户。\n功能跟 Web UI 基本对齐 (8 个按钮覆盖解密\u002F导出\u002F朋友圈\u002F企微\u002F语音),\n但中文字体下渲染较糊, Windows-only。\n\n#### 打包为单 exe\n\n```bash\npip install pyinstaller\nbuild.bat                    # → dist\\WeChatDecrypt.exe (~20MB)\n```\n\n**单 exe 默认入口是 Web UI** (双击 → 自动开浏览器), 因为 Web UI 体验更好。\n要打包成 tkinter 入口的话改 `WeChatDecrypt.spec` 里的 `Analysis(['monitor_web.py'])`\n为 `Analysis(['app_gui.py'])` 再 `build.bat`。\n\n> 语音转 MP3 需要系统安装 [FFmpeg](https:\u002F\u002Fffmpeg.org\u002Fdownload.html) 并加入 PATH。\n\n详细说明见 [EXE_USAGE.md](EXE_USAGE.md)。\n\n### WAL 处理\n\n微信使用 SQLite WAL 模式，WAL 文件是**预分配固定大小** (4MB)。检测变化时：\n- 不能用文件大小（永远不变）\n- 使用 mtime 检测写入\n- 解密 WAL frame 时需校验 salt 值，跳过旧周期遗留的 frame\n\n### 图片 .dat 加密格式\n\n微信本地图片 (.dat) 有三种加密格式：\n\n| 格式 | 时期 | Magic | 加密方式 | 密钥来源 |\n|------|------|-------|---------|---------|\n| 旧 XOR | ~2025-07 | 无 | 单字节 XOR | 自动检测 (对比 magic bytes) |\n| V1 | 过渡期 | `07 08 V1 08 07` | AES-ECB + XOR | 固定 key: `cfcd208495d565ef` |\n| V2 | 2025-08+ | `07 08 V2 08 07` | AES-128-ECB + XOR | 从进程内存提取 |\n\nV2 文件结构: `[6B signature] [4B aes_size LE] [4B xor_size LE] [1B padding]` + `[AES-ECB encrypted] [raw unencrypted] [XOR encrypted]`\n\n### 企业微信数据库解密 (实验)\n\n企业微信 Windows 5.x 的本地数据库不是普通微信 SQLCipher 4 格式，而是 wxSQLite3 AES-128-CBC：\n\n- 16 字节 raw key\n- 每页按 page index + `sAlT` 派生 AES key\n- 每页 IV 由 page index 派生\n- 无 SQLCipher HMAC \u002F reserve 区\n\n提取并解密：\n\n```bash\npython find_wxwork_keys.py\npython decrypt_wxwork_db.py\npython export_wxwork_messages.py\n```\n\n如果自动提取失败但你已有 raw key，也可以直接传入 32 位 hex key：\n\n```bash\npython decrypt_wxwork_db.py --key 00112233445566778899aabbccddeeff\n```\n\n配置项：\n\n```json\n{\n    \"wxwork_db_dir\": \"C:\\\\Users\\\\\u003C用户>\\\\Documents\\\\WXWork\\\\\u003Caccount_id>\\\\Data\",\n    \"wxwork_keys_file\": \"wxwork_keys.json\",\n    \"wxwork_decrypted_dir\": \"wxwork_decrypted\",\n    \"wxwork_export_dir\": \"wxwork_export\"\n}\n```\n\n### 数据库结构\n\n解密后包含约 26 个数据库：\n- `session\u002Fsession.db` - 会话列表 (最新消息摘要)\n- `message\u002Fmessage_*.db` - 聊天记录\n- `contact\u002Fcontact.db` - 联系人\n- `media_*\u002Fmedia_*.db` - 媒体文件索引\n- 其他: head_image, favorite, sns, emoticon 等\n\n## macOS 数据库密钥扫描 (WeChat 4.x)\n\nmacOS 版微信 4.x 使用 SQLCipher 4 加密本地数据库，密钥格式为 `x'\u003C64hex_key>\u003C32hex_salt>'`。C 版扫描器通过 Mach VM API 扫描微信进程内存提取密钥。\n\n### 前置条件\n\n- macOS (Apple Silicon \u002F Intel)\n- WeChat 4.x (macOS 版)\n- Xcode Command Line Tools: `xcode-select --install`\n- 微信需要 ad-hoc 签名（或安装了防撤回补丁）：\n  `sudo codesign --force --deep --sign - \u002FApplications\u002FWeChat.app`\n\n### 编译和使用\n\n```bash\n# 编译\ncc -O2 -o find_all_keys_macos find_all_keys_macos.c -framework Foundation\n\n# 运行（自动查找微信进程、扫描内存、匹配 DB salt）\nsudo .\u002Ffind_all_keys_macos\n\n\u003Cdetails>\n\u003Csummary>点击展开\u003C\u002Fsummary>\n\n#### 2025-03-03 — 富媒体内容 & 组合消息修复\n- 表情包内联显示\n- 富媒体内容解析（链接卡片、文件、视频号、小程序等）\n- 文字+图片组合消息不再丢失\n- 隐藏消息检测机制\n- Web UI 改进\n\n\u003C\u002Fdetails>\n\n### 免责声明\n\n本工具仅用于学习和研究目的，用于解密**自己的**微信数据。请遵守相关法律法规，不要用于未经授权的数据访问。\n\n> 💬 交流 \u002F 防失联: [t.me\u002Fwechat_decrypt](https:\u002F\u002Ft.me\u002Fwechat_decrypt) (顶部也有)\n","该项目是一个微信4.0数据库解密工具，可以从运行中的进程内存中提取加密密钥，并解密使用SQLCipher 4加密的SQLite数据库。它还提供了一系列实用功能，如实时消息监听、批量导出聊天记录至JSON\u002FCSV\u002FHTML格式、图片解密、语音转录以及朋友圈解析等。该工具支持个人微信和企业微信的数据处理，适用于需要对微信数据进行分析或备份的场景。项目采用Python编写，具有跨平台特性（支持Windows、macOS及Linux），并通过tkinter提供了图形用户界面版本，方便不同需求的用户使用。",2,"2026-06-11 03:32:45","trending"]