
QQ聊天记录解密终极指南从打不开的数据库到跨设备迁移一份保姆级抢救手册【免费下载链接】qq-win-db-key全平台 QQ 聊天数据库解密项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key深夜十一点阿凯盯着屏幕上的报错框发呆。他的 QQ 聊天记录文件夹里躺着上百兆的.db文件但双击之后软件只回他一句数据库文件无法识别。这些文件里有他和已故好友的最后几段对话有和客户敲定合同的完整记录还有五年来和家人分享的每一张照片。换一台电脑、重装一次系统、QQ 意外崩溃一次这些数字记忆就可能变成一堆无法读取的乱码。如果你也遇到过类似的瞬间——聊天记录打不开、换手机后历史全丢、想备份却只拿到一堆加密文件——那么今天要介绍的qq-win-db-key项目很可能就是你的抢救工具包。这个开源项目覆盖 Windows、macOS、Linux、iOS、Android 五大平台核心就干一件事把 QQ 数据库的加密密钥提取出来让你用常规工具重新打开自己的聊天记录。先搞懂原理为什么 QQ 的数据打不开你可以把 QQ 的聊天数据库想象成一个带密码锁的保险箱而数据就锁在里面。保险箱本身.db文件QQ NT 版用的是 SQLCipher 加密的 SQLite 数据库市面上普通的数据库查看工具根本读不懂。密码锁一串 32 字节的密钥。没有它文件就是一堆看似随机的字节。一层伪装门板数据库文件最前面有 1024 字节的特殊文件头即使你拿到密钥SQLite 也认不出这个加了门板的文件。所以完整的抢救流程其实是三步拿到密钥 → 拆掉伪装门板 → 用密钥开锁。qq-win-db-key解决的是最关键的第一步——密钥从哪来答案很朴素QQ 程序自己运行的时候必须用这个密钥打开数据库我们只要在它掏钥匙的瞬间把钥匙看一眼就行了。这就是脚本们做的事在wrapper.node这类核心模块里定位nt_sqlite3_key_v2这个开锁函数或者用 Frida 动态注入在密钥被使用的瞬间把它截获。明白了原理下面按你真实遇到的场景来选攻略。场景一Windows 上数据库打不开想抢救聊天记录这是最常见的情况QQ 异常退出、系统崩溃、或者你手痒删了点什么数据库就打不开了。别慌按下面四步走。第 1 步提取数据库密钥项目里的 PowerShell 脚本会自动分析 QQ 的wrapper.node文件找到引用nt_sqlite3_key_v2字符串的那条指令然后启动调试器把密钥钓出来Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser .\scripts\windows\ntqq\windows_ntqq_get_key.ps1脚本支持自动检测已安装的 QQ如果你想跳过动态调试、只做静态分析可以加-NoDebugForKey参数。如果 QQ 装在了非默认位置用-WrapperNodePath 你的路径\wrapper.node手动指定。第 2 步拆掉 1024 字节的伪装门板拿到密钥后先把文件头去掉让数据库素颜见人# Linux / macOS tail -c 1025 nt_msg.db nt_msg.clean.db # 或者用 Python效果一样 python -c open(nt_msg.clean.db,wb).write(open(nt_msg.db,rb).read()[1024:])第 3 步用 SQLCipher 参数开锁打开处理后的文件时把下面这段参数原样配上密钥换成你提取到的值PRAGMA key 你的32字节密钥; PRAGMA cipher_page_size 4096; PRAGMA kdf_iter 4000; PRAGMA cipher_hmac_algorithm HMAC_SHA1; PRAGMA cipher_default_kdf_algorithm PBKDF2_HMAC_SHA512; PRAGMA cipher aes-256-cbc;第 4 步用熟悉的工具查看配置好参数后DB Browser for SQLite、DBeaver 这类图形工具就能打开数据库了。表名通常很直观比如buddy_list是好友列表消息内容在对应的消息表里。到这一步你的聊天记录就重见天日了。场景二换新手机想把聊天记录搬走很多人的痛点是旧手机里的聊天记录带不出来。项目里针对 Android 和 iOS 都提供了基于 Frida 的注入脚本思路是在 QQ 进程内挂钩密钥相关函数运行期间把密钥打出来。Android 端脚本在scripts/android/目录下核心是android_get_key.py针对主程序和android_get_backup_key.py针对备份场景支持在 Termux 环境里直接跑。iOS 端对应scripts/ios/ios_get_key.js。大致流程是手机连接电脑确保 Frida 环境就绪QQ 处于登录状态。运行对应脚本让 QQ 进程走一遍打开数据库的动作。捕获输出的密钥记下来备用。把旧设备导出的数据库文件 密钥一起带到新设备按场景一里的步骤 2、3 完成解密读取。注意一点移动端注入需要设备和 QQ 版本配合脚本本身只是参考实现动手前先看两眼代码确认包名和模块名跟你的版本对得上。场景三老版本 PCQQ 的遗留数据如果你手头还有旧版 PCQQ非 NT 架构时代的数据库项目同样留了后手工具集中在scripts/windows/pcqq/目录pcqq_get_key.py从运行中的 PCQQ 进程里提取密钥pcqq_dump.py提取密钥后直接把数据库导出成明文pcqq_rekey_to_none.cpp与pcqq_DANGER_rekey.py重设数据库密钥的工具。坦白说重加密这步是有风险的操作脚本名里的DANGER不是吓唬人——改密钥可能弄坏整个数据库。所以老数据的推荐路线是先get_key再dump导出尽量别碰重加密。场景四Linux 或 macOS 用户想读 NTQQ 数据Linux 用户可以直接用scripts/linux/linux_qq_get_key.py。它的思路很有意思用readelf和strings解析/opt/QQ/resources/app/wrapper.node定位nt_sqlite3_key_v2: db%p zDb%s这个字符串在.rodata段里的偏移再从配置目录~/.config/QQ里配合计算密钥。macOS 用户Apple Silicon 机型有专门的scripts/macos/arm-nosip/目录里面是不需要关闭 SIP的提取工具包括qq_key_extractor.py、find_key_func.py和配套的qq_web.py。对不想动系统安全设置的人来说这是最省心的方案。拿到密钥之后解密步骤跟场景一的第 2、3 步完全一样可以无缝衔接。避坑指南最常见的四个翻车点现象原因对策提示file is not a database忘了去掉前 1024 字节文件头先用tail -c 1025处理再打开解密后打开仍是乱码SQLCipher 参数或密钥不对逐项核对参数确认密钥是 32 字节的十六进制值脚本报错拿不到密钥QQ 版本与脚本不兼容或wrapper.node路径不对检查 QQ 版本用-WrapperNodePath指定正确路径必要时手动更新脚本Frida 注入失败缺依赖或设备环境不符确认frida、psutil等依赖已装好检查包名是否与你的 QQ 版本一致还有一个高频误操作值得单独说解不开就别反复试。每试一次都可能基于错误的假设去改文件正确的顺序永远是先确认密钥、再动文件。进阶技巧让抢救成功率翻倍的三个习惯第一动手之前先备份。把原始.db文件完整复制一份再操作这是所有技巧里最重要的一条。很多人在尝试解密的路上把唯一的数据源弄坏了悔之晚矣。第二解密后立刻做完整性检查。打开数据库后先跑一遍下面的 SQL确认没有静默损坏-- 检查数据库完整性 PRAGMA integrity_check; -- 看看表结构是否齐全 SELECT name FROM sqlite_master WHERE typetable; -- 抽查消息表有没有数据 SELECT COUNT(*) FROM buddy_list;第三能走官方通道就先走官方通道。比如 Windows 版 PCQQ 自带导出消息记录mht 格式如果只是想要聊天记录文本先用它导出最安全。逆向提取属于最后手段能不动 QQ 进程、不改安装包就尽量不动。另外优先在不常用的设备或虚拟机里测试整套流程把风险隔离在实验场里而不是拿主力账号冒险。资源入口从哪里找到这些工具整个项目按平台分好了目录收藏好这份地图你的需求看哪里Windows NTQQ 提取密钥scripts/windows/ntqq/windows_ntqq_get_key.ps1旧版 PCQQ 抢救scripts/windows/pcqq/Android 提取密钥scripts/android/iOS 提取密钥scripts/ios/ios_get_key.jsLinux NTQQ 提取密钥scripts/linux/linux_qq_get_key.pymacOS ARM 无 SIP 提取scripts/macos/arm-nosip/如果你想拿到完整脚本可以克隆仓库到本地慢慢研究git clone https://gitcode.com/gh_mirrors/qq/qq-win-db-key项目 README 里也写得很实在脚本不是傻瓜一键工具需要你根据 QQ 版本、系统环境和本地安装情况做微调使用前务必自己审查代码、评估风险。如果你熟悉数据解析算法、能适配更多平台项目也欢迎以 PR 或 issue 的形式参与贡献。写在最后数据这东西平时感觉不到它的重量直到某天打不开才追悔莫及。qq-win-db-key能做的是给你一套在打不开之后还能自救的工具但更聪明的做法是趁一切都还正常的时候先按文中的备份习惯把重要数据导出一次。如果你的聊天记录现在还能正常打开恭喜你——现在就是备份的最佳时机如果已经打不开了别急按场景一的路子一步步来密钥在手数据就有救。愿每一个人的聊天记录都永远不会真的消失。【免费下载链接】qq-win-db-key全平台 QQ 聊天数据库解密项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考