微信聊天记录解析(4):安卓访问 EnMicroMsg.db
前文《微信聊天记录解析(1):Java访问 EnMicroMsg.db》介绍的是 Java在后台解析EnMicroMsg.db,包括了如何获取数据库密钥以及必要的匹配,本文主要介绍如何在android本地解析EnMicroMsg.db。
1. 数据库密钥获取
如果不知道如果获取密钥,请参考 《微信聊天记录解析(1):Java访问 EnMicroMsg.db》第2部分。
2. maven依赖
这里使用的腾讯的 WCDB,腾讯官方文档请参考:https://github.com/Tencent/wcdb/wiki
在build.gradle中添加以下依赖:
// 腾讯使用的 sqlite 文档:https://github.com/Tencent/wcdb/wiki implementation 'com.tencent.wcdb:main:2.1.4' // WCDB主模块,包含所有类和接口 implementation 'com.tencent.wcdb:annotation:2.1.4' // 包含用于ORM配置的注解 // 下面两个配置选择配置一个,apt和ksp选用一个,不能同时配置 annotationProcessor 'com.tencent.wcdb:compiler:2.1.4' // 如果要使用Kotlin的ORM则需要配置ksp,使用ksp还需要专门为ksp做一些环境配置,请自行了解 //ksp 'com.tencent.wcdb:compiler:2.1.4' // 如果要兼容使用WCDB 1.0版本或Android SDK SQLite的接口,则配置下面这个依赖 implementation 'com.tencent.wcdb:compat:2.1.4'
3. 访问EnMicroMsg.db
将EnMicroMsg.db复制到外部存储目录后,先确保获取到了相关的文件操作权限:android.permission.READ_EXTERNAL_STORAGE
解密参数如下:
Database database = new Database(dbPath); database.setCipherKey(key.getBytes(StandardCharsets.UTF_8), 1024, Database.CipherVersion.version1);
解密参数解释:
public void setCipherKey(byte[] key, // 密码 int pageSize, // 加密页大小 CipherVersion version) // 创建数据库的SQLCipher的主版本
重点:
String的key获取byte的时候,必须使用 "UTF-8" 或者 "ISO-8859-1",pageSize必须为1024,version必须为 Database.CipherVersion.version1
==================================================
博主说明:文中若有错误,敬请指出,如有侵权,请及时联系删除。
(图片来源网络,侵删)
(图片来源网络,侵删)
(图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。