ARTICLE DETAIL

资讯详情

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

3 步搞定 QQ 聊天记录数据库解密:全平台密钥提取、修复与迁移完整教程

3 步搞定 QQ 聊天记录数据库解密:全平台密钥提取、修复与迁移完整教程 3 步搞定 QQ 聊天记录数据库解密全平台密钥提取、修复与迁移完整教程【免费下载链接】qq-win-db-key全平台 QQ 聊天数据库解密项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-keyqq-win-db-key 是一个专注于全平台 QQ 聊天记录数据库解密的开源项目它提供了 Windows、macOS、Linux、Android、iOS 各平台的脚本能从运行中的 QQ 进程里提取数据库加密密钥帮你打开、修复和迁移被 SQLCipher 加密的聊天数据库。这份 QQ 聊天记录数据库解密教程会带你从零走通取密钥 → 去文件头 → 配参数的完整链路普通用户也能照着做。从一次失败的搬家说起QQ 数据库为什么打不开朋友换了新电脑想把旧笔记本上存了 8 年的 QQ 聊天记录整体搬过去。他试了 QQ 自带的导出消息记录导了一下午得到的是一个个 mht 网页文件图片裂了、语音是空壳、表情包全乱码而且只能按会话逐个导出。他问我能不能把数据库文件直接拷走能但没那么简单。新版 QQNT 版的聊天数据库nt_msg.db用 SQLCipher 做了全库加密直接拷贝后用 SQLite 工具打开看到的全是乱码。要解密必须先拿到这把钥匙——数据库加密密钥。而拿钥匙正是 qq-win-db-key 项目解决的核心问题。这个项目能做什么一份能力清单用一句话概括从各平台正在运行的 QQ 进程里把加密数据库的密钥摘出来。展开来看它提供四类价值全平台密钥提取Windows、macOS、Linux、Android、iOS 各有对应脚本覆盖新版 QQ NT 与旧版 PCQQ数据库导出与重加密旧版 PCQQ 还提供全量导出dump和重设密钥rekey的工具方便批量读取打开与修复拿到密钥后用 DB Browser for SQLite 这类标准工具即可打开数据库损坏的文件头也能通过去头修复跨平台迁移SQLCipher 解密参数在各平台通用在 Windows 上解开的库换到 macOS 一样能读仓库根目录的README.md说明了各脚本的定位脚本按平台放在scripts/下Windows 新版 QQscripts/windows/ntqq/windows_ntqq_get_key.ps1Windows 旧版 PCQQscripts/windows/pcqq/取密钥、导出、重加密四个文件Linuxscripts/linux/linux_qq_get_key.pymacOSApple Silicon无需关闭 SIPscripts/macos/arm-nosip/Androidscripts/android/iOSscripts/ios/ios_get_key.js最短上手路径Windows 上 3 步拿到密钥并打开数据库以最常见的 Windows 新版 QQ 为例最短路径只有三步。第 1 步用 PowerShell 脚本提取密钥。脚本会自动检测 QQ 的安装位置分析其wrapper.node文件定位到nt_sqlite3_key_v2函数再附加调试器在函数调用时把密钥拦下来。先放开执行策略再运行脚本Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser powershell -File windows_ntqq_get_key.ps1运行后按提示登录一次 QQ密钥就会打印在控制台里。如果只想做静态分析、不想让脚本附加调试器加一个-NoDebugForKey参数即可。第 2 步去掉数据库文件头的 1024 字节。QQ NT 的数据库文件前 1024 字节是自定义文件头SQLite 不认识它必须去掉。用tail或 Python 一行命令都能完成tail -c 1025 nt_msg.db nt_msg.clean.db第 3 步用 DB Browser for SQLite 打开。新建连接后在数据库 → 设置加密里选择 Raw Key 模式粘贴 64 位十六进制密钥并核对以下 SQLCipher 参数然后就能像普通数据库一样浏览和导出了PRAGMA key x你的64位十六进制密钥; 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;三步走完聊天记录就回来了可以直接查看、搜索也可以导出成 CSV 或 SQL 做备份迁移。按你的平台对号入座六种场景的密钥提取做法不同系统的取密钥姿势差异很大这里按场景分别说明每个场景自成一体用到哪个看哪个。场景 AWindows 新版 QQNTQQ就是上面最短路径的方案。windows_ntqq_get_key.ps1支持自动检测安装目录也支持手动指定wrapper.node路径powershell -File windows_ntqq_get_key.ps1 -WrapperNodePath C:\你的路径\wrapper.node。注意脚本同时兼容 PowerShell 5.0 和 7.0老系统也能跑。场景 BLinux 桌面版 QQscripts/linux/linux_qq_get_key.py走的是纯静态分析路线用readelf和strings分析/opt/QQ/resources/app/wrapper.node找到nt_sqlite3_key_v2字符串及其偏移再从 QQ 进程内存里定位并读出密钥。它不注入进程、不改安装包风险相对更低适合 Linux 用户首选。场景 CmacOSApple Silicon不用关 SIPscripts/macos/arm-nosip/qq_key_extractor.py是一个 lldb 自动化模块亮点是不需要关闭系统 SIP。流程分两个终端终端 A 用 lldb 等待并附加 QQ终端 B 启动 QQ 应用然后按脚本注释里的顺序执行process continue、qq-setbp设断点、登录触发密钥会自动打印出来。脚本头部注释写得很清楚照着做即可。场景 DAndroid 手机 QQscripts/android/android_get_key.py基于 Frida 注入hook 手机 QQ 的libkernel.so需要 root 环境。如果你是要从系统备份文件里恢复聊天记录可以用android_get_backup_key.py——它读取备份数据库的密钥但需要指定 QQ 版本号参数运行前先确认版本匹配并关闭 Magisk Hide、禁用 SELinux。场景 EiOS 版 QQscripts/ios/ios_get_key.js同样是 Frida 脚本适用于越狱环境。iOS 上先把数据库从 iTunes 备份里提取出来再用脚本拿到密钥最后回到第 2、3 步的去文件头 配参数流程即可解密。场景 FWindows 旧版 PCQQ如果你还在用老版 PCQQ9.x 时代scripts/windows/pcqq/下的工具更完整pcqq_get_key.py取密钥、pcqq_dump.py全量导出聊天记录、pcqq_rekey_to_none.cpp可以把密钥重设成固定值方便批量脚本读取。注意pcqq_DANGER_rekey.py文件名里就带 DANGER改动数据库结构只建议在备份副本上操作。三个高频翻车点错误做法与正确解法翻车点 1密钥拿到了数据库还是打不开。错误做法直接把原始nt_msg.db拖进 SQLite 工具填上密钥就点打开。 失败原因前 1024 字节自定义文件头没去掉SQLite 根本不认这个文件或者 SQLCipher 参数与脚本打印的不一致。 正确做法先执行tail -c 1025去掉文件头再逐项核对cipher_page_size、kdf_iter、HMAC 和 KDF 算法参数差一个字符都解不开。翻车点 2在主力账号、主力设备上直接跑注入脚本。错误做法日常登录的主号上直接附加调试器边登录边取密钥。 失败原因注入进程本身存在封号风险且调试过程可能让 QQ 进程崩溃损坏正在写入的数据库。 正确做法先在虚拟机或备用机上验证流程操作前用 QQ 自带的导出消息记录mht 格式先做一份保底备份再对原始数据库文件做一次完整拷贝。翻车点 3脚本一跑就报错怀疑工具坏了。错误做法不看脚本头注释直接换最新版 QQ 重试。 失败原因脚本大多针对特定 QQ 版本编写wrapper.node的路径和函数特征会随版本变化比如 Android 备份密钥脚本就明确要求传入版本号参数。 正确做法先读脚本头部注释确认支持的版本范围和依赖Frida、lldb、readelf 等再检查系统环境是否齐备最后确认wrapper.node路径与脚本默认值一致。原理没那么神秘SQLCipher、wrapper.node 与配钥匙的类比把 QQ NT 的数据库想象成一本上锁的日记本。SQLCipher 就是锁的加密规则——AES-256-CBC 加密、PBKDF2 派生密钥、HMAC-SHA1 校验这套规则是公开的任何 SQLCipher 工具都支持而日记本的钥匙就是每次登录时生成的那串密钥。关键在于QQ 每次打开数据库都要经过一道配钥匙的工序这个工序就是wrapper.node里的nt_sqlite3_key_v2函数。项目里的脚本做的事情相当于在工序入口架了一台摄像机静态分析先找到函数位置动态调试再在函数被调用时把密钥拍下来。规则是公开的钥匙也拿到了日记本自然就打开了。两个进阶技巧可以收藏想降低风险Windows 脚本加-NoDebugForKey、Linux 脚本本身走纯静态分析都能做到不注入进程地定位关键函数风险更可控。想批量处理旧版 PCQQ 数据先用pcqq_get_key.py取一次密钥再用pcqq_rekey_to_none.cpp把数据库重设成已知密钥之后就能用普通脚本反复读取不用每次重新逆向。高频问答5 个你可能会问的问题Q1脚本打印的密钥是一串 64 位十六进制字符该往哪里填在 DB Browser for SQLite 的设置加密对话框里选择 Raw Key 模式直接粘贴这 64 个十六进制字符不要加空格和前缀。如果工具只接受普通文本密钥就需要先做一次格式转换两种模式下填入的内容不一样。Q2填了密钥和参数还是报 file is not a database怎么办九成是文件头没去干净。确认你打开的是tail -c 1025处理后的文件而不是原始文件再用PRAGMA integrity_check;检查完整性能返回ok说明结构和密钥都对了。Q3我的 QQ 版本不在脚本注释的支持列表里还能用吗可以试但要有心理准备。脚本原理是找nt_sqlite3_key_v2这个函数只要新版 QQ 没改这个入口脚本通常仍能工作一旦报错优先检查wrapper.node路径和版本特征必要时自己用 IDA、Hopper 等工具定位新偏移。Q4Android 手机没 root能提取密钥吗基本不行。scripts/android/的脚本依赖 Frida 注入需要 root 权限。没 root 的话可以改用 Android 系统自带备份功能导出数据库再配合备份密钥脚本尝试但这同样有版本限制。Q5用这个工具会不会被封号有风险。README.md明确警告部分脚本可能破坏聊天记录或导致封号。降低风险的办法是用小号、虚拟机、备用机操作操作前备份优先选择不注入进程的静态分析方式。动手前请勾完这份清单再开始开始之前把下面几项逐一确认能帮你避开绝大多数麻烦读一遍对应平台脚本头部的注释确认版本与依赖要求用 QQ 自带的导出消息记录功能先导出一份 mht 保底对原始数据库文件做完整备份别只复制快捷方式优先在虚拟机或备用机上跑通流程再处理正式数据解密后用PRAGMA integrity_check;验证数据完整性跨平台迁移前确认目标平台 SQLCipher 参数与源平台一致如果中途卡住回到本教程的翻车点小节逐条排查想深挖某个平台的细节仓库里每个脚本的注释本身就是最好的说明书。最后必须提醒本项目仅供学习交流使用请遵守所在地区法律法规和 QQ 软件许可及服务协议仅用于个人数据恢复与学习研究解密结果请勿用于法律取证或任何商业用途。【免费下载链接】qq-win-db-key全平台 QQ 聊天数据库解密项目地址: https://gitcode.com/gh_mirrors/qq/qq-win-db-key创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表