微信聊天数据库解密与可视化

微信聊天记录包含联系人、会话、文本、图片、文件和时间分布等大量本地数据,但这些信息分散在多个加密数据库中,直接查看和分析并不方便。这个项目把流程拆成了两步:先从正在运行的微信进程中提取并校验数据库派生密钥,再把解密后的 SQLite 副本交给一个只读的本地 Web 面板。
当前版本明确适配 Windows 微信 4.1.9.23 x64。其他版本的内存结构、SQLCipher 参数以及 Weixin.dll 回调签名可能不同,不在现阶段的兼容范围内。
从加密数据库到浏览器面板
项目只聚焦两项能力:
- 从指定的
Weixin.exe进程中寻找候选密钥,并通过 codec context、数据库页面 HMAC 和 SQLite 结构进行校验。 - 以只读方式加载解密副本,在浏览器中查看概览、联系人、会话、聊天列表、媒体、贡献热力图、搜索和设置等页面。
它不包含消息发送、账号自动化或远程托管服务。数据库密钥、明文快照、头像和媒体都默认留在本机。

概览页把分散的数据整理为几个直观区域:消息总数、活跃天数、联系人数量、最近活跃时间、近七天趋势、常聊联系人、消息类型分布、最近消息以及年度活跃热力图。相比直接翻 SQLite 表,这种视图更适合快速了解一份聊天数据快照的整体情况。
架构与数据边界
整个运行链路可以概括为:
Weixin.exe | v密钥提取与数据库校验 | v解密后的 SQLite 快照 | vFastAPI 只读数据层 | vReact + Vite 本地面板后端使用 FastAPI 连接数据库、解析消息、计算指标并提供本地资源流;前端使用 React、TanStack Query 和 ECharts 完成路由、数据请求、长列表虚拟化与图表展示。前后端默认分别监听 127.0.0.1:8765 和 127.0.0.1:5173,浏览器不会直接打开数据库文件。
数据库连接使用 SQLite 只读 URI,并启用 PRAGMA query_only=ON。目录解密会先在临时目录中完成全部文件的解密和校验,再发布为带快照 ID 的版本;如果其中任一数据库失败,就不会切换当前报告。这样可以避免半成品覆盖上一份可用快照。
可以查看什么
除概览页外,面板还提供以下视图:
- 联系人:查看联系人指标、互动排行、关系网络和资料表格。
- 聊天列表:按真实最新消息排序,并进入单个联系人或群聊的消息时间线。
- 会话分析:按时间间隔把连续消息划分为 episode,查看会话轮次、摘要和媒体预览。
- 媒体与资源:整理文件、链接、图片、视频、关键词和可用的 OCR 结果。
- 贡献热力图:按自然日统计年度消息量,并定位到具体日期。
- 搜索:搜索消息、联系人和收藏;构建匹配版本的原生 tokenizer 后,可使用微信原生 FTS 数据。
- 导出:按当前筛选结果导出 CSV、JSON 或 HTML,不回写微信目录。
对于无法解压的正文、缺失的本地资源或不可靠的指标,API 会保留 decoded、resource_available、metric_basis 和快照状态等元数据,而不是用示例内容补齐结果。
最小运行流程
环境要求包括 Windows 10/11 x64、微信 4.1.9.23 x64、64 位 Python 3.11+,以及 Node.js ^20.19.0 或 >=22.12.0。
先克隆仓库并安装依赖:
git clone https://github.com/ssq123123/weixin-db-decrypt-panel.gitcd weixin-db-decrypt-panel
python -m venv .venv.\.venv\Scripts\python.exe -m pip install -r requirements.txtnpm --prefix frontend ci登录微信并保持客户端运行,找到持有数据库映射的进程后提取密钥:
Get-Process Weixin | Select-Object Id, ProcessName, Path
.\.venv\Scripts\python.exe .\decrypt\wechat_db_decrypt.py extract ` --pid <PID> ` --output .\data\db_decrypt\keys.json正常退出微信,让数据库完成 checkpoint,然后解密账号的数据库目录:
$SourceDbRoot = '<path-to-wechat-data>\wxid_xxx_abcd\db_storage'
.\.venv\Scripts\python.exe .\decrypt\wechat_db_decrypt.py decrypt ` $SourceDbRoot ` --account 'wxid_xxx' ` --keys .\data\db_decrypt\keys.json ` --output-dir .\data\db_decrypt\all ` --report .\data\db_decrypt\decryption_report.json最后启动本地面板:
powershell -ExecutionPolicy Bypass -File .\scripts\dev.ps1浏览器访问 http://127.0.0.1:5173/overview 即可进入概览页。原生 FTS tokenizer 是可选组件,未构建时不影响数据库解密和大多数非 FTS 页面。
数据提醒:
keys.json、decryption_report.json和解密后的数据库都包含敏感信息,不要提交到 Git、上传网盘或交给不受信任的服务处理。
项目地址
项目采用 MIT License,源码、完整安装说明、架构文档、数据表说明和指标定义都在仓库中维护:
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!














