ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

QQ数据库解密指南:5分钟上手提取聊天记录密钥

QQ数据库解密指南:5分钟上手提取聊天记录密钥 QQ数据库解密指南5分钟上手提取聊天记录密钥【免费下载链接】qq-win-db-key全平台 QQ 聊天数据库解密项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key本文带你用开源项目 qq-win-db-key 完成QQ数据库解密的第一公里提取 QQ 聊天数据库的加密密钥。QQ 把本地聊天记录存在加密过的数据库文件里主要是 Msg3.0.db用 SQLCipher 加密而密钥不落盘——每次登录时程序向服务器请求只短暂存在于进程内存中。这个项目的思路很直接在密钥函数被调用的一瞬间把它钩住Hook即给目标函数挂个钩子函数一被调用就被拦截顺手读出密钥。项目覆盖 Windows、Linux、macOS、iOS、Android 五个平台。适合想备份、导出自己聊天记录的开发者与数据爱好者。注意动手前务必先备份数据且只应处理你有权访问的数据。原理速览QQ 数据库为什么打不开理解四件事你就懂了整个项目的逻辑文件是加密的。聊天记录数据库采用 SQLCipher 4 方案基于 SQLite 的加密扩展按 4096 字节一页做 AES 加密并带 HMAC 校验。没有密钥文件就是一堆乱码。密钥不在磁盘上。每次启动 QQ 并登录客户端都会从服务器侧重新获取一份密钥只在内存里使用。这意味着去配置文件里找密钥这条路走不通。函数名是突破口。QQ 内部封装了一个数据库加解锁函数nt_sqlite3_key_v2每次打开数据库时都会调用它并传入密钥参数。逆向分析确认了这个函数的存在它就成了唯一需要盯住的位置。脚本替你盯着。各平台脚本的工作都一样先在 QQ 的可执行模块如 Windows 的 KernelUtil.dll、wrapper.nodeAndroid 的 libkernel.so里用字节特征码一段能唯一定位函数的机器码找到函数地址然后挂上 Hook函数一执行就把数据库名 密钥内容打印到控制台。你只需在合适的时机登录、打开聊天窗口触发它。整个链条可以概括为一句话特征码定位函数 → 挂 Hook 拦截 → 登录后触发 → 密钥打印到屏幕。上手流程三步拿到你的 QQ 数据库密钥下面以 Windows 为例走完整流程。其他平台的脚本放在对应目录思路完全相同scripts/android/、scripts/ios/、scripts/linux/、scripts/macos/arm-nosip/。第一步环境准备与操作前备份先把仓库代码拿到本地这条命令完成克隆git clone https://gitcode.com/gh_mirrors/qq/qq-win-db-keyWindows 下还需要 Python建议 3.9 以上和两个依赖库这条命令一次装好pip install frida psutil其中 frida 是动态注入框架把一段脚本塞进正在运行的进程里psutil 用来定位 QQ 进程。⚠️操作前请做好三件事优先使用 PCQQ 自带的导出消息记录MHT 格式这是零风险的第一备份对~/.config/QQLinux或 QQ 数据目录做一次完整拷贝尽量在不常用设备或虚拟机里操作。脚本注入 QQ 进程存在数据损坏甚至账号风险官方 README 已明确提示这一点。最后确认 QQ 处于已登录、正在运行的状态——Hook 只截获运行中的函数调用QQ 没登录什么都等不到。第二步运行密钥提取脚本Windows 上分两个版本按你装的 QQ 选择。旧版 PCQQ在项目目录下运行这条命令脚本会自动找到 QQ.exe 并注入 Hookpython scripts/windows/pcqq/pcqq_get_key.py运行后保持登录状态随便点开一个有历史记录的聊天窗口控制台就会打印类似这样的结果[] Msg3.0.db key found: ¦- nKey: 16 ¦- *pkey: 0x61, 0x62, ...即密钥的十六进制nKey是密钥长度pkey就是密钥本体十六进制转成 ASCII 字符串即可使用。新版 NTQQ以管理员身份打开 PowerShell进入项目目录后运行.\scripts\windows\ntqq\windows_ntqq_get_key.ps1这个脚本不需要 frida。它先从注册表自动检测 QQ 安装目录和版本定位wrapper.node里的目标函数然后带调试器启动 QQ 并下断点。你在弹出的 QQ 窗口里正常登录脚本就会在控制台输出找到密钥: xxxxxxxxxxxxxxxx16 位 ASCII 字符串任务完成。也可以加-NoDebugForKey参数只做静态分析、不真正抓密钥。其他平台简述Androidscripts/android/android_get_key.py配合 frida 在手机上 Hooklibkernel.soLinuxscripts/linux/linux_qq_get_key.py先解析wrapper.node的 ELF 段再用断点方式抓密钥macOSscripts/macos/arm-nosip/qq_key_extractor.py是一个 lldb 插件Apple Silicon 上无需关闭 SIP按脚本头部注释的两个终端流程操作即可。第三步验证密钥并解密数据库文件拿到密钥后先用它打开数据库验证。最简单的方式是 sqlcipher 命令行工具连接时逐条执行这些 PRAGMA 参数页面大小 4096、KDF 迭代 4000 次是 QQ 的定制配置与 SQLCipher 默认值不同必须显式指定PRAGMA key 你抓到的密钥; PRAGMA cipher_page_size 4096; PRAGMA kdf_iter 4000; SELECT count(*) FROM sqlite_master;最后一条查询能正常返回数字说明密钥正确、数据库结构完好若报 file is not a database通常是密钥不对或 KDF 参数没配对。Windows 旧版 PCQQ 还有一个捷径scripts/windows/pcqq/pcqq_dump.py在抓键的同时直接调用 QQ 自己的加解密函数把数据库解密写入你指定的文件省掉手工解密环节。常见坑点与排查方法现象可能原因处理办法脚本报 QQ not launched. exit.QQ 未运行或没登录先登录 QQ 并保持运行再重新运行脚本pattern NOT FOUNDQQ 更新后字节特征码失效升级到最新版脚本仍无效需用 IDA 重新定位函数、更新特征码抓到密钥但解密报 file is not a databaseKDF/HMAC 参数不匹配或密钥抓错库核对kdf_iter等 PRAGMA确认 Hook 打印的是 Msg3.0.db 对应的密钥Windows 下读内存失败、无输出权限不足以管理员身份运行 PowerShell / 终端断点命中但输出非目标调用QQ 内部对函数有其他用途的调用属正常现象脚本会单步跳过等待登录时的那次真实调用运行后 QQ 崩溃或行为异常注入进程带来的风险立即停手恢复备份今后优先用非主力设备或虚拟机进阶从抓键到解析聊天记录密钥只是第一公里。接下来可以关注三件事数据库解析Msg3.0.db 的表结构、消息格式有专门的解析文档结合 sqlite 工具即可把消息还原成可读文本或导出格式目录结构各平台脚本都按scripts/平台/组织如scripts/windows/ntqq/、scripts/android/新平台适配时可参照现有实现高风险工具慎入scripts/windows/pcqq/pcqq_DANGER_rekey.py和pcqq_rekey_to_none.cpp会改写数据库的加密密钥危险操作文件名里的 DANGER 不是摆设不读完源码请勿运行。项目遵循开源协议欢迎通过 Issue 和 PR 参与适配新版 QQ、移植新平台、改进解析算法都是实际有效的贡献方向。【免费下载链接】qq-win-db-key全平台 QQ 聊天数据库解密项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表