本帖最后由 Main91 于 2024-5-4 18:47 编辑
微信 #数据库 #SQL #SQLCipher
安卓
EnMicroMsg.db
联系人 Type 把这个数字转换成二进制去看
数字 |
二进制 |
意义 |
0 |
0 |
微信运动 |
1 |
1 |
微信应用 |
2 |
10 |
app + 群 |
3 |
11 |
好友 |
4 |
100 |
群里面的人 |
6 |
110 |
群好友,对方加你,你未通过 |
7 |
111 |
群里面的人,而且互为好友 |
11 |
1011 |
拉黑别人 |
33 |
100001 |
系统公众号(腾讯信息,漂流瓶) |
67 |
1000011 |
标星 |
256 |
100000000 |
删除好友 |
259 |
100000011 |
不让他看我的朋友圈 |
65539 |
10000000000000011 |
不看他的朋友圈 |
从上面的表格大致可以看出来
第一位:你是否加对方为好友
第二位:对方是否加你为好友
第三位:是否群里面的
第四位:你主动拉黑对方
数据库的密钥:
imei & uid 连接后进行32位MD5(小写) 运算 取前7位 %.7s
MIEI和UID获取途径
-
IMEI 在CompatibleInfo.cfg
java的HashMap编码的文件,但可直接读取
如果是虚拟机,多开器可能没有IMEI
这时IMEI 默认为 1234567890ABCDEF
-
UID 在 shared_prefs\auth_info_key_prefs.xml 中有明文
或 systemInfo.cfg 中
软件打开加密数据库的方式
1.用SQLite Studio 选择SQLCipher类型打开
加密算法配置
PRAGMA cipher_compatibility = 3;
PRAGMA cipher_use_hmac = OFF;
PRAGMA cipher_page_size = 1024;
PRAGMA kdf_iter = 4000;
2.用SQLCipher2.1打开
3.命令行打开加密数据库的方式
Aardio 调用 sqlcipher-shell64.exe 来进行解密(不支持中文路径)
var sqlcipher=io.fullpath("\res\sqlcipher-shell64.exe")
var cmd = /*
PRAGMA key = '%.7s';
PRAGMA cipher_use_hmac = OFF;
PRAGMA cipher_page_size = 1024;
PRAGMA kdf_iter = 4000;
ATTACH DATABASE "DeMicroMsg.db" AS DeMicroMsg KEY "";
SELECT sqlcipher_export("DeMicroMsg");
DETACH DATABASE DeMicroMsg;
*/
var prcs,err = process.popen(sqlcipher++" "++dbPath)
if(!prcs) return console.log("打开数据库异常");
cmd=string.format(cmd,key)
prcs.write(cmd)//写管道
var result = prcs.readAll();//读管道直接到指定字符串结束,不阻塞当前线程窗口消息。
console.debug(result);
prcs.close()
bat
sqlcipher-shell64.exe EnMicroMsg.db < adb.txt
echo ok
pause
adb.txt
PRAGMA key = '0fc1af9';
PRAGMA cipher_use_hmac = OFF;
PRAGMA cipher_page_size = 1024;
PRAGMA kdf_iter = 4000;
ATTACH DATABASE "DeMicroMsg.db" AS DeMicroMsg KEY "";
SELECT sqlcipher_export("DeMicroMsg");
DETACH DATABASE DeMicroMsg;
|