微信聊天记录提取全流程:数据库文件获取、密码解密与导出

2025-05-05
来源:网络整理

背景

整个过程分为三个步骤:

提取聊天消息.db文件以获取数据库密码,通过指定导出聊天记录以获取数据库文件的条件来解密数据库文件

微信的 .db存储在/data/data/com..mm// {hash }/.db中

植根手机后,使用RE文件浏览器和其他文件浏览器复制它。使用手机随附的备份功能备份微信应用程序数据,解压缩并提取数据库密码并解密数据库。

在上一步中检索的.DB数据库文件是加密的,加密方法是V1加密

微信本地数据库密码算法获得了手机的IMEI代码。拨号 *手机上的#06#查看。通常,手机使用卡插槽1的IMEI。如果它不起作用,则可以尝试卡插槽2。CDMA手机使用MEID。

对于诸如MIUI之类的隐私保护系统,使用默认的系统。

还有一个说法是,IMEI代码存储在.cfg和.cfg下/data/data/com..mm/,or/data/data/com..mm/com/.xml/.xml中,您可以尝试找到它。

获取当前登录到微信帐户的UIN(存储在SP中)。 UIN存储在/data/data/com..mm/com...xml,.xml,.xml和其他文件中。博主在最后一个文件中找到了它。类型为int,名称为,并且数据是int类型,带有负符号。喜欢

剪接IMEI和UIN无论UIN是否为负数,都可以将其与IMEI拼接为字符串是可以的。然后使用剪接的字符串IMEI + UIN来计算32位MD5值(将有一个在线计算上的工具),并拦截加密字符串的前七位数字(该字母必须是小写)是密码。蛮力解决方案参考使用最新版本打开连接数据库

下载地址:

参考文章

检查微信数据库的加密代码,可以使用版本1查看

private static final SQLiteCipherSpec qDP = new SQLiteCipherSpec().setPageSize(1024).setSQLCipherVersion(1);

当您再次查看源代码时,它将将HMAC关闭至4000。

public SQLiteCipherSpec setSQLCipherVersion(int version) { switch (version) {

微信聊天记录 数据库_聊天库微信记录数据怎么导出_聊天库微信记录数据怎么删除

case 1: hmacEnabled = false; kdfIteration = 4000; break; case 2: hmacEnabled = true; kdfIteration = 4000; break; case 3: hmacEnabled = true; kdfIteration = 64000; break; default: throw new IllegalArgumentException("Unsupported SQLCipher version: " + version); } return this; }

因此,手动指定要连接的参数配置:

PRAGMA kdf_iter = '4000'; PRAGMA cipher_use_hmac = OFF; PRAGMA cipher = 'AES-256-CBC'; PRAGMA cipher_page_size = 1024;

未能结束,检查官方文件并发现

PRAGMA cipher_compatibility :Force SQLCipher to operate with default settings consistent with that major version number for the current connection. 强制 SQLCipher 使用与当前连接的主版本号一致的默认设置运行。

通过配置,强迫指定的版本编号后,将自动使用该版本的默认配置链接,以免我们自己设置混乱的配置。将以下配置粘贴到工具中的加密算法配置选项中

PRAGMA cipher_page_size = 1024; PRAGMA cipher_compatibility = 1;

测试发现,好〜

使用版本3.2.1

参考和文章使用版本3.2.1

导出聊天历史记录

聊天库微信记录数据怎么删除_聊天库微信记录数据怎么导出_微信聊天记录 数据库

表中都有所有聊天记录,并且将不会详细描述特定的SQL语句。当然,无论您使用哪种软件,可读性都非常差,并且需要根据聊天组/人员分别显示一个程序。

参考文章建议 - 转储库是一个很好的库,用于从数据库中提取消息并以分类方式导出消息。它需要在+2环境中运行。有关特定配置,请参阅该项目。列出所有联系人:

./list-chats.py decrypted.db

将所有聊天记录导出为文本文件:

./count-message.sh output_dir

将对话渲染到HTML文件中:

./dump-html.py ""

导出的HTML文件可以在浏览器中打开,也可以进一步打印到PDF中。

以后的故事

用户生成的数据不属于用户本身,这是荒谬的。应用程序的设计不是以用户体验,而是以用户的钱包为中心。对聊天数据的严格限制可以大大增加微信用户的迁移成本,因为用户无法将聊天记录导入其他软件。但是,这样做对用户非常不友好。聊天记录漫游功能需要付款,最高级别的漫游无法保存所有聊天记录。这样,用户就无法在手机之外备份数据,并且在手机出现问题时,所有数据都将消失。我一直讨厌像微信这样的行为,但是我已经在手机上使用了很长时间了。如果我想扎根,我将丢失所有数据。我想使用模拟器秘密地到达陈Cang并遇到问题。因此,我更改手机后做的第一件事是扎根,冒着设备安全性的风险,而不是用于各种插件,而只是为了检索自己的数据。

感激的

分享