在解决安卓 QQ 聊天记录因故乱码时,有关其加密密钥和纠错重建逻辑的新发现
※本文旨在描述笔者自己遇到的情况和一些新发现,供您作为预案参考,而非任何面向大众的方案。
现在网络上介绍安卓 QQ (手机QQ)聊天记录数据库基本情况(比如异或加密和表结构)的文章和资源已经相对很丰富了,本文就不再赘述。相关技术此前笔者也略有些了解,但没有实际复现研究细节。
直到近日,笔者因一些原因,不慎搞炸了手Q的聊天记录(历史聊天信息乱码),于是终于有机会(被迫)将这方面的技术拿出来检验是否依旧可行,并尝试用其挽回。
※ 切勿模拟复现以下描述所对应的情况,除非您知晓这其中的高风险度。数据无价,意外丢失追悔莫及。
在过程中,笔者参考历史文章公开的技术情况,基本确认了既往的技术到目前(手机 QQ 7.8)为止,依旧适用和有效,进而复现了相关操作。
由于笔者的个人情况的特殊性,在此过程中走了些苦路,不过也观察和发现了一些似乎还没有人公开发表的新技术,主要是关于安卓手机 QQ 对待聊天数据库加密密钥选取、保存和异常重建的一些基本逻辑和现象。大纲如下:
聊天数据库异或加密存在密钥文件 —— 一般情况下密钥为 IMEI 已经不是什么新闻,但因为密钥文件(手机QQ应用数据目录/files/kc 文件)的存在,使得一些情况下实际运算的密钥不一定是本机 IMEI,这大概也是一些备份软件能将聊天数据备份到新手机的基础特性。
密钥竟然还可以是 MAC 地址? —— 当安卓 QQ 获取 IMEI 失败时,MAC 地址(形如 aa:bb:cc:11:22:33,字母小写)成了密钥(Android 5.1)
再谈密钥文件,笔者意外删除密钥文件,遭遇历史聊天信息乱码的趣事 —— 密钥更替,历史聊天乱码,但新同步下来的消息显示正常
旧聊天数据乱码,新聊天数据正常,何去何从?—— 火速改回原来的密钥,旧聊天数据正常,新聊天数据乱码,但手机QQ却容错失败,无声0走向清空历史数据库绝路?!
以上为大纲草稿,笔者打算抽时间详实地介绍本次刺激记录,暂待他日更新完善(咕咕咕).
以下是有关安卓 QQ 聊天数据库加密技术信息的历史文章和资料,他们的分享和启发,促成了本文,尽管以如今的视角看,他们的技术内容或许已经不足为奇了.
[1] https://www.secrss.com/articles/5452
[2] https://zhuanlan.zhihu.com/p/46192877
[3] https://blog.csdn.net/jonhy_love/article/details/79766841
[4] https://bbs.pediy.com/thread-215245.htm
发表评论