本文不涉及如何获取微信数据库原理及解密原理(这部分代码网上已经非常非常多了),假设前提是都已经获取了两个数据,分别是加密库EnMicroMsg.db,解密密钥aaaaaaa。
我们知道,微信数据库是使用sqlcipher进行加密的。因此,使用sqlcipher解密即可。
步骤如下:
1、网上下载sqlcipher-3.0.1 for windows版本
2、进入下载文件的bin目录,将加密库EnMicroMsg.db放到该目录下,shirt+右键打开命令行窗口
3、执行对应版本的命令,例如我使用的win64位系统,则命令行输入
sqlcipher-shell64.exe EnMicroMsg.db
4、输入
PRAGMA key='aaaaaaa';
PRAGMA cipher_migra;
ATTACH DATABASE = "decrypted_database.db" AS decrypted_database KEY "";
SELECT sqlcipher_export("decrypted_database");
DETACH DATABASE decryped_database;
此时,查看该目录下已经生成decrypted_database.db,这就是解密之后的sqlite文件。
=================================================================
读取PC版微信数据库(电脑版微信数据库)内容
1、PC版微信的密钥是32位byte,不同于安卓版(7位字符串)
2、通过OD或者x96dbg可以从PC端获取这个key,具体不做赘述。我自己写了一个程序,这样方便些
3、sqlcipher是可以直接输入Raw key的,但是不清楚是否加密规则与微信电脑版一致。
4、网上有c++代码,直接使用openssl 1.0.x版解密数据库,因为sqlcipher也是用这个生成的mac-key,然后AES加密。所以可以自己写代码调用openssl解密。
5、编译c++代码需要做若干配置,加载openssl的头文件和lib之后才能编译。
解密之后的数据库可以直接用工具软件打开,不再需要密码。如下图: