这里的恢复,并不是指要将删除的聊天记录恢复到微信聊天记录中,仅仅是想找到那部分误删除的记录。
场景
在没有任何备份的条件下,误删好友聊天记录。(备份指 系统备份 或者 通过微信的备份功能备份聊天记录)
结果
不可恢复。在网上查看了很多方法,包括各种数据恢复软件,通过测试发现都是不可行的,至少我本地多次测试是这种情况。误删除的数据,确确实实从聊天记录表message里面删除了。网上说的那些方法,确定能用吗?
操作过程
获取数文件
其实就是 /data/data/com.tencent.mm/MicroMsg/微信号文件夹/EnMicroMsg.db 文件,这是一个加密的sqlite数据库文件,获取这个文件的方式目前来说有两种:
- 开启root权限,通过文件管理器直接访问;
- 通过手机的自带的备份功能获取到这个文件,有些手机支持,有些手机不支持,备份的原理就是将整个 com.tencent.mm 文件夹打包,然后放到 /Backup 文件夹下面;
获取微信UIN
在 /data/data/com.tencent.mm/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml 文件里面,找到 name = '_auth_uin' 对应的 value
获取手机IMEI
拨打 *#06#
获取加密密码
根据 UIN 和 IMEI 进行MD5加密,返回32位MD5码,密码 = MD码.substring(0, 7).toLowerCase()
查看聊天记录
- 通过
sqlcipher.exe打开EnMicroMsg.db文件,打开的时候会要求输入密码,就是上面根据 UIN 和 IMEI生成的密码。 - 可以发现里面有很多的表,其中聊天记录就保存在 message 表里面。
- 通过返回测试,发现删除聊天记录在 message 表中是不存的,说明记录真正从 message 里面删除了?有没有备份表?不知道
说句实话,当我看到message表内容的时候,我感觉胜利就在眼前,但当我知道message表里面没有误删的数据的时候,我绝望了,太难了。然后想问一下腾讯客服,然后在官网看到这么一段话。
然后我果断放弃咨询了。
测试过程
最开始不想开启手机root权限,也不知道其实通过系统备份的文件就是 com.tencent.mm 文件夹里面的内容,耽误了很多时间。因为在这种情况下根本拿不到 /data/data/com.tencent.mm/MicroMsg/微信号文件夹/EnMicroMsg.db 文件,没有权限。
不想root手机最主要的原因就是不知道这种方式到底能不能恢复聊天记录,手机是刚买的,root之后就放弃了三包,很纠结。为了验证这种方式的可行性,最后下载了一个 夜神模拟器,嗯,就把它当作是电脑上的一部手机就可以,可以很方便的开启root权限。操作步骤如下:
- 安装夜神模拟器;
- 安装微信,登录自己的微信,随便聊天;
- 导出
EnMicroMsg.db文件,通过sqlcipher查看 message 表内容; - 故意删除几个人的聊天记录,然后重复步骤3;
- 得出结论:删除的记录不在 message 表中;
但是,你以为这就完了?
没有,我不想相信这个结果,于是我从网上找了一些微信聊天记录恢复软件,感觉这些软件的原理都差不多:
- 先通过手机自带备份功能备份微信数据;有些手机好像没有这个功能,我测试时用的是魅族16s,是有这个功能的
- 执行恢复操作;
有了前面的讲解,这个过程就很好理解了。通过手机自带备份功能备份微信数据,其实就是为了拿到 com.tencent.mm 文件夹里面的所有内容,接下来的恢复操作其实就是就是拿到 EnMicroMsg.db 文件内容展示出来;
于是,我又将手机备份的文件拷贝的电脑上,再通过sqlcipher进行分析
结果还是一样的,删除的记录不在 message 表中
但是,你以为这就完了?
没有,我去淘宝买了一个数据恢复软件,不到10分钟这位小哥说给我退款。什么情况??????
所以我很想知道,微信在没有任何备份的情况下,真的可以恢复误删的聊天记录吗?
iphone可以恢复,听说是将数据上传到了icloud。穷,没用过耶,也不知道是真是假???
其实我还抱有一丝侥幸心理,有没有可能手机备份出来的文件又问题,少了一部分?虽然我自己都不信,但还是申请了开通root权限。有时间再试试看吧,感觉没戏。