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标识发出信息 | 表示对话创建时间 | 对话发生的对象 | 消息内容 |