公司动态

WeChatMsg 微信聊天记录导出揭秘:日志里那把 AES 密钥怎么“撬开”加密数据库

📅 2026/8/24 9:34:05
WeChatMsg 微信聊天记录导出揭秘:日志里那把 AES 密钥怎么“撬开”加密数据库
WeChatMsg 微信聊天记录导出揭秘日志里那把 AES 密钥怎么“撬开”加密数据库【免费下载链接】WeChatMsg提取微信聊天记录将其导出成HTML、Word、CSV文档永久保存对聊天记录进行分析生成年度聊天报告项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsgWeChatMsg 是一个提取微信聊天记录的工具把锁在本地加密数据库里、官方不提供导出的消息导出成 HTML、Word 或 CSV 永久保存还能生成年度聊天报告。本文拆解两个核心机制日志密钥的离线解密和把数据表拼成对话的导出流水线。旧方案 vs 新思路别 hook 进程直接读本地数据库你以为聊天记录在微信进程的内存里得把微信跑起来才能捞实际上消息全在磁盘上一组 SQLite嵌入式数据库格式文件里比如 msg_0.db只是加了把锁。不少导出工具走 hook 路线启动微信、注入代码、读内存地址而微信每个版本都改存储布局hook 点跟着漂移你永远在追版本。WeChatMsg 换了个思路不碰微信进程把密钥找出来离线解密数据库文件聊天记录就变成可以随便查询的普通数据。对比项hook 进程方案WeChatMsg 离线解密微信进程必须运行且要注入代码不关心纯读文件版本升级hook 点变化容易失效只要日志里还有密钥就能用平台以 Windows 为主变体多Windows、Mac 同一套思路这个思路的产物就是你翻着看的 HTML 会话页、能归档的 Word/CSV或者下面这张年度报告。核心机制拆解密钥怎么找到表怎么拼成对话密钥怎么找不在数据库里在日志里微信用 AES-256-CBC对称加密算法密钥 256 位加密数据库没密钥它就是一堆不可读的字节。密钥没有存在数据库文件里而是被明文写在微信的日志xlog文件里——从代码结构看WeChatMsg/func.py 大致做了这件事定位到你 wxid你的微信唯一标识对应的日志文件解析出密钥那一行。这就像图书馆的书上了锁钥匙不在锁里而是夹在管理员摊开的笔记本里WeChatMsg 只是从笔记本里把它取走。# 伪代码从日志到明文数据库的三步 key 从日志文件解析出密钥 db 用 key 离线解密 msg_*.db rows 查询 Msg、Contact 等表跳过这一步数据库根本打不开你就只能退回 hook 进程路线——更脆弱、更侵入版本一变就崩。解密之后从一堆表拼成完整对话解密后的数据库像一本没整理过的账本每张表只装一类信息导出模块要做的就是把这些碎片拼成能读的话。表名角色Msg消息本体一行一条带时间戳Contact联系人信息昵称、wxidChatRoom群信息群名、成员Name2Id“昵称 ↔ wxid”映射负责还原“谁说的”不同微信版本的表名与字段略有差异项目里做了兼容处理。可以把它当成翻译电报码先查“人名册”Name2Id再把“流水账”Msg里每一行填上真实姓名和时间对话才立得住。-- 示意解密后就是普通查询把“谁说的”填回来 SELECT m.MsgSvrID, n.Name FROM Msg m JOIN Name2Id n USING (Talker)不拼这一步你拿到的不是聊天记录而是一堆 ID 和数字人眼根本读不下去。年度报告生成一条 GROUP BY 算出“你的这一年”年度报告不是套模板而是直接拿解密后的消息表算出来的按时间字段 GROUP BY分组聚合得到月度分布按发言频次排序得到聊天最多的人看深夜时段得到熬夜消息找最大长度得到最长单条消息。-- 示意“聊天最多的人”本质上就是这一行 SELECT Talker, COUNT(*) FROM Msg GROUP BY Talker ORDER BY 2 DESC不做这一步你的聊天记录只是被“存下来了”而不是被“看懂了”数据里最有意思的那部分故事就没人讲。最“骚”的一个设计密钥被明文写进了日志这可能是全项目最“皮”的一点WeChatMsg 能跑起来靠的不是什么复杂破解算法而是微信自己把密钥明文写进了日志。它为什么存在因为微信每次启动都要读写这个加密数据库某些版本图省事把密钥留在了日志里属于存在多年的安全疏漏WeChatMsg 干脆把这个疏漏变成捷径。触发条件也很明确你的微信版本日志里还记录密钥字段且日志文件没被清理。去掉这个依赖项目只能退回 hook 进程路线——更怕版本升级还绑死在微信进程的生命周期上。# 大致逻辑扫日志、抠密钥、能解开数据库才算数 for line in open(xlog): if 密钥字段 in line: key 提取(line) break正是这条捷径让 WeChatMsg 是个“文件工具”而不是“注入工具”。跑起来三条命令聊天记录就导出来了最小路径就是 clone、装依赖、跑主脚本。git clone https://gitcode.com/GitHub_Trending/we/WeChatMsg pip install -r requirements.txt python main.py运行main.py后按提示选择微信账号wxid对应本地数据库目录和输出格式HTML / Word / CSV。年度报告由项目里的 analysis 分析模块在导出时一并生成想扩展统计项可以从那里入手。带走什么WeChatMsg 的三个设计要点密钥在日志数据库虽是 AES-256-CBC 加密但密钥被明文留在日志里WeChatMsg 先“借”来这把密钥再离线解密这是它全程不碰微信进程的根源。拼表成对话Msg 存消息、Name2Id 负责还原“谁说的”把表拼起来才有能导出的 HTML / Word / CSV 聊天记录。统计是顺手的年度报告不是模板是同一份解密数据上几条 GROUP BY分组聚合的产物聊天最多的人、熬夜消息都这么算出来。想深入的话从主入口 main.py 读起再看 WeChatMsg/func.py 里密钥解析与数据库解密的实现那里是全部核心所在。【免费下载链接】WeChatMsg提取微信聊天记录将其导出成HTML、Word、CSV文档永久保存对聊天记录进行分析生成年度聊天报告项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考