EnMicroMsg.db是存储用户聊天信息的SQLite数据库,为了保护用户的隐私,使用SQLCipher加密。通过查阅微信APP的反编译代码分析的资料,得知,解密密钥是根据智能手机的国际移动设备身份IMEI,与当前微信用户的uin计算得出的。具体计算公式为:
该加密方法从微信5.0 以来 均未发生变化。其中Left7为提取字符串的前七个字符。IMEI和uin的数据可以从以下配置文件中提取:
IMEI:data\data\com.tencent.mm\MicroMsg\CompatibilityInfo.cfg
u in:data\data\com.tencent.mm\shared_prefs\system_config_prefs.xml。
以IMEI= 866174957262534,uin =2007803184的设备为例,计算出的key值为4c27f5d,使用SQLcipher.exe工具打开,输入解密key,如图,可以查看微信的数据表。
图4.1微信数据表
聊天记录保存在message表中,将其导出后可以看到详细的聊天内容。如图4.2与图4.3所示,为一段聊天场景对应的message表存储。
图4.2 message表中存储的一段消息
图4.3该消息对应的聊天场景
Message表中比较重要消息记录数据字段有“talker”、“createtime”、“type”、“content”、“imgPath”和“isSend”。“talker”字段存储用户与之通信的微信账号,对应微信账号的详细信息存储在“userinfo”表和“rcontact”表中。“createtime”是此信息的时间戳。文本消息内容存储在“content”中。“isSend”字段表示发送状态,1由用户发送,0为“talker”创建用户接收。
网友评论