Files
WeChatDataAnalysis/README.md
2977094657 5a8075ca8a docs(readme): 补充索引与密钥使用说明
- 增加 session_preview.db 会话列表加速说明与开关

- 更新媒体密钥获取建议(wx_key)与相关使用提示

- 补充搜索相关截图资源
2025-12-25 20:28:44 +08:00

9.8 KiB
Raw Blame History

微信数据库解密工具

WeChatDataAnalysis - 微信数据库解密与分析工具

一个专门用于微信4.x版本数据库解密的工具

Version Stars Forks License Python FastAPI Vue.js SQLite

界面预览

首页 检测页面
首页 微信检测页面
解密页面 图片密钥(填写)
数据库解密页面 图片密钥(填写)
图片解密页面 解密成功页面
图片解密页面 解密成功页面
聊天记录页面
聊天记录页面
聊天记录导出
聊天记录导出

Note

: 聊天记录页面已支持基础展示与离线导出,更多功能(搜索、高级筛选等)尚在开发中。

功能特性

已实现功能

  • 数据库解密: 支持微信4.x版本数据库文件的解密
  • 多账户检测: 自动检测并处理多个微信账户的数据库文件
  • API接口: 提供RESTful API接口进行数据库解密操作
  • Web界面: 提供现代化的Web操作界面
  • 聊天记录查看: 支持查看解密后的聊天记录(基础功能)
  • 图片资源解密: 支持批量解密微信图片(.dat文件)按MD5哈希存储便于快速访问
  • 聊天图片展示: 支持部分版本图片消息无MD5时通过 file_id 兜底定位本地资源

开发计划

  • 数据分析: 对解密后的数据进行深度分析
  • 数据可视化: 提供图表、统计报告等可视化展示
  • 聊天记录分析: 消息频率、活跃时间、关键词分析等
  • 聊天记录优化: 搜索、导出、高级筛选等功能

项目进展: 查看 GitHub项目面板 了解当前开发状态和后续功能规划

快速开始

1. 克隆项目

git clone https://github.com/2977094657/WeChatDataAnalysis

2. 安装后端依赖

# 使用uv (推荐)
uv sync

3. 安装前端依赖

cd frontend
npm install

4. 启动服务

启动后端API服务

# 在项目根目录
uv run main.py

启动前端开发服务器

# 在frontend目录
cd frontend
npm run dev

5. 访问应用

使用指南

获取解密密钥

在使用本工具之前,您需要先获取微信数据库的解密密钥(以及图片解密所需的密钥)。推荐使用以下工具:

wx_key (推荐)

生成字段配置模板JSON

在完成数据库解密后(默认输出到 output/databases/{账号名}/),可基于实际解密出的数据库结构生成一份可填写的字段说明模板。

前置条件:

  • output/databases/{账号名}/*.db 下已有解密后的数据库文件(通过后端 API 或命令行完成解密)。

运行命令:

uv run generate_config_template.py

输出结果:

  • 在项目根目录生成 wechat_db_config_template.json

接下来:

  • 打开并填写模板中的字段含义(meaning)、表/数据库功能描述(description),以及可选的 message_typesfriend_types 映射示例。
  • 填写完成后,将其另存为根目录下的 wechat_db_config.json(分析脚本默认读取此文件名)。

提示:若未提供 wechat_db_config.json,分析脚本会使用内置的最小默认映射,生成的文档字段含义将较为粗略。

生成数据库表结构文档Markdown

该脚本会扫描解密后的数据库,输出每个数据库与表的结构说明、示例数据以及跨库字段关联分析。

前置条件:

  • output/databases/{账号名}/*.db 下已有解密后的数据库文件 -(可选)根目录存在 wechat_db_config.json,用于提供更准确的字段含义映射

运行命令:

uv run analyze_wechat_databases.py

输出结果:

  • 文档目录:output/docs/database/
  • 主要文件:
    • README.md:总览文档
    • field_relationships.md:跨数据库字段关联分析
    • {数据库名}/README.md:该数据库概览
    • {数据库名}/{表名}.md:各表详细结构、索引、外键、示例数据与建表语句

聊天会话列表加速session_preview.db

聊天页面左侧会话列表需要展示「最后一条消息」,如果每次刷新都去 message_*.db 里做 ORDER BY ... LIMIT 1 会非常慢(尤其是数据量大时)。

本项目会在解密完成后,自动为账号目录生成一次性索引:

  • 索引文件:output/databases/{账号名}/session_preview.db
  • 可通过环境变量关闭:WECHAT_TOOL_BUILD_SESSION_PREVIEW=0

如果你是旧版本已解密的账号目录(没有生成索引),可手动触发一次构建:

curl -X POST "http://localhost:8000/api/chat/session-preview/build?account={账号名}&rebuild=true"

图片资源解密

微信的图片文件(.dat)是加密存储的需要解密后才能正常显示。本工具提供了API接口进行批量解密。

1. 准备图片解密密钥XOR/AES

本项目不再提供密钥提取流程,请使用 wx_key 获取图片密钥后再进行解密。

获取到密钥后,可调用 API 保存(也可在前端「图片密钥」步骤填写并保存):

curl -X POST http://localhost:8000/api/media/keys \
  -H "Content-Type: application/json" \
  -d '{"xor_key":"0xA5","aes_key":"xxxxxxxxxxxxxxxx"}'

提示:aes_key 可选(仅部分图片 V4-V2 需要)。获取不到图片密钥时请参考 wx_key README 的建议流程。

2. 批量解密所有图片

curl -X POST http://localhost:8000/api/media/decrypt_all \
  -H "Content-Type: application/json" \
  -d '{}'

如需临时覆盖密钥,可在 body 中传入 xor_key / aes_key

解密后的图片按MD5哈希命名存储在 resource/{md5前2位}/{md5}.{ext} 路径下,便于快速查找。

3. 获取已解密的图片

# 直接通过MD5获取已解密的图片更快
curl http://localhost:8000/api/media/resource/{md5}

安全说明

重要提醒:

  1. 仅限个人使用: 此工具仅用于解密您自己的微信数据
  2. 密钥安全: 请妥善保管您的解密密钥,不要泄露给他人
  3. 数据隐私: 解密后的数据包含个人隐私信息,请谨慎处理
  4. 合法使用: 请遵守相关法律法规,不得用于非法目的

致谢

本项目的开发过程中参考了以下优秀的开源项目和资源:

主要参考项目

  1. wx_key - 微信数据库与图片密钥提取工具

    • 支持获取微信 4.x 数据库密钥与缓存图片密钥
    • 本项目推荐使用此工具获取密钥
  2. wechat-dump-rs - Rust实现的微信数据库解密工具

    • 提供了SQLCipher 4.0解密的正确实现参考
    • 本项目的HMAC验证和页面处理逻辑基于此项目的实现
  3. oh-my-wechat - 微信聊天记录查看工具

    • 提供了优秀的聊天记录界面设计参考
    • 本项目的聊天界面风格参考了此项目的实现
  4. vue3-wechat-tool - 微信聊天记录工具Vue3

    • 提供了聊天记录展示与交互的实现参考

Star History

Star History Chart

贡献

欢迎提交Issue和Pull Request来改进这个项目。

许可证

本项目仅供学习和个人使用。请遵守相关法律法规。


免责声明: 本工具仅供学习研究使用,使用者需自行承担使用风险。开发者不对因使用本工具造成的任何损失负责。