推導手機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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章