前言: 通过日常使用微信得知,断网的情况下也是能够查看微信聊天记录,所以微信的聊天数据库肯定是存在本地文件的,所以我们只要找到微信存储的数据库位置就能通过数据库查看聊天记录了,但是微信本地数据库肯定是做了加密的,所以只要找到微信数据库的解密方法就能查看数据库了。
这里的微信解密规则具体不多讲,这是一个大神通过反编译查看微信的加密规则
想了解一下可点击大神的博客看下微信本地反编译解析过程原理
借鉴另外一个大神动态破解微信聊天记录 感谢这两位大神总结
微信本地数据库的加密规则:
1.获取手机IMEI码
2.获取当前登录微信账号的uin(存储在sp里面)
3.拼接IMEI和uin
4.将拼接完的字符串进行md5加密
5.截取加完密的字符串的前七位(字母必须为小写)
适用范围:手机必须已经获取ROOT权限
一.确保手机已经在root的情况下,手机上面下载安装 root explorer 文件管理器 各大应用市场都能搜到
二.打开手机文件 对应的微信数据库目录 /data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml
然后点击打开这个文件
如下图所示
获取到_auth_uin字段的value值,每个value值不一样,这只是我登录微信的值
三.通过代码获取数据库的校验密码
/**
* 获取手机的imei码
* @return
*/
private void initPhoneIMEI() {
TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
String mPhoneIMEI = tm.getDeviceId();
//1217750550 这个值就是在微信目录的value值 替换自己取到的值
initDbPassword(mPhoneIMEI,"1217750550");
}
/**
* md5加密
* @param content
* @return
*/
private String md5(String content) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
md5.update(content.getBytes("UTF-8"));
byte[] encryption = md5.digest();//加密
StringBuffer sb = new StringBuffer();
for (int i = 0; i < encryption.length; i++) {
if (Integer.toHexString(0xff & encryption[i]).length() == 1) {
sb.append("0").append(Integer.toHexString(0xff & encryption[i]));
} else {
sb.append(Integer.toHexString(0xff & encryption[i]));
}
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 根据imei和uin生成的md5码,获取数据库的密码(去前七位的小写字母)
* @param imei
* @param uin
* @return
*/
private void initDbPassword(String imei, String uin) {
if (TextUtils.isEmpty(imei) || TextUtils.isEmpty(uin)) {
Log.d(TAG, "初始化数据库密码失败:imei或uid为空");
return;
}
String md5 = md5(imei + uin);
String password = md5.substring(0, 7).toLowerCase();
//这里就是自己微信数据库的密码
Log.d(TAG, "微信数据库密码====="+password);
}
四.复制微信数据库到电脑
微信聊天记录数据库地址 /data/data/com.tencent.mm/MicroMsg/下面找到EnMicroMsg.db发送到电脑
五.下载sqlcipher图形化数据库
关于SQLCipher使用方法可以参考其官网https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
然后使用sqlcipher打开发送到电脑的EnMicroMsg.db文件 ,输入上面代码计算出来微信数据库密码,输入成功然后就可以查看微信数据库数据了
Database Structure里面都是表结构,Browser Data里面则是表里面的数据了。
常用库介绍:【rcontact】联系人表,【message】聊天消息表 这里只上传了查看联系人图片了,想要查看聊天记录的自己可以试试查询message这张表。
网友评论