[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-84060":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":9,"trendingCount":14,"starSnapshotCount":14,"syncStatus":15,"lastSyncTime":26,"discoverSource":27},84060,"wx-cli","pandorafuture\u002Fwx-cli","pandorafuture","WeChat macOS database decryption and query tool",null,"Rust",54,41,51,0,2,3,7,4.87,"MIT License",false,"main",true,[],"2026-06-12 02:04:37","# wx-cli\n\nWeChat macOS 数据库解密与查询工具。支持通过 `key extract`（LLDB hook）提取密钥，解密并查询 WeChat 4.1.7.x \u002F 4.1.8.x 的 Apple SEE 加密 SQLite 数据库。\n\n## 支持范围\n\n- **平台**：macOS（arm64 \u002F Apple Silicon）\n- **WeChat 版本**：4.1.7.x \u002F 4.1.8.x\n\n## 前置条件\n\n密钥提取**需要 SIP 关闭**（SIP enabled 时 `task_for_pid` 被内核拒绝，即使 root 也不行），通常不需要 sudo。如果你已有密钥，可以跳过 SIP 要求，直接用 `key set` 手动录入。\n\n`key extract`（LLDB 方式）还需要：\n\n1. `sudo DevToolsSecurity -enable`\n2. `sudo dscl . append \u002FGroups\u002F_developer GroupMembership $USER`\n3. `xcode-select --install`（提供 `lldb` 和 `python3`）\n\n## 安装\n\n### 从 Release 下载（推荐）\n\n前往 [Releases](https:\u002F\u002Fgithub.com\u002Fpandorafuture\u002Fwx-cli\u002Freleases\u002Flatest) 下载预编译二进制（macOS arm64），或使用命令行：\n\n```bash\n# 下载最新 release\ncurl -fSL \"$(curl -fsSL https:\u002F\u002Fapi.github.com\u002Frepos\u002Fpandorafuture\u002Fwx-cli\u002Freleases\u002Flatest \\\n  | grep -o '\"browser_download_url\": \"[^\"]*macos-arm64[^\"]*\"' \\\n  | cut -d'\"' -f4)\" -o wx-cli.tar.gz\ntar xzf wx-cli.tar.gz\n\n# 安装到 PATH\nmkdir -p ~\u002F.local\u002Fbin\nmv wx-cli ~\u002F.local\u002Fbin\u002F\nchmod +x ~\u002F.local\u002Fbin\u002Fwx-cli\nwx-cli --version\n```\n\n### 从源码构建\n\n```bash\n# 需要 Rust 工具链（rustup 安装即可）\ncargo build --release\n```\n\n编译产物位于 `target\u002Frelease\u002Fwx-cli`。\n\n### 部署二进制\n\n```bash\nmkdir -p ~\u002F.local\u002Fbin\ncp target\u002Frelease\u002Fwx-cli ~\u002F.local\u002Fbin\u002Fwx-cli\nchmod +x ~\u002F.local\u002Fbin\u002Fwx-cli\n\n# 确保 PATH 包含该目录\necho 'export PATH=\"$HOME\u002F.local\u002Fbin:$PATH\"' >> ~\u002F.zshrc\nsource ~\u002F.zshrc\n\nwx-cli --version\n```\n\n\n### AI 编程助手集成\n\n本项目提供 [Agent Skill](https:\u002F\u002Fskills.sh)，安装后 Claude Code、Codex、Cursor 等 AI 编程助手可直接协助查询微信数据：\n\n```bash\nnpx skills add pandorafuture\u002Fwx-cli\n```\n\n## 使用\n\n### 1. 检查环境\n\n```bash\nwx-cli doctor       # 检查 SIP、DevToolsSecurity、_developer 组、LLDB\u002Fpython3\nwx-cli status       # 查看 WeChat 运行状态和所有账号密钥\u002F缓存状态\n```\n\n### 2. 提取密钥\n\n```bash\n# LLDB hook 提取密钥 — 会重启 WeChat，通常不需要 sudo\nwx-cli key extract --timeout 120\n\n# 查看已保存的密钥\nwx-cli key list\n```\n\n`key extract` 通过 LLDB hook 捕获 PBKDF2 调用获取原始密钥，覆盖所有数据库。\n\n手动设置密钥：\n\n```bash\nwx-cli key set \u003Caccount> \u003C64-hex-key>          # 数据库密钥\nwx-cli key set-image \u003Caccount> \u003Cimage-key>     # 图片密钥\n```\n\n### 3. 解密数据库\n\n```bash\nwx-cli decrypt                # 自动解密到缓存目录\nwx-cli decrypt --incremental  # 增量解密（只处理变化的文件）\n\n# 手动指定路径和密钥\nwx-cli decrypt -k \u003C64位hex密钥> -d \u002Fpath\u002Fto\u002Fxwechat_files\u002F\u003Caccount_dir> -o \u002Ftmp\u002Fdecrypted\n```\n\n### 4. 查询聊天记录\n\n```bash\nwx-cli sessions --limit 10             # 最近会话\nwx-cli contacts --search 张三           # 搜索联系人\nwx-cli query 张三 --limit 20            # 查某人的消息\nwx-cli search 周末 --limit 20           # 全局关键词搜索\nwx-cli query 张三 --type text           # 按消息类型过滤\nwx-cli query 周末爬山群                  # 群聊消息\nwx-cli export 张三 -o \u002Ftmp\u002Fexport --all --format json  # 导出会话\nwx-cli watch --poll --poll-ms 3000      # 实时监听新消息\n```\n\n如果本机已启动 `server run` 服务，查询命令会自动复用 REST API（默认探测 `http:\u002F\u002F127.0.0.1:9100`）。可用 `--no-server` 强制本地查询，或 `--server-only` 强制远程。\n\n### 5. 媒体解密\n\n```bash\nwx-cli decode-image input.dat -d \u003Caccount_data_dir> -o output.png     # 解密图片\nwx-cli decode-image \u002Fpath\u002Fto\u002Fdat_dir\u002F -d \u003Caccount_data_dir> -o \u002Ftmp\u002F  # 批量解密\nwx-cli media extract-voice --media-dir \u003Cdir> \u003Csvr_id> -o voice.mp3    # 提取语音（需 ffmpeg）\nwx-cli media decrypt-video encrypted.bin --seed 2105122989 -o video.mp4  # 解密视频号视频\n```\n\n### 6. HTTP API 服务\n\n```bash\nwx-cli server run                              # 启动（默认 127.0.0.1:9100）\nwx-cli server run --host 0.0.0.0 --token mysecret  # 远程访问（必须设 token）\nwx-cli server status                           # 查看状态\nwx-cli server stop                             # 停止\nwx-cli server restart                          # 重启\n```\n\nREST 端点：`\u002Fapi\u002Fv1\u002Fhealth`、`\u002Fapi\u002Fv1\u002Fsessions`、`\u002Fapi\u002Fv1\u002Fcontacts`、`\u002Fapi\u002Fv1\u002Fmessages`、`\u002Fapi\u002Fv1\u002Fsearch`、`\u002Fapi\u002Fv1\u002Fmedia`、`\u002Fapi\u002Fv1\u002Fevents`（SSE）。\n\n所有查询命令加 `--format json` 可获取 JSON 格式输出。\n\n## 命令一览\n\n| 命令 | 说明 |\n|------|------|\n| `wx-cli status` | 查看 WeChat 运行状态 |\n| `wx-cli doctor` | 检查环境（SIP 等） |\n| `wx-cli key extract` | LLDB hook 提取密钥 |\n| `wx-cli key list` | 查看已保存密钥 |\n| `wx-cli key set \u003Caccount> \u003Ckey>` | 手动设置密钥 |\n| `wx-cli key set-image \u003Caccount> \u003Cimage-key>` | 手动设置图片密钥 |\n| `wx-cli decrypt` | 解密数据库 |\n| `wx-cli sessions` | 最近会话列表 |\n| `wx-cli contacts --search \u003C名字>` | 搜索联系人 |\n| `wx-cli query \u003C联系人>` | 查询消息 |\n| `wx-cli search \u003C关键词>` | 全局搜索 |\n| `wx-cli export \u003C联系人>` | 导出会话 |\n| `wx-cli watch` | 实时监听新消息 |\n| `wx-cli decode-image \u003C路径>` | 解密图片 |\n| `wx-cli media extract-voice` | 提取语音 |\n| `wx-cli media decrypt-video` | 解密视频号视频 |\n| `wx-cli server run` | 启动 HTTP API 服务 |\n| `wx-cli server status\u002Fstop\u002Frestart` | 管理服务 |\n| `wx-cli paths` | 查看所有数据路径 |\n| `wx-cli info \u003Cdb>` | 查看数据库加密状态 |\n\n## Contact Hiding\n\n按账号隐藏指定联系人、群聊或带特定标签的联系人。启用后，查询、导出、监控等命令默认应用隐藏规则（全文搜索除外）。\n\n配置文件：`~\u002FLibrary\u002FApplication Support\u002Fwx-cli\u002Fconfig\u002Fsettings.toml`\n\n```toml\n[accounts.\"\u003Caccount_id>\"]\nignore_contacts = [\"wxid_xxx\", \"12345@chatroom\"]\nignore_tags = [\"同事\", \"客户\"]\n```\n\n本地命令支持 `--show-hidden` 忽略隐藏规则查看完整结果。`search` 当前不会自动应用隐藏配置。\n\n## 文件路径\n\n| 类别 | 路径（macOS） | 用途 | 可删除？ |\n|------|---------------|------|----------|\n| Config | `~\u002FLibrary\u002FApplication Support\u002Fwx-cli\u002Fconfig\u002F` | 密钥、设置 | 否（先备份） |\n| Cache | `~\u002FLibrary\u002FCaches\u002Fwx-cli\u002F` | 解密后数据库 | 可（重新 decrypt） |\n| State | `~\u002FLibrary\u002FApplication Support\u002Fwx-cli\u002Fstate\u002F` | 服务运行时元数据 | 可 |\n| Logs | `~\u002FLibrary\u002FLogs\u002Fwx-cli\u002F` | 服务日志 | 可 |\n| Temp | `$TMPDIR\u002Fwx-cli\u002F` | 密钥提取临时文件 | 可 |\n\n使用 `wx-cli paths` 查看所有路径。清理缓存：`rm -rf ~\u002FLibrary\u002FCaches\u002Fwx-cli\u002F`。\n\n## 项目结构\n\n```\nwx-cli\u002F\n├── crates\u002F\n│   ├── wx-decrypt\u002F     # 核心解密库（KDF、逐页解密、整库解密）\n│   ├── wx-keychain\u002F    # 密钥提取（LLDB hook）与本地存储\n│   ├── wx-cli\u002F         # CLI 入口\n│   ├── wx-db\u002F          # 数据库查询（联系人、消息、会话、群聊）\n│   ├── wx-media\u002F       # 媒体解密（图片、语音、视频）\n│   ├── wx-monitor\u002F     # 实时消息监听与增量监控\n│   ├── wx-context\u002F     # 账号解析、解密缓存、联系人解析\n│   └── wx-paths\u002F       # 平台路径管理\n```\n\n## 常见问题\n\n### `key extract` 超时\n\n- 确认 WeChat 已弹出登录界面并完成登录\n- 增加超时：`--timeout 300`\n- 检查日志：`$TMPDIR\u002Fwx-cli\u002Flldb\u002Fwx_cli_lldb_output.txt`\n\n### SIP \u002F DevToolsSecurity 报错\n\n密钥提取需要 SIP 关闭。重启进入恢复模式执行 `csrutil disable`，然后运行 `wx-cli doctor` 逐项检查。\n\n### 解密后数据库无法打开\n\n- `wx-cli key list` 确认密钥正确\n- `wx-cli info \u003Cdb>` 检查文件是否为加密状态\n- 确认 WeChat 版本在 4.1.7.x \u002F 4.1.8.x 范围内\n","2026-06-11 04:12:13","CREATED_QUERY"]