微信PC端数据库文件解密
概述
微信的数据文件根目录(WeChat Files)可以在设置中的“文件管理”选项中查看,通常位于电脑的“文档”文件夹中。
这其中有数据库文件以及收到的图片、视频、文件等等,而我们主要讨论的数据库文件,存放于WeChat Files/wxid_xxxxx/Msg之中。这里的wxid_xxxxx也可能是你自己设置的微信号。
这个文件夹中有很多文件,可能是用来校验的,我们只需要看.db结尾的 SQLite 文件。不过这些文件是经过 AES 加密的,所以我们需要找到密钥并且解密。
获取密钥
完成这一步大致有两个方向,直接用内存分析工具爆破微信(网上的博客中大多也说的是这个方式),不过在 GitHub 上其实有两个项目可以帮我们快速完成这一步:
AdminTest0/SharpWxDump
SpenserCai/GoWxDump(根据作者描述,这只是把上面那个项目使用 Go 重构的版本)
其中第一个项目在编译时就遇到了困难(本人没用过 C# 和 .NET),我最后是狠下心来跟着这篇教程下了个 VS 才编译出来,也将编译产物上传到了我 Fork 的仓库,然而发给别人用的时候发现似乎兼容性比较差,悲……不过应该说自己在自己的设备上用 VS 编译是最可靠的
第二个仓库就方便很多,只要电脑上有 Go 环境直接执行build.bat就行(记得配置go get的代理,否则下载第三方包会很慢)。不过需要说明的是,建议大家只使用它的show_info功能,它的解密极其不可靠。
我这里对 Go 的这个版本也进行了编译。
如果你使用的是第一个,那么下载好后用管理员身份从命令行运行exe,他就会输出类似下面的格式(中间乱码的WeChatMail忽略就行):
如果是第二个,双击启动之后输入show_info并回车,会有类似这样的输出:
其中的WeChatKey就是我们解密数据库文件需要的 AES 密钥。
解密数据库
打开微信数据文件所在的目录,例如我的是 D:\Documents\WeChat Files\wxid_r5xxxxxxxxxx12\Msg,将这里面的所有.db文件复制到一个新的文件夹中(别忘了Multi文件夹中还有一些),然后可以通过下面的 Python 脚本进行解密(在前两行输入好你的文件所在目录):
这个脚本可以将你设置的目录下的所有.db文件进行解密,例如对于abc.db,会生成decoded_abc.db文件。特别说明的是,如果复制出来后你的Multi文件夹还是独立的一个文件夹,需要分别对D:\微信数据库文件操作和D:\微信数据库文件\Multi进行操作。
另外,xinfo.db无需解密,可直接查看。
解密后,你就可以通过任意一个你喜欢的数据库可视化查看工具查看这些数据库了。