← 开源
zhuyansen

wx-favorites-report

微信收藏可视化 Claude Code Skill — 从加密 DB 到交互式 HTML 报告的端到端管线

ApplicationsProductivityPython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
644
Star
132
Fork
+1
本周
0
贡献者
创建于 2026-04-16 · 更新于 2026-10-14 · 今日第 15608 名

zhuyansen/wx-favorites-report 排名第 15,608,有 644 个星标。

同类别比较

zhuyansen/wx-favorites-report 排名第 15,608,此处有 8 个同类条目;AgentEra/Agently-Daily-News-Collector 排名第 15,609。

同类别比较
名称排名指标
GeekyWizKid/writing-helper15,595
语言:
TypeScript
星标数:
644
分叉数:
115
简介:
A Next.js-based AI writing assistant supporting multiple LLM APIs (OpenAI, Claude, Gemini, etc.) with rich style customization features to help content creators improve quality and efficiency.
Kylsky/pandora-helper-with-linux-do-oauth15,596
语言:
Java
星标数:
644
分叉数:
49
简介:
支持Linux DO的ChatGPT/Claude/Midjourney/API/Grok 共享平台-后端项目
christian-byrne/audio-separation-nodes-comfyui15,600
语言:
Python
星标数:
644
分叉数:
62
简介:
Separate stems (vocals, bass, drums, other) from audio. Recombine, tempo match, slice/crop audio
nuglifeleoji/Options-Analytics-Agent15,603
语言:
Python
星标数:
644
分叉数:
85
简介:
A sophisticated LangGraph-based agent that automates financial options analysis with real-time data from Polygon.io, smart caching, persistent memory, and professional-grade analysis. Built for traders, analysts, and developers who need intelligent options data processing
AgentEra/Agently-Daily-News-Collector15,609
语言:
Python
星标数:
643
分叉数:
113
简介:
An open-source LLM based automatically daily news collecting workflow showcase powered by Agently AI application development framework.
fspecii/HeartMuLa-Studio15,618
语言:
TypeScript
星标数:
643
分叉数:
104
简介:
Suno-like music generation studio for HeartMuLa/heartlib - AI-powered music creation with reference audio style transfer
langtalks/swe-agent15,619
语言:
Python
星标数:
643
分叉数:
130
简介:
🤖 AI-powered software engineering multi-agent system with researcher and developer agents that automate code implementation through intelligent planning and execution. Built with LangGraph multi-agent workflows
Deep-MI/FastSurfer15,624
语言:
Python
星标数:
642
分叉数:
160
简介:
PyTorch implementation of FastSurferCNN
关键参数与规格
关键参数与规格
参数值
语言Python
类别Applications
子类别Productivity
关键词Claude Code
星标数644
分叉数132
贡献者0
创建日期2026-04-16
更新日期2026-10-14
1 天星标数0
7 天星标数1
排名15,608
上次排名15,421
排名变化-187
7 天星标排名11,065
上次 7 天星标排名11,132
7 天星标排名变化67
总星标排名15,895
上次总星标排名15,869
总星标排名变化-26
README 摘录

微信收藏可视化 (wechat-favorites-viz) 从加密的微信 Mac 本地数据库中提取收藏数据,生成交互式可视化 HTML 报告。 效果预览 报告包含:统计仪表盘、月度趋势、类型分布、来源排行、活跃热力图、词云、标签云,以及可按类

型/标签筛选的收藏浏览区。 截图请打开 后自行截取(数据含个人信息,不宜公开分享截图) 快速开始(macOS) 前置条件 macOS (Apple Silicon 或 Intel) 微信 Mac 4. 9+ Claude Code(推荐,自动执行全流程) 方式一:用 Claude Code 一键执行 Claude 会自动

完成密钥提取、解密、解析、报告生成全流程。 方式二:手动分步执行 Step 1: 安装依赖 Step 2: 准备签名副本 微信 App Store 版有 Hardened Runtime 保护,需要复制一份去掉签名限制: Step 3: 提取加密密钥 关闭当前微信,用 frida 启动

