视频加载失败

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

1196 字
6 分钟
微信聊天数据库解密与可视化

微信聊天记录包含联系人、会话、文本、图片、文件和时间分布等大量本地数据,但这些信息分散在多个加密数据库中,直接查看和分析并不方便。这个项目把流程拆成了两步:先从正在运行的微信进程中提取并校验数据库派生密钥,再把解密后的 SQLite 副本交给一个只读的本地 Web 面板。

当前版本明确适配 Windows 微信 4.1.9.23 x64。其他版本的内存结构、SQLCipher 参数以及 Weixin.dll 回调签名可能不同,不在现阶段的兼容范围内。

在 GitHub 查看源码

从加密数据库到浏览器面板#

项目只聚焦两项能力:

  1. 从指定的 Weixin.exe 进程中寻找候选密钥,并通过 codec context、数据库页面 HMAC 和 SQLite 结构进行校验。
  2. 以只读方式加载解密副本,在浏览器中查看概览、联系人、会话、聊天列表、媒体、贡献热力图、搜索和设置等页面。

它不包含消息发送、账号自动化或远程托管服务。数据库密钥、明文快照、头像和媒体都默认留在本机。

微信本地数据可视化面板概览页
微信本地数据可视化面板概览页

概览页把分散的数据整理为几个直观区域:消息总数、活跃天数、联系人数量、最近活跃时间、近七天趋势、常聊联系人、消息类型分布、最近消息以及年度活跃热力图。相比直接翻 SQLite 表,这种视图更适合快速了解一份聊天数据快照的整体情况。

架构与数据边界#

整个运行链路可以概括为:

Weixin.exe
|
v
密钥提取与数据库校验
|
v
解密后的 SQLite 快照
|
v
FastAPI 只读数据层
|
v
React + Vite 本地面板

后端使用 FastAPI 连接数据库、解析消息、计算指标并提供本地资源流;前端使用 React、TanStack Query 和 ECharts 完成路由、数据请求、长列表虚拟化与图表展示。前后端默认分别监听 127.0.0.1:8765127.0.0.1:5173,浏览器不会直接打开数据库文件。

数据库连接使用 SQLite 只读 URI,并启用 PRAGMA query_only=ON。目录解密会先在临时目录中完成全部文件的解密和校验,再发布为带快照 ID 的版本;如果其中任一数据库失败,就不会切换当前报告。这样可以避免半成品覆盖上一份可用快照。

可以查看什么#

除概览页外,面板还提供以下视图:

  • 联系人:查看联系人指标、互动排行、关系网络和资料表格。
  • 聊天列表:按真实最新消息排序,并进入单个联系人或群聊的消息时间线。
  • 会话分析:按时间间隔把连续消息划分为 episode,查看会话轮次、摘要和媒体预览。
  • 媒体与资源:整理文件、链接、图片、视频、关键词和可用的 OCR 结果。
  • 贡献热力图:按自然日统计年度消息量,并定位到具体日期。
  • 搜索:搜索消息、联系人和收藏;构建匹配版本的原生 tokenizer 后,可使用微信原生 FTS 数据。
  • 导出:按当前筛选结果导出 CSV、JSON 或 HTML,不回写微信目录。

对于无法解压的正文、缺失的本地资源或不可靠的指标,API 会保留 decodedresource_availablemetric_basis 和快照状态等元数据,而不是用示例内容补齐结果。

最小运行流程#

环境要求包括 Windows 10/11 x64、微信 4.1.9.23 x64、64 位 Python 3.11+,以及 Node.js ^20.19.0>=22.12.0

先克隆仓库并安装依赖:

Terminal window
git clone https://github.com/ssq123123/weixin-db-decrypt-panel.git
cd weixin-db-decrypt-panel
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
npm --prefix frontend ci

登录微信并保持客户端运行,找到持有数据库映射的进程后提取密钥:

Terminal window
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,然后解密账号的数据库目录:

Terminal window
$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

最后启动本地面板:

Terminal window
powershell -ExecutionPolicy Bypass -File .\scripts\dev.ps1

浏览器访问 http://127.0.0.1:5173/overview 即可进入概览页。原生 FTS tokenizer 是可选组件,未构建时不影响数据库解密和大多数非 FTS 页面。

数据提醒: keys.jsondecryption_report.json 和解密后的数据库都包含敏感信息,不要提交到 Git、上传网盘或交给不受信任的服务处理。

项目地址#

项目采用 MIT License,源码、完整安装说明、架构文档、数据表说明和指标定义都在仓库中维护:

https://github.com/ssq123123/weixin-db-decrypt-panel

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

相关文章智能推荐
1
零基础实现微信自动发消息:从 0 到发出第一条文本消息
逆向开发面向小白的微信 PC 4.1.9.23 文本消息发送教程:看懂文件桥、编译 DLL、注入微信、发送到文件传输助手,并学会获取好友 wxid 与排查常见问题。
2
Stripe 协议支付自动化深度拆解:从 HAR 抓包到纯 API 全链路实现
技术分析完整拆解 Stripe 协议支付的技术实现:从浏览器 HAR 抓包逆向 Stripe Checkout Session 全流程,到纯 API 无浏览器实现 ConfirmationToken 创建、PaymentIntent 确认、3DS 验证挑战,再到 TLS 指纹对抗、代理池架构和反欺诈绕过。附 5 套不同技术栈的完整实现源码下载。
3
GPT-5.6-Sol 隐藏模型无限调用指南 - 任意付费账号不消耗额度(2026 年 8 月实测)
AI 工具2026 年 8 月实测,任意 ChatGPT 付费账号(Plus/Pro/Team)通过 Codex 调用隐藏的 gpt-5.6-sol-wm 模型,不消耗额度、不计入消费明细,附完整配置教程
4
虚拟发卡系统回调伪造漏洞全链路拆解 — 从备份文件泄露到批量盗取卡密
漏洞分析深度分析一起针对 ACG-Faka + BEpusdt 的真实攻击事件:攻击者通过两条路径窃取支付密钥——下载 Web 根目录残留的备份文件,或利用 Nginx 配置错误直读 Config.php 源码——进而伪造合法回调通知批量盗取卡密。附官方安全公告、五站实测审计结果与完整防御方案。
5
Gmail Sanitizer 深度拆解:8 步全链路凭据切断的自动化实现
技术分析从 DrissionPage 浏览器自动化到 AES-256-GCM 加密冷库,从 Sudo Gate 循环挑战到 Cloudflare Email Worker 极速接码——完整解析一款 Google 账号全链路凭据切断系统的技术内幕。
随机文章随机推荐
Profile Image of the Author
47工作室
47工作室:记录技术实践与安全研究。
公告
欢迎来到 47工作室!微信:gzs-47
分类
标签
最新动态
站点统计
文章
41
分类
18
标签
170
总字数
125,784
运行时长
0
最后活动
0 天前