Recovery of mobile WeChat chat records
Backgroud
手机微信的聊天内容都储存在EnMicroMsg.db
里,它是一个Sqlite数据库,每条聊天数据都有一个index(索引)值,一个value(数据)值(聊天数据内容)。
注意事项:关于恢复已经删除的微信聊天记录
安卓的微信版本号小于等于5.2微信的删除操作只有一步,它只将 数据库EnMicroMsg.db 里的index值清0来表示此条数据已经无效,可以被清除或覆盖。所以此时我们可以读取value值来恢复被误删的微信聊天记录。- 安卓微信版本5.3+
删除操作有2步,第一步将聊天数据的Index值清零;第二步将聊天数据的value值清零。所以此时我们读取到value值为零或残缺,自然无法正确恢复聊天内容了。- iPhone版的微信
不受 此影响。
那些打着可以恢复100%聊天数据的旗号的人99.99%都是骗人的。
剩下的那0.01%或许有权限从微信服务器来获取我们的聊天记录。
正⺙*广亻寸*强制所有通信商必须将用户数据至少保留3个月,重要数据必须保留6+个月,如果你知道 爱德华·斯诺登 是谁,就不会对此事有多惊讶了。
Ready
一、从手机里导出微信聊天数据
使用手机自带的备份APP
将微信的应用数据备份至SDCard上,备份文件不要加密。小米/华为/Vivo/三星等等手机都自带备份APP,直接使用即可。
而数据备份的时间视微信的应用数据大小而定,10G的应用数据大概需要使用2~3小时。
如果你的手机已经root,那么你可以直接使用adb
将/data/data/com.tencent.mm
复制或使用第三方备份APP。
在备份出来的文件夹里找出com.tencent.mm
,我们需要它。
二、准备数据库 EnMicroMsg.db 的查看工具
天翼云下载地址:工具合集(访问码:lk7e)
- 飞零微信QQ聊天记录恢复助手
- SqlCipher v2.1
Cracking the WeChat database
EnMicroMsg.db
位于com.tencent.mm/MicroMsg/[weixin_name]/
下。
文件夹[weixin_name]
的名字为32位的md5值
,如d41d8cd98f00b204e9800998ecf8427e
,一个微信号对应一个文件夹。
如果有多个[weixin_name]
,那么此微信肯定登录过多个微信号。
One、飞零微信QQ聊天记录恢复助手
这个工具的免费功能只能查看不能导出聊天数据,如果需要导出聊天数据则需付费购买终身使用权。
但不可否认它的使用方法十分简便,直接打开并加载微信数据库即可显示出聊天内容。
它还可以尝试扫描已经删除了的聊天数据,当然免费版的即使扫描出来也只显示每条聊天内容的第一个字。
如果它扫描出来了,你可以去付费查看或导出聊天内容的全部,如果没有扫描出来,就不用再去付费了。
此工具的具体使用方法详见安卓、苹果微信恢复删除记录通用教程
Two. Use SqlCipher
1. 获取数据库EnMicroMsg.db的密码
微信数据库EnMicroMsg.db的密码是由
要获取数据库的密码,首先要查找手机IMEI
和微信号的uin
。
Get IMEI
方法有两种:
- 方法一、在
com.tencent.mm/shared_prefs/DENGTA_META.xml
里查找名为IMEI_DENGTA的值 - 方法二、拨号界面输入
*#06#
即可获取IMEI。这个短指令能够获取手机的IMEI、MEID等多个设备ID。但是系统会随机选择一个作为加密算法所需的IMEI,所以我们需要将它显示的数据全部记录下来,之后再分别与uin
计算生成密码。
Get uin
uin
(unique identifier),唯一标识符(整数类型),微信分配每个用户的唯一标识符,它具有不可重复性。
也就是说这个世界上没有两个uin
相同的微信号。
那么如何查看微信号的uin
呢?方法有两个:
- 方法一、
uin
存储在com.tencent.mm/shared_prefs/auth_info_key_prefs.xml
里,在这个文件里查找auth_uin
。 - 方法二、登录web微信,按F12打开网页调试工具,然后
ctrl+F
搜索uin
,可以找到一串长长的URL,里面的uin
就是当前登录的微信的uin
。
Caculate the password of database
- IMEI中的
字母必须为大写 - MD5值中的
字母必须为小写
这里我们使用在线MD5计算,计算IMEI
和uin
连一起的字符串的MD5值,密码为32位小写的前七个字符。
如IMEI
为1234567890ABCDEF,uin
为987654321,此时计算123456789ABCDEF987654321的MD5值为ae8bd123db344180e9e6cf314e4ae532,那么密码就为ae8bd12
。
2、查看微信数据库
- 使用
sqlcipher.exe
打开com.tencent.mm/MicroMsg/[weixin_name]/EnMicroMsg.db
,在弹出的窗口输入刚刚生成的7位密码。 - 接下来就可以愉快的查看表结构了,还可以选择Browse Data查看数据,也可以选择Execute SQL执行sql语句了。
至此微信手机本地的数据库已经被我们打开了。
PC端的微信也是使用Sqlite数据库,但PC端的密码为32位,如何获取请自行搜索。
References:
- foundkey-cnblog
- blackfeather
- fenloger
- csdn