Skip to content

WilliamQf-AI/decrypt-PC-WeChat-db

 
 

Repository files navigation

decrypt-PC-WeChat-db

​ 把网上解密微信数据库ChatMsg.db的祖传代码改了一下,去掉了OpenSSL的依赖,用相关的密码算法源码替换了,就算是密码学作业了。

​ 添加了自动获取密钥的功能,需登录微信。适用于版本2.8.0.121。

加密结构说明

​ 微信数据库采用的加密算法是256位的AES-CBC。数据库的默认的页大小是4096字节即4KB,其中每一个页都是被单独加解密的。

​ 加密文件的每一个页都有一个随机的初始化向量,它被保存在每一页的末尾。

​ 加密文件的每一页都存有着消息认证码,算法使用的是HMAC-SHA1(安卓数据库使用的是SHA512)。它也被保存在每一页的末尾。

​ 每一个数据库文件的开头16字节都保存了一段唯一且随机的盐值,作为HMAC的验证和数据的解密。

​ 用来计算HMAC的key与解密的key是不同的,解密用的密钥是主密钥和之前提到的16字节的盐值通过PKCS5_PBKF2_HMAC1密钥扩展算法迭代64000次计算得到的。而计算HMAC的密钥是刚提到的解密密钥和16字节盐值异或0x3a的值通过PKCS5_PBKF2_HMAC1密钥扩展算法迭代2次计算得到的。

​ 为了保证数据部分长度是16字节即AES块大小的整倍数,每一页的末尾将填充一段空字节,使得保留字段的长度为48字节。

​ 综上,加密文件结构为第一页4KB数据前16字节为盐值,紧接着4032字节数据,再加上16字节IV和20字节HMAC以及12字节空字节;而后的页均是4048字节长度的加密数据段和48字节的保留段。

​ 参考:https://www.zetetic.net/sqlcipher/design/

About

自动解密PC微信数据库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 100.0%