微信数据库导出
解密/导出微信数据库
安卓
解密
sqlcipher.exe 2.1 版本
uin: auth_info_key_prefs.xml 里的 “_auth_uin”
手机IMEI码: 默认 1234567890ABCDEF
解密密钥:MD5(IMEI+uin) => 32位小写 => 取前七位
docker run -it -v /Users/xld/Desktop/project/SQLCipher/sqlcipher:/work -v /Users/xld/Desktop/project/SQLCipher/output:/output sqlcipher-mingw-static bash
export CC=x86_64-w64-mingw32-gcc
export CFLAGS=”-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2”
export LDFLAGS=”/opt/openssl-1.1.1w/libcrypto.a”
export PATH=/usr/local/mingw-w64/bin:$PATH
export C_INCLUDE_PATH=/usr/local/mingw-w64/include:$C_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/mingw-w64/lib:$LIBRARY_PATH
export PATH=/usr/x86_64-w64-mingw32/bin:$PATH
export C_INCLUDE_PATH=/usr/x86_64-w64-mingw32/include:$C_INCLUDE_PATH
export LIBRARY_PATH=/usr/x86_64-w64-mingw32/lib:$LIBRARY_PATH
make clean || true
make -j$(nproc)
apt update && apt install -y mingw-w64
apt install -y mingw-w64-x86-64-dev
apt update && apt install -y tcl
apt update && apt install -y build-essential
./configure –host=x86_64-w64-mingw32 –build=x86_64-linux-gnu –enable-tempstore=yes
CFLAGS=”-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2”
LDFLAGS=”/opt/openssl-1.1.1w/libcrypto.a”
x86_64-w64-mingw32-gcc –version
find /usr/x86_64-w64-mingw32/include -name stdio.
export PATH=/usr/local/ssl/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH
apt-get install build-essential gcc libc6-dev pkg-config
LDFLAGS=”-L/usr/local/ssl/lib”
CFLAGS=”-I/usr/local/ssl/include”
./configure –enable-tempstore=yes CFLAGS=”-DSQLITE_HAS_CODEC”
./configure CFLAGS=”-I/usr/local/ssl/include -DSQLITE_HAS_CODEC” LDFLAGS=”-L/usr/local/ssl/lib”
LDFLAGS=”-L/usr/local/ssl/lib -lssl -lcrypto”
./configure CFLAGS=”-I/usr/local/ssl/include -DSQLITE_HAS_CODEC” LDFLAGS=”-L/usr/local/ssl/lib -lssl -lcrypto”
make clean
make -j$(nproc)
一、获取EnMicroMsg.db
EnMicroMsg.db是存储在安卓手机内部存储(非root无法直接访问)微信应用中的加密数据库,应为 Encrypted Micro Massage 的缩写。对于开启root后的手机,其位置位于:
1 | /data/data/com.tencent.mm/MicroMsg/最长那个目录名/EnMicroMsg.db |
对于未root用户,可通过安卓虚拟机获取EnMicroMsg.db。后续数据库解密需要虚拟机IMEI,而在VMOS pro中需花费10元开vip才可以查看IMEI(乞丐版看不了)。具体流程为:
- 备份真机聊天记录至电脑
- 开虚拟机,虚拟机中安装微信并恢复聊天记录
- 虚拟机开root,导出EnMicroMsg.db
二、计算数据库密码
数据库密码由手机设备IMEI、微信用户id uin,通过MD5加密而成。
- IMEI:root用户直接使用真机IMEI,多个IMEI的话就尝试多次
- uin:打开/data/data/com.tencent.mm/MicroMsg/shared_prefs/system_config_prefs.xml,文件内容如下:
1 |
|
其中,1234567890即为uin。
获取IMEI与uin后,在下面网站中生成数据库密码。
MD5在线加密 - MD5加密工具 - MD5在线生成md5jiami.bmcx.com/
具体地,要加密的字符串为IMEI+uin,例如IMEI为863676041234567,uin为1234567890,则要加密的字符串为8636760412345671234567890。点击加密后,输出结果的前7为即为数据库密码。
三、打开EnMicroMsg.db
该数据库由sqlcipher v2.1加密。sqlcipher官网为https://www.zetetic.net/sqlcipher/,社区版不要钱,需要手动编译。商业版很贵,但不需要编译。
这里直接给出编译好的版本,不要钱!(辣鸡CSDN)
打开sqlcipher2.1.exe,输入上一步得到的密码,打开数据库。若有多个IMEI,则尝试多个密码。
打开后,message表里面就是聊天记录。表中一行为一条消息,createTime字段是发送消息的unix时间戳,talker字段是对话对象的微信id,isSend字段表示该条消息是否是本方发送的。sqlcipher可以直接将表导出至csv。导出后,unix时间戳字段可以通过以下公式转换为excel中的日期时间:
1 | =TEXT((AD1/1000+8*3600)/86400+70*365+19,"yyyy/mm/dd hh:mm:ss") |