读取微信数据库

时间:2024-05-22 21:23:14

1,获取uin和imei

我就好奇了,我们在之前的文章中了解到用户的UIN是存储在xml中的,但是你看这个工具只要导入这个目录就可以解密,也就是说他能够拿到设备imei和uin值,所以我就怀疑他读取这个目录下的几个文件来获取的,那么就一个一个排除,首先通过肉眼判断哪些文件肯定不是的,最后发现就这几个cfg文件打开是二进制文件,所以怀疑对象就在这几个文件了,因为文件不多,我们可以这么排除,就是通过逐一修改文件名,然后在用那个工具解密,如果提示错误了,那么就表示这个文件是关键的,通过最后排查,有两个文件不能修改,也就是上图中文件名后面没有11的两个,一个是systemInfo.cfgCompatibleInfo.cfg了。那么这个文件是二进制文件,怎么解密呢?这个就简单了,直接用Jadx全局搜这两个文件:

读取微信数据库

运气很好,正好在第一个dex中就搜到了,点进去查看:

读取微信数据库

继续点进去查看:

读取微信数据库

到这里就看明白了,原来不是什么加密操作,而是序列化对象到文件中,那么想看这个文件的原始内容就简单了,我们去写一个Java程序把文件中的内容读取出来是Map结果,然后把所有的key和value打印看看结果:

读取微信数据库

运行看看结果:

读取微信数据库

 

2,根据imei+uin MD5取前7位置,这里用python获取

s = "-672215960"
#替换成自己的IMEI
c1 = "866309042607885"
m2 = hashlib.md5()
#可能出现编码问题需要转码
m2.update((c1+s).encode('utf-8'))
print(m2.hexdigest())

3,用SQLCipher查看数据库

PRAGMA key = '8a3dbce';
 PRAGMA cipher_use_hmac = off;
PRAGMA cipher_page_size = 1024;
PRAGMA kdf_iter =4000;
sqlite> .schema

4,注意

  • 第一、现在很多设备都有很多个imei值,一般是两个,所以如果一个失败了,就尝试第二个。因为你不知道微信获取的是哪个imei值

  • 第二、获取imei值我们会用简单的拨号和设置中进行查看,这里我用小米 4+6.0系统验证发现这两种方式查看的值是不一样的,而拨号的方式是正确的

  • 第三、就是有的同学imei和uin值都获取对了,但是计算MD5和全是字母小写这一点弄错了,也要注意

  • 第四、MD5后取前7位