桌面版微信: frida 会 hook 函数,捕获所有 PBKDF2 密钥派生调用。 输出文件: Step 4: 解密数据库 从 frida 日志中找到 favorite. x 不用此格式存密钥 | | 2 | 搜索原始 salt 字节 | 误匹配 | 匹配到 ASCII 字符串不是真密钥 | | 3 | HMAC 暴力验证 (8B对

齐) | 未找到 | 过滤条件跳过了真正位置 | | 4 | 无过滤暴力 (4B对齐) | 未找到 | 密钥经 PBKDF2 派生后存储,不是原始 enc_key | | 5 | DYLD hook / lldb | 被阻止 | macOS SIP + Hardened Runtime | | **6** | **frida + CCKeyDerivationPBKDF** | **成功** | hook 系统 PBKDF2 函数捕获派生过程 | 关键踩坑 **坑 1: SIP 阻止签

名 /Applications 下的微信** 复制到 ~/Desktop 再签名。 **坑 2: sudo 启动微信导致数据目录变成 /var/root** 不用 sudo,以普通用户身份运行 frida。 db 密钥在启动时不加载** 微信只在用户打开「收藏」页面时才加载 favorite. **坑 5: XML 字段名不统一** 文

章标题在 不是 ,聊天记录在 ,视频标题在 内部的 。 **坑

常见问题

记录了多少星标和分叉?

zhuyansen/wx-favorites-report 有 644 个星标和 132 个分叉。

仓库排名是多少?

zhuyansen/wx-favorites-report 排名第 15,608。

记录的语言和类别是什么?

zhuyansen/wx-favorites-report 有 644 个星标,语言为 Python,类别为 Applications。

哪个仓库排名最接近?

zhuyansen/wx-favorites-report 与 AgentEra/Agently-Daily-News-Collector 比较,后者排名第 15,609,有 643 个星标。

README

微信收藏可视化 (wechat-favorites-viz)

从加密的微信 Mac 本地数据库中提取收藏数据,生成交互式可视化 HTML 报告。

效果预览

报告包含:统计仪表盘、月度趋势、类型分布、来源排行、活跃热力图、词云、标签云,以及可按类型/标签筛选的收藏浏览区。

截图请打开 report.html 后自行截取(数据含个人信息,不宜公开分享截图)

快速开始(macOS)

前置条件

  • macOS (Apple Silicon 或 Intel)
  • 微信 Mac 4.x 已登录
  • Python 3.9+
  • Claude Code(推荐,自动执行全流程)

方式一:用 Claude Code 一键执行

# 在 Claude Code 中说:
微信收藏可视化

Claude 会自动完成密钥提取、解密、解析、报告生成全流程。

方式二:手动分步执行

Step 1: 安装依赖

pip3 install frida frida-tools pycryptodome

Step 2: 准备签名副本

微信 App Store 版有 Hardened Runtime 保护,需要复制一份去掉签名限制:

cp -R /Applications/WeChat.app ~/Desktop/WeChat.app
codesign --force --deep --sign - ~/Desktop/WeChat.app

Step 3: 提取加密密钥

关闭当前微信,用 frida 启动桌面版微信:

killall WeChat 2>/dev/null; sleep 2

# 运行 frida hook 脚本(见 SKILL.md 中完整代码)
# 微信启动后:登录 → 打开「收藏」页面 → 等待 60 秒

frida 会 hook CCKeyDerivationPBKDF 函数,捕获所有 PBKDF2 密钥派生调用。

输出文件:/tmp/wechat_frida_keys.log

Step 4: 解密数据库

从 frida 日志中找到 favorite.db 对应的 enc_key(通过 salt 匹配),用 Python 解密:

# favorite.db 路径:
# ~/Library/Containers/com.tencent.xinWeChat/Data/Documents/
#   xwechat_files//db_storage/favorite/favorite.db

# 解密参数: SQLCipher 4
# AES-256-CBC, HMAC-SHA512, PBKDF2 256000 轮, page_size=4096, reserve=80

