适用于移动端微信8.x版本的加密数据库解密工具
Wechat On Android Decrypt-EnMicroMsg.db
介绍
适用于移动端微信8.x版本的加密数据库解密工具
参考链接
[1] https://ssine.ink/posts/wechat-data-decryption/ (主要参考)
[2] https://github.com/chg-hou/EnMicroMsg.db-Password-Cracker (cpu解密程序)
[3] https://github.com/whiteblackitty/SQLCipher-Password-Cracker-OpenCL (gpu解密程序)
[4] https://www.cnblogs.com/ant-wjf/p/4117460.html
CPU解密工具安装教程
参考[1] 和 [2]
GPU解密工具安装教程
安装结构如图
如果openssl安装在C盘默认位置, 可以尝试编译好的pysqlcipher3库
安装环境
-
OpenSSL 安装
下载地址
测试3.3.0版本没问题
注意右侧描述要有 Recommended for software developers… -
cudnn安装
-
ActiveTcl 安装
-
visual studio
打开安装程序, 工作负荷中找到桌面应用和移动应用, 选择使用C++的桌面开发
-
python 3.7
安装anaconda(推荐)或直接安装python3.7
安装工具
-
新建文件夹WxDecrypt, 使用git工具克隆
sqlite
sqlcipher
pysqlcipher3
SQLCipher-Password-Cracker-OpenCL
到本地目录 /WxDecrypt -
从 sqlite 库生成opcodes.h
Windows程序和应用中搜索Developer Command Prompt for VS xxxx
cd 到 /sqlite目录
nmake /f Makefile.msc
打开opcodes.h, 193行添加
#define OP_IfSmaller 190
复制opcodes.h 到 /pysqlcipher3/amalgamation -
从sqlcipher生成sqlite3.c, sqlite3.h
cd 到 /sqlcipher 目录
nmake /f Makefile.msc sqlite3.c
打开sqlite3.c, 合适位置添加
#include "opcodes.h"
在上一个文件夹搜索sqlite3OpcodeName函数实现, 和OpHelp宏, 复制到sqlite3.c合适位置
复制sqlite3.c和sqlite3.h到**/pysqlcipher3/amalgamation** -
生成 pysqlcipher3 库
cd 到 /pysqlcipher3 目录
打开 /setup.py , 69行改为
quote = '"' if sys.platform != 'win32' else '\"'
build_extension 方法中的if
改为if sys.platform == "win32": # Try to locate openssl openssl_conf = os.environ.get('OPENSSL_CONF') if not openssl_conf: error_message = 'Fatal error: OpenSSL could not be detected!' raise RuntimeError(error_message) # openssl = os.path.dirname(os.path.dirname(openssl_conf)) openssl = "C:\\Program Files\\OpenSSL-Win64" openssl_lib_path = os.path.join(openssl, "lib\\VC\\x64\\MD") # Configure the compiler ext.include_dirs.append(os.path.join(openssl, "include")) ext.define_macros.append(("inline", "__inline")) # Configure the linker ext.extra_link_args.append("libcrypto.lib") ext.extra_link_args.append("libssl.lib") ext.extra_link_args.append('/LIBPATH:' + openssl_lib_path) else: ext.extra_link_args.append("-lcrypto")
其中
openssl
为OpenSSL安装路径
编译成功后将 /pysqlcipher3/build/lib.win-amd64-cpython-37/pysqlcipher3 复制到 /SQLCipher-Password-Cracker-OpenCL 目录 -
修改新版本EnMicroMsg.db判定头
cd 到 SQLCipher-Password-Cracker-OpenCL 目录
修改 /Lib/pbkdf2-sha1_aes-256-cbc.cl, 第752行//if(((uint)(data[0] ^ iv[0])==4) && ((uint)(data[1] ^ iv[1])==0) && ((uint)(data[2] ^ iv[2])==1) && ((uint)(data[3] ^ iv[3])==1)) if(((uint)(data[5] ^ iv[5])==0x40) && ((uint)(data[6] ^ iv[6])==0x20) && ((uint)(data[7] ^ iv[7])==0x20))
-
测试&运行
python genTestDB.py [password]
创建加密数据库
修改 /Run.py 中加密数据库路径
python Run.py
检查平台参数
python Run.py [platform number]
运行解密程序
如何从安卓手机提取EnMicroMsb.db
手机微信文件提取:小米9为例, 免root
环境
MIUI 12.5.6稳定版, 未解锁
微信8.0.25
Windows10 64bit
java8
使用工具
winhex
android-backup-tookit
7zip
提取步骤
MIUI 12.5.6稳定版, 未解锁
选择备份到电脑
将备份文件复制到电脑
使用winhex打开备份文件.bak
选择41 4E之前的数据, 右键, edit, remove, 删除41 4E之前的数据
操作完成后ctrl+s保存
将修改后的文件拖到“一键解包.bat”批处理上, 等待几分钟(取决于电脑性能和bak文件大小,可以观察硬盘读写状态)
就得到.tar文件
使用7zip解压.tar文件得到微信的原始包
聊天记录在\apps\com.tencent.mm\r\MicroMsg\4de5***********d326\EnMicroMsg.db这个数据库是加密的, 需要解密
参考资料
[1] https://www.feifeiboke.com/android/3669.html
[3] http://www.liekang.com/248106.html
环境及工具
解包工具里面的abe.jar 不能解析5.0版本的ab包, 这里换成 android-backup-tookit\android-backup-processor\executable 路径下的abp.jar文件.
将abp.jar放到一键解包.bat目录下
将一键解包.bat里的
java -jar "%~dp0\abe.jar" unpack %bakFile% %bakFile%.tar
修改为
java -jar "%~dp0\abp.jar" unpack %bakFile% %bakFile%.tar
即可