推导手机QQ聊天记录db文件加密IMEI值

手机QQ聊天记录的db文件使用的sqlite数据库,一般库文件的名字是 {用户QQ号}.db

要拿到db文件,需要手机root或者手机支持应用备份,我使用的是小米手机,支持不用root直接备份app数据出来,这方面网上教程挺多的。

db文件本身没有加密,加密的是字段内容,加密方式一般使用的是手机IMEI值和要加密的字符值异或操作

下面解决如果IMEI找不到了,在只有db文件情况下怎么推导加密用的IMEI值。

1、推导IMEI值

分析db文件内的Friens表,发现可以利用好友备注(remark)和拼音字段(mCompareSpell)之间的对应关系,推导出加密的IMEI值

mCompareSpell字段就是remark字段的拼音对应(如果remark为空会和name字段对应)

知道了对应关系,我们就可以使用数字0-9作为密钥去解密这两个字段值,取remark字段的拼音值对比解密后的mCompareSpell值,然后根据对比选出正确的数字值,依次循环直到找出所有的值即为要找的IMEI

写了个python脚本实现这一过程,操作环境:手机QQ v8.3导出db文件,win10,小米安卓手机

2、手工操作步骤

首先从第1位开始推导,从上图看出【此】和【c】【步】和【b】是正确的拼音对应关系,所以第1位IMEI值就是8或9(9在后面会发现是错误的值),此处选8

然后继续第2位的求值,【此】的拼音是ci, 所以第2位选6, 1个汉字对应多个字母,所以按汉字顺序选出正确的拼音就可以了

最后的IMEI值

3、自动操作步骤

直接指定db路径就可以自己推导IMEI值了

4、脚本源码地址

如果一条数据展示不明显,也可以设置多条数据展示比对

λ  py find_qq_db_imei.py -h
usage: find_qq_db_imei.py [-h] [-l KEY_LENGTH] [-m MODEL] [-n LIMIT_ROWS]
                          [-i INIT_IMEI | -q USER_QQ]
                          db_file

QQ聊天记录db文件获取解密key(IMEI)

positional arguments:
  db_file        db文件路径(必输)

optional arguments:
  -h, --help     show this help message and exit
  -l KEY_LENGTH  需要推导的IMEI长度值(默认15)
  -m MODEL       操作模式:1 自动(默认) 2 手动
  -n LIMIT_ROWS  需要查看的组数(默认2)
  -i INIT_IMEI   初始前几位IMEI值
  -q USER_QQ     db文件所属用户qq号,以求解前几位IMEI

https://github.com/perfel/find_qq_db_imei

猜你喜欢

转载自blog.csdn.net/u012132482/article/details/105270047