微信6.6.6 EnMicroMsg.db提取

0x00.ADB 提取MicroMsg文件夹

挂载系统分区并定位至/data/data/com.tencent.mm/MicroMsg

使用ADB指令将MicroMsg以沙盒方式提取至本地:

adb pull /data/data/com.tencent.mm/MicroMsg  X:\

0x01.获取EnMicroMsg.db密码

在MicroMsg文件夹下找到EnMicroMsg.db数据库文件,该文件是加密文件,无法直接打开。

经过逆向分析得出,该数据库密码是一字符串的md5值,具体算法如下:

密码=md5(IMEI+uin),其中uin与登陆的微信账号对应。

在MicroMsg文件夹下找到system_config_prefs.xml,其中name=default_uin的整数值便是uin值。

在手机拨号盘中输入*#06#获取手机对应IMEI码,由此可得:

IMEI=354XXX77972179

Uin= -154XXX3212

密码计算公式为该字符串的32位md5码的前7位。

md5(354XXX77972179-154XXX3212,32)= 4ffcbXXXXX71a722XXXXXeb0a3fa

计算完毕后使用由SQLCipher 2.1版本编译运行查看器(经尝试,只有2.1版本的源码编译后可以实现嵌套加密功能,低于2.1版本无此功能,高于2.1版本不向下兼容)尝试解密数据库。


0x02.EnMicroMsg下常用表解释

0x001.Rcontact

列名 username Alias Conremark Nickname
解释 对应的联系人微信账户实际ID 对应联系人的微信账户显示ID 用户对联系人的备注 对应联系人的昵称

0x002.Chatroom

列名 chatroomname Memberlist Displayname Roomowner Selfdisplayname
解释 对应聊天群ID 聊天群成员微信实际ID 聊天群成员显示昵称 聊天群房主实际ID 该用户在所在聊天群中的自我备注

0x003.message

列名 issend Creattime Talker Content
解释 布尔值为0表示收到消息,布尔值为1标识发出信息 表示对话创建时间 对话发生的对象 消息内容