三星手机提取微信聊天数据的方法,无需root。
注意,暴力破解密码需要英伟达显卡,一小时内破解,无显卡可能要两天。
1. 安装USB驱动,通过S换机助手,备份微信软件至电脑。注意,选择不加密。
三星USB驱动下载
S换机助手下载链接
2. 使用7-Zip解压提取数据库文件
找到备份路径下的 SM-G9730_20230113231240\APKFILE\com.tencent.mm.data
文件,右键=>7-Zip=>打开压缩包,找到com.tencent.mm\r\MicroMsg\f5202199666edd0e02d05dfe03dc66d1\EnMicroMsg.db
文件,单独复制出来。此处无法获得微信UID,毕竟备份的有所缺失,因此采用暴力破解。
3. 下载所需文件
SQLCipher-Password-Cracker 下载这个仓库,解压 SQLCipher-Password-Cracker-OpenCL-master.zip
OpenSSL 下载Win64 OpenSSL v3.0.7 EXE Win64OpenSSL-3_0_7.exe
sqlite-amalgamation 下载Source Code - sqlite-amalgamation-3400100.zip
pysqlcipher3 下载这个仓库,解压 pysqlcipher3-master.zip
sqlcipher 下载这个仓库,解压 sqlcipher-master
4 安装pysqlcipher3
1 首先需要安装python 3.7,并且安装CUDA、Cudnn。装过TensorFlow的Anaconda环境都可以。在虚拟环境内运行python -m pip install pyopencl
2 然后安装OpenSSL,注意需要将OpenSSL的dll安装到系统目录:C:\Program Files\OpenSSL-Win64
。
3 不要!将sqlite-amalgamation-3400100.zip
内的四个文件,复制到pysqlcipher3-master\amalgamation
文件夹。
应该:在sqlcipher-master目录下,打开Developer Command Prompt of Visual Studio
,运行nmake /f Makefile.msc sqlite3.c
,把sqlite3.c
和sqlite3.h
复制到pysqlcipher3-master\amalgamation
文件夹。
4 修改 pysqlcipher3\src\python3
目录下connection.h, statement.h, util.h
三个文件中#include "sqlcipher\sqlite3.h"
为 #include "sqlite3.h"
。
5 修改 pysqlcipher3
目录下setup.py
中 "openssl = os.path…"为openssl = r"C:\Program Files\OpenSSL-Win64"
,修改openssl_conf = os.environ.get('OPENSSL_CONF')
为openssl_conf = r"C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf"
,修改openssl_lib_path = os.path.join(openssl, "lib")
为openssl_lib_path = os.path.join(openssl, "lib\VC")
,修改libeay32.lib
为 libcrypto64MD.lib
, 并加入ext.extra_link_args.append("libssl64MD.lib")
。
6 复制C:\Program Files\OpenSSL-Win64
目录下libcrypto-1_1-x64.dll 、libssl-1_1-x64.dll
文件到SQLCipher-Password-Cracker-OpenCL-master
7 pysqlcipher3
目录下虚拟环境内运行 python setup.py build_amalgamation
python setup.py install
5 运行破解
SQLCipher-Password-Cracker-OpenCL-master
目录下Run.py
文件修改Encrypted_DB_PATH="EnMicroMsg.db"
,把EnMicroMsg.db
复制过来。
SQLCipher-Password-Cracker-OpenCL-master
目录下虚拟环境内运行python Run.py 0
跑了两次默认参数,提示未能成功破解密码。参考其他链接,可以适当调整判定逻辑和参数:
in pbkdf2-sha1_aes-256-cbc.cl
if(((uint)(data[5] ^ iv[5])==0x40) && ((uint)(data[6] ^ iv[6])==0x20) && ((uint)(data[7] ^ iv[7])==0x20) && ((uint)(data[56] ^ iv[56])==0x00))
in Run.py
OUTER_PASS_LENGTH = 4
c.execute("PRAGMA cipher_compatibility=3;") #new
c.execute("PRAGMA cipher_hmac_algorithm=HMAC_SHA1;") #new
最后在RTX 1660Ti上Brute Try completed after a total time of 47.4 min.
7 数据库结构
使用sqlcipher.exe读取数据库,主要的表是群聊名单chatRoom
,聊天记录message
,联系人名单rcontact
,联系人标签ContactLabel
,还有一些wallet、biz、img、voice之类的。
Last 参考链接
https://zhuanlan.zhihu.com/p/123942610
https://zhuanlan.zhihu.com/p/164917107
https://www.jianshu.com/p/90224ab9cdf2
https://blog.csdn.net/muzhicihe/article/details/109902849
https://blog.csdn.net/wem603947175/article/details/103584228