Banghao Chi
def157272e
feat: add macos send command
2026-04-24 09:50:16 -05:00
郭立lee
2b5d872f0b
feat(sns): sns-feed / sns-search 输出完整 media[] 字段 ( #15 )
...
在 #14 之上增量:把 sns-feed / sns-search 的 media_count 升级成完整 media[] 数组(含 url/thumb/key/token/md5/enc_idx/size + video_md5/duration),下游可直接做图片代理或离线渲染。
- 用 roxmltree(pure Rust,无 C 依赖)替代 regex 抽属性
- 字段命名对齐 artifacts 仓库 Python _parse_media,跨实现 diff 友好
- 14 个 sns 单测:作者新增 6 个 fixture(单图/三图/视频/纯文字/malformed/缺 totalSize)+ 已有 8 个保持
- 与之前 PR #14 的 --user XML fallback 修复 / SNS_MAX_LIMIT / SNS_MAX_SCAN / escape_like_pattern 完全兼容
Author: leeguooooo <guoli@zhihu.com>
Co-fixed-by: wx-cli-coder (rebase + 冲突解决 + 测试模块合并 + media_count 语义文档补充)
2026-04-19 02:22:55 +08:00
JL
e8939f315d
feat(sns): sns-notifications / sns-feed / sns-search ( #14 )
...
新增 3 个朋友圈相关命令:sns-notifications / sns-feed / sns-search。
PR review 修复(已 push 进同一分支):
- 修 --user 过滤与 XML <username> fallback 打架的 bug(@wx-cli-codex 发现)
- 加 SNS_MAX_LIMIT / SNS_MAX_SCAN 防御性上限
- 抽 escape_like_pattern() helper
- 补 8 个单测(parse_post_xml / escape_like_pattern)
Cargo check 三 target 全过:aarch64-darwin / x86_64-pc-windows-gnu / x86_64-unknown-linux-gnu。
Co-authored-by: fengliu222 <fengliu222@users.noreply.github.com>
2026-04-19 01:58:21 +08:00
郭立lee
f0dcd4ea05
docs(readme): explain how to fetch more than 500 messages ( #13 )
...
Clarify that the 500-message behavior is only a default limit, not a hard cap.
Document `-n/--limit` examples for history, search, and export in both README and SKILL.
2026-04-18 15:01:15 +08:00
JL
e977007306
feat(unread): 按 chat_type 分类会话,新增 --filter ( #9 )
...
Before: wx unread / sessions / history 把公众号、订阅号折叠入口
(brandsessionholder)、折叠群聊(@placeholder_foldgroup)、认证服务号
全归为 is_group=false,与真私聊混在一起。甚至 username 形如 wxid_* 但
实为公众号的条目也完全分不出来。
改动:
- 新增 chat_type_of(username, names) helper,输出固定为
group / official_account / folded / private。
- 判据依次:@chatroom → group;brandsessionholder / @placeholder_foldgroup
→ folded;contact.verify_flag != 0 → official_account(覆盖 wxid_*
伪装为公众号的情况,以及银行/品牌服务号、qqsafe / mphelper 等认证账号);
gh_* / biz_* / @* 前缀兜底;其余为 private。
- load_names 顺带读 contact.verify_flag,Names::is_verified 封装查询。
- q_sessions / q_unread / q_history / q_new_messages / q_stats 输出
新增 chat_type 字段,is_group 保留向后兼容并统一由 chat_type 派生。
- wx unread 新增 --filter,clap value_parser 限制可选值为
all / private / group / official / folded,逗号分隔多选,默认 all。
例:wx unread --filter private,group 可过滤公众号与折叠入口。
- SKILL.md / README.md 补充新字段与用法说明。
- .gitignore 补 target/(Rust 项目标配)。
性能:默认 wx unread 的 SQL 与改动前相同(保留 LIMIT)。仅当传入
--filter 时改为全表扫再 Rust 侧过滤,否则 SQL LIMIT 会先把匹配
filter 的条目截断导致漏召。
2026-04-18 01:59:35 +08:00
jackwener
2c9df70d44
docs: emphasize YAML is more token-efficient, JSON for jq
2026-04-17 11:19:35 +08:00
jackwener
3473f47d1d
docs: use --query instead of -q for clarity
2026-04-17 11:18:32 +08:00
jackwener
e4bfc39c8f
fix: improve task_for_pid error message and document codesign steps
2026-04-17 10:46:55 +08:00
jackwener
69c7a5666c
docs: add acknowledgment for ylytdeng/wechat-decrypt
2026-04-16 23:54:50 +08:00
jackwener
f9bca1f872
docs: add npx skills add instruction
2026-04-16 23:08:57 +08:00
jackwener
e3518956af
chore: rename npm packages to @jackwener scope
2026-04-16 22:41:47 +08:00
jackwener
47d17aeccf
feat: npm wrapper + CI publish, fix README YAML/JSON description
2026-04-16 22:33:53 +08:00
jackwener
6cdc806642
chore: Apache-2.0 license, Windows support, install.ps1
2026-04-16 22:30:45 +08:00
jackwener
6d40c7f737
docs: 重写 README,优化结构和命令展示
2026-04-16 22:24:22 +08:00
jackwener
3e7b4ed8ee
fix: 目录和 pipe 名统一改为 wx-cli(原 wechat-cli)
2026-04-16 15:49:35 +08:00
jackwener
6e599dbe33
docs: README 安装方式增加 cargo install wx-cli
2026-04-16 15:29:39 +08:00
jackwener
79a653b9c6
docs: 重写 README,对齐 Rust 单二进制实现
2026-04-16 15:23:43 +08:00
jackwener
0d0ae22a98
docs: 恢复 ad-hoc 签名为必要前置步骤
2026-04-16 10:11:17 +08:00
jackwener
7610a54073
docs: ad-hoc 签名改为按需可选
2026-04-16 09:30:26 +08:00
jackwener
181472a4ff
docs: 重写 README,对齐 daemon + CLI 架构
2026-04-16 09:13:31 +08:00
ylytdeng
69a2f44240
feat: /api/history 支持按群过滤和增量拉取,更新 README API 文档
...
- /api/history 新增 chat、since、limit 参数
- README 新增 HTTP API 端点说明和联系人标签工具文档
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:43:41 +08:00
joshua-deng
0821dc0e4e
Update README.md
...
加了一个tg群,防失联
2026-03-23 17:25:19 +08:00
joshua-deng
67244597f2
Merge pull request #28 from dsjzazs/feat/auto-install-deps
...
fix: 改为通过 requirements 安装依赖
2026-03-14 22:22:54 +08:00
dsjzazs
7c42ff5d38
Investigate get_chat_history limit
2026-03-14 16:59:17 +08:00
dsjzazs
2e03247fb9
Add MCP dependency and pin versions ( #1 )
2026-03-14 15:13:28 +08:00
dsjzazs
b623711410
Add MCP search unit tests
2026-03-14 14:07:51 +08:00
dsjzazs
4bda20f7aa
feat: 更新 README
2026-03-14 10:24:23 +08:00
dsjzazs
7e7f7a2516
feat: 增强消息查询功能,支持时间范围和分页
2026-03-14 10:21:21 +08:00
dsjzazs
8e8edc649c
fix: 改为通过 requirements 安装依赖
...
README 改为统一使用 requirements.txt 安装依赖,并补充 zstandard 依赖,避免手动漏装。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 16:27:09 +08:00
PeanutSplash
bf77cc97d8
refactor(linux): improve wechat detection and sudo db path fallback
2026-03-07 21:35:24 +08:00
PeanutSplash
6d9b2c0fe4
refactor(find_all_keys): extract shared key scan logic
2026-03-07 21:35:24 +08:00
PeanutSplash
f9c338b48d
feat: add Linux support with cross-platform memory scanning
...
- Add Linux memory scanner (`find_all_keys_linux.py`) using `/proc/<pid>/mem`,
same approach as Windows/macOS — no GDB, no function offsets, no restart needed
- Extract Windows-specific code to `find_all_keys_windows.py`
- Make `find_all_keys.py` a platform dispatcher (Windows / Linux)
- Add `key_utils.py` for cross-platform path matching (`/` vs `\` in all_keys.json)
- Update `config.py` with Linux auto-detection of db_storage paths
- Update all consumers (decrypt_db, monitor, monitor_web, mcp_server) to use
`get_key_info()` for platform-agnostic key lookup
Tested on remote Linux container: 15/15 DBs scanned, decrypted, and verified.
2026-03-07 21:35:24 +08:00
bbingz
03582dd82c
fix: narrow Method 2 scan to hex charset [0-9a-f]
...
Previous range [a-z0-9] was too broad, matching non-hex characters
g-z which wastes CPU on false candidates. WeChat image keys are
lowercase hex strings.
2026-03-07 21:35:00 +08:00
bbingz
0576151b67
feat: add macOS image key scanner and batch decryptor (C)
...
- find_image_key.c: scans WeChat process memory for V2 image AES keys
using Mach VM API + CommonCrypto batch decryption
- decrypt_images.c: batch decrypts V2 .dat image files using keys
from image_keys.json, handles AES-ECB + XOR + raw_data segments
Build: cc -O3 -o find_image_key find_image_key.c -framework Security
cc -O3 -o decrypt_images decrypt_images.c -framework Security
2026-03-07 21:35:00 +08:00
joshua-deng
1294953681
Merge pull request #14 from bbingz/pr/macos-c-scanner
...
核心功能已验证,新增独立文件不影响现有功能。
2026-03-06 09:29:42 +08:00
bbingz
d38d7ebf9c
fix: replace glob() with nftw() and add chunk overlap
...
- glob() does not support ** recursive matching on macOS (POSIX).
Replace with nftw() + opendir to recursively walk db_storage/.
- Add overlap between memory chunks to catch x'...' patterns
spanning chunk boundaries.
2026-03-05 22:02:49 +08:00
bbingz
1f9ca3792a
feat: add macOS C memory key scanner
...
Scans WeChat process memory for SQLCipher encryption keys using
Mach VM API. Outputs all_keys.json compatible with decrypt_db.py.
Build: cc -O2 -o find_all_keys_macos find_all_keys_macos.c -framework Foundation
Usage: sudo ./find_all_keys_macos [pid]
2026-03-05 21:49:00 +08:00
PeanutSplash
6898a065d7
feat: add unified entry point and multi-process key extraction
...
Add main.py as single entry point that auto-detects config, extracts keys, and launches Web UI or decrypts databases in one command.
Refactor find_all_keys to scan all Weixin.exe processes instead of only the largest one, enabling multi=account support.
2026-03-03 22:20:12 +08:00
PeanutSplash
bf68409c39
docs: Updated configuration instructions to automatically detect the WeChat data directory and generate config.json.
2026-03-03 21:43:40 +08:00
ylytdeng
c85367ff08
feat: 富媒体内容解析、表情包显示、组合消息修复
...
- 表情包内联显示: emoticon.db CDN映射 + 下载缓存
- 富媒体内容: 链接卡片/文件/视频号/小程序/引用/位置等完整渲染
- 修复文字+图片组合消息丢失 (前端去重key加消息类型)
- 新增隐藏消息检测: 异步查message DB找回同秒内其他消息
- MonitorDBCache线程安全: per-key锁防并发解密损坏
- Web UI优化: 气泡样式/群聊发送者/图片点击放大
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 11:55:11 +08:00
ylytdeng
24ae180669
Update README with image decryption docs and V2 format details
...
Add usage instructions for image key extraction, file descriptions
for new modules, and technical details of the three .dat encryption
formats (old XOR, V1, V2).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:40:25 +08:00
ylytdeng
05b8ba4d45
Add MCP usage examples with redacted real outputs
2026-02-28 16:58:46 +08:00
joshua-deng
5057206222
Add MCP server for Claude AI integration
...
New mcp_server.py provides 5 tools (get_recent_sessions, get_chat_history,
search_messages, get_contacts, get_new_messages) via FastMCP stdio transport.
Features on-demand decryption with mtime-based caching and WAL support.
2026-02-28 12:22:50 +08:00
joshua-deng
4c91eb34ef
WeChat 4.0 database decryptor and real-time message monitor
...
Extract encryption keys from Weixin.exe process memory, decrypt all
SQLCipher 4 databases, and monitor new messages via Web UI with ~100ms latency.
2026-02-28 12:03:38 +08:00