学习笔记

学习笔记

更新

已将研究成果整合至文档: QQDecrypt:QQ 聊天数据库解密。

前言

不管是出于希望将聊天记录保存到本地,还是需要导出和将聊天记录用于语言模型训练等用途,都需要导出 QQ 聊天记录这一步。

近期发现 QQNT 也存在导出聊天记录的方法,遂进行尝试和记录,感谢各位前辈的探索和作出的贡献。

环境及准备工作

我的环境是 Windows10,QQNT 9.9.11-24568,Python 3.10.6。

需要任意一款反编译软件,以及用于查看数据库的 DB Browser for SQLite(安装包来自网络,可从参考文献第一条中获取链接)。

操作的所有文件建议在操作前进行备份。

逆向获取数据库密码

由于本人不会逆向,是按照参考文献第一条中的记录进行操作,故在此不重复记录。

需要注意的是附加到的进程是从上往下的第一个,与参考博客中的描述并不一致,也许不同设备会有不同。

如果进程选择正确,在附加后需要一定时间加载,且过程中有弹出窗口,并在 F9 继续运行之前无法使用 QQ,并在登录后触发断点。如果进程选择错误则以上会有不同,关掉 QQ 重新附加即可。

从数据库中导出数据

依旧按照参考文献第一条中的记录进行操作,不重复记录。

其中 nt_msg.header.txt 使用文本编辑器打开后可以在文件开头看到 SQLite header 3 以及 QQ_NT DB、HMAC_SHA1 等字样。亲测使用笔记本打开会显示乱码,而使用 VS Code 打开没有问题。

在 DB Browser for SQLite 中,打开菜单->工具->设置加密,不输入密码直接点击 OK 以解除数据库加密。

以私聊数据表 c2c_msg_table 为例,这里介绍一部分关键数据。

列名

类型

含义

说明

40050

int

发送时间

单位为秒的时间戳

40058

int

发送时间

单位为秒的时间戳,精确到天

40030

int

私聊对象

对方 QQ 号(无论是对方还是自己发送的消息)

40033

int

消息发送者

发送者的 QQ 号

40093

str

消息发送者

QQ 昵称或是备注名

40800

protobuf

消息内容

格式较为复杂,可使用 CyberChef 工具进行解析

关于 40800 的解析,由于较复杂所以不展开。

至此,已可以使用 sql 命令或编写程序导出数据。

附录

参考文献

GitHub - mobyw/GroupChatAnnualReport: 使用 QQNT Windows 聊天记录制作群聊年度报告!

GitHub - Mythologyli/qq-nt-db: QQ NT Windows 数据库解密+图片/文件清理

GitHub - QQBackup/qq-win-db-key: 全平台 QQ 聊天数据库解密

解析 NTQQ 数据库 | 冷月的博客

版权信息

本文原载于 reincarnatey.net,遵循 CC BY-NC-SA 4.0 协议,复制请保留原文出处。

相关推荐

八马茶业完成港股上市备案,2024年前三季度收入16.47亿元,为中国最大的高端茶企
心脏受不了!世界杯决赛前105分钟10射正最后15分钟5射正
怎样把手机东西转到内存卡(如何把手机文件转到sd卡?)
淘宝买家被投诉会怎样?淘宝买家被投诉会有处罚吗?
谁知道365bet网址

淘宝买家被投诉会怎样?淘宝买家被投诉会有处罚吗?

📅 08-27 👁️ 9751
Swagger-的使用(详细教程)
365体育投注3

Swagger-的使用(详细教程)

📅 08-13 👁️ 5182
告别红包诱惑,教你如何关闭自动抢红包功能,轻松关闭红包诱惑,揭秘自动抢红包功能的告别之道
制动摩擦片报警了还能开多久,刹车片提醒还能开多长时间
上帝存在吗?
365体育投注3

上帝存在吗?

📅 09-05 👁️ 1097
您所访问的页面不存在
谁知道365bet网址

您所访问的页面不存在

📅 08-31 👁️ 249