WeChatMsg 全解析:微信聊天记录如何从加密数据库变成 HTML、Word 和年度报告
【免费下载链接】WeChatMsg提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg
你电脑里的微信聊天记录,其实锁在一个打不开的加密数据库里。WeChatMsg 就是干这件事的工具:找回密钥、解密本地数据库,把聊天记录批量导出为 HTML、Word、CSV,再生成年度聊天报告。下面拆解它跑起来的三个机制:密钥查找与解密、数据库解析与关联、多格式导出与报告渲染。
全景:从加密数据库到年度报告的完整流水线
一句话概括整条流水线:输入是 Windows 版微信在本地存放的加密 SQLite 数据库文件,处理分四步——查密钥、解密、解析关联、渲染输出,输出是可浏览的 HTML 会话页、可搬走的 CSV/Word 文档,以及一份统计好的年度聊天报告。
| 阶段 | 输入 | 做什么 | 输出 |
|---|---|---|---|
| 解密 | 加密的EnMicroMsg.db | 查找密钥,逐页解密 SQLite | 明文数据库 |
| 解析 | 明文数据库 + 联系人库 | pandas 读取会话表,ID 关联昵称 | 结构化聊天记录 |
| 导出 | 结构化数据 | 模板渲染 / 表格落盘 | HTML、CSV、Word |
| 分析 | 结构化数据 | 计数、聚合、按天统计 | 年度聊天报告 |
这四步是严格的因果链:拿不到明文,后面全无从谈起;拿到结构化数据,导出和报告只是"换一种画法"。下面逐个拆开。
机制一:密钥查找——只有 6 位已知的 7 位密码锁怎么开 🔐
问题:微信 PC 版用 SQLCipher(对 SQLite 文件逐页加密的扩展)保护本地数据库,你把.db文件拷出来也打不开——没有密钥,文件就是一堆乱码。
拆解:密钥一共 7 个字节,其中前 6 个字节就"写在"微信 PC 版的注册表条目(wcpay项)里,只有最后 1 个字节是隐藏的。于是"破解"退化成一次小搜索:把最后一个字节从 0 到 255 各试一遍,共 256 个候选。每换一个候选,就拿数据库的第一页试解密,看解出来是不是SQLite format 3这个标准文件头——相当于试密码锁时听"咔哒"一声。命中即真,整库解密落盘。入口extract.py启动后做的第一件事就是它。
所以呢:这一步把"不可解"的加密问题缩小成 256 次有限尝试,是整个项目一切后续处理的前提。
机制二:数据库解析与关联——把 ID 变回昵称,把密文变回文字 📒
问题:拿到明文数据库后,数据仍是"半加密"状态。会话记录按对话分表存放(每个会话一张Msg_表),表里的对象只是一个 ID 字符串,文字消息内容还经过一层固定替换表混淆。
拆解:这一层做两件事:
- 关联:用
pandas(Python 的表格处理库)逐表读取时间戳、收发标识、消息类型等字段,再拿另一个联系人数据库MicroMsg.db里的通讯录把 ID 翻译成昵称——就像成绩单上只有学号,得对着花名册才能知道是谁。 - 还原:文字消息内容按一张固定的 SBox 替换表做 XOR 运算(两个对应位异或还原原字节),把混淆内容逐字节"翻译"回可读文本。
所以呢:这一层把"加密字节"变成"谁在何时对谁说了什么"的结构化数据,是导出和报告共同消费的中枢——数据质量到此定型。
机制三:多格式导出与年度报告——一份数据,三种出口 📊
问题:用户想要的交付物不一样:要能翻着看的网页、能导走的表格、能打印的文档,还想要一份"年度总结"。
拆解:同一个结构化数据集被三种"渲染器"处理:
| 出口 | 方式 | 适合场景 |
|---|---|---|
| HTML | 模板按会话逐页渲染,附索引页 | 长期留档、随时翻阅 |
| CSV / Word | pandas 直接落表、python-docx 生成文档 | 归档、打印、二次处理 |
| 年度报告 | 在数据上做聚合统计(总字数、消息条数、按天分布、最常聊天对象等),渲染成单页网页报告 | 回顾与分享 |
这像一个编辑部"一次采访、多端分发":稿子只写一遍,长文、图表、海报各出一版。顺带一提,项目 README 说明 2024 年度报告的代码在独立仓库维护,2025 年度报告计划回到本项目中实现。
所以呢:导出与报告只是同一份数据的不同画法,新增一种格式等于加一个渲染器,维护成本很低。
上手指南:三条命令跑通 WeChatMsg 导出流程 🚀
git clone https://gitcode.com/GitHub_Trending/we/WeChatMsg cd WeChatMsg && pip install -r requirements.txt python extract.py几个关键项速查:
| 关键项 | 说明 | 注意 |
|---|---|---|
| 微信 PC 登录状态 | 解密的是本机登录账号的本地数据库 | 需在 Windows 版微信所在机器上运行 |
-w参数 | 多账号登录时指定要提取的 wxid(微信唯一标识) | 不指定时默认取第一个找到的账号 |
| 输出目录 | HTML、CSV、Word 统一生成在本地输出目录 | 生成后建议整体备份留档 |
此项目很久没有(也不会)更新了(未来也许会考虑截图+OCR实现,也许一年或许十年)
——README 里有这句实话,使用前提仍是"能读到本机旧版微信 PC 的本地数据库",若微信调整存储格式,流程可能失效,跑之前先确认账号版本。
收尾:WeChatMsg 工作原理的三条结论
- 密钥查找把"破加密"缩小为 256 次候选尝试(注册表 6 字节 + 末位遍历),解密由此成立;
- 解析与关联把密文字节变成结构化数据,是全项目的中枢;
- 导出与年度报告只是同一数据的不同渲染器,扩展成本低。
想继续深入,从主入口extract.py的"解密 → 解析"流程读起,报告形态可参考readme.md与doc/中的截图。
【免费下载链接】WeChatMsg提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考