Step 5: 生成报告

# 解析数据
python3 parse_favorites.py --input favorite_decrypted.db --output data.json

# 生成 HTML 报告
python3 generate_report.py --input data.json --output report.html

# 打开(推荐用 http server)
cd <输出目录> && python3 -m http.server 8765
open http://localhost:8765/report.html

踩坑记录

在实现过程中经历了 6 轮迭代,以下是关键经验:

密钥提取(最难的部分)

尝试 方法 结果 原因
1 C 内存扫描 x'hex' 格式 0 keys WeChat 4.x 不用此格式存密钥
2 搜索原始 salt 字节 误匹配 匹配到 ASCII 字符串不是真密钥
3 HMAC 暴力验证 (8B对齐) 未找到 过滤条件跳过了真正位置
4 无过滤暴力 (4B对齐) 未找到 密钥经 PBKDF2 派生后存储,不是原始 enc_key
5 DYLD hook / lldb 被阻止 macOS SIP + Hardened Runtime
6 frida + CCKeyDerivationPBKDF 成功 hook 系统 PBKDF2 函数捕获派生过程

关键踩坑

坑 1: SIP 阻止签名 /Applications 下的微信 复制到 ~/Desktop 再签名。

坑 2: sudo 启动微信导致数据目录变成 /var/root 不用 sudo,以普通用户身份运行 frida。

坑 3: favorite.db 密钥在启动时不加载 微信只在用户打开「收藏」页面时才加载 favorite.db。frida 运行期间必须手动打开收藏。

坑 4: WeChat 4.x 表结构变化 3.x 用 FavItems + FavDataItem,4.x 改为 fav_db_item 单表,content 是 XML。

坑 5: XML 字段名不统一 文章标题在 不是,聊天记录在 ,视频标题在 内部的 ``。

坑 6: JS 引号嵌套 onerror="this.style.display='none'" 在 Python f-string + JS 模板字符串中会导致语法错误。用 &quot; 替代。

坑 7: file:// 协议下 onclick 不工作 改用 event delegation(addEventListener on parent element)。

坑 8: ECharts 图表间距 图表容器需要明确的 height,否则部分区域渲染为空白。

项目结构

~/.claude/skills/wechat-favorites-viz/
├── SKILL.md                    # Skill 定义(触发词、流程、参数)
└── scripts/
    ├── parse_favorites.py      # 解析器(SQLite/CSV/JSON → 统一 JSON)
    ├── generate_report.py      # 报告生成器(JSON → 单文件 HTML)
    └── demo_data.py            # 模拟数据生成(测试用)

报告功能一览

  • 统计卡片:总数、跨越天数、日均、来源数
  • 亮点发现:最忙日、最爱来源、主力类型
  • 月度趋势:折线 + 面积图
  • 内容类型分布:甜甜圈图
  • 来源 Top 15:水平柱状图
  • 活跃热力图:星期 x 小时
  • 时段分布:小时柱状图、星期柱状图
  • 词云:从标题 + 描述提取关键词
  • 标签云:微信收藏标签
  • 收藏浏览:按类型筛选 + 按标签筛选 + 全文搜索 + 排序 + 分页
  • 详情弹窗:点击卡片查看完整内容、原文链接、来源、标签

已知限制

  • 图片/视频/文件原始内容存在微信 CDN(加密格式),无法在报告中预览
  • 文章缩略图来自微信公众号 CDN,需联网
  • 密钥提取仅支持 macOS,需要 frida
  • 每次微信更新后需要重新签名桌面副本

技术栈

组件 技术
密钥提取 frida 17.x, CCKeyDerivationPBKDF hook
数据库解密 PyCryptodome AES-256-CBC, HMAC-SHA512
数据解析 Python sqlite3 + regex XML
可视化 ECharts 5.x CDN, echarts-wordcloud 2.x
报告格式 单文件 HTML,暗色主题,内联所有依赖
排名相邻
同类项目