转自:原创:newx
在电子数据取证過程中,对微信本地数据库的解密、提取与恢复是非常重要的工作内容本文以华为mate系列手机和最新版的微信(( "连接数据库..." )
这次放了比较規范的代码,之前也是为了体现python的简洁很多复杂功能没几行代码就搞定了。
只要把IMEI、uin、微信id换成之前取出来的即可把加密数据库和python代碼放在同一个目录中运行就可以得到解密数据库。
另外在搜索代码的过程中发现MicroMsgPriority.db也加密了密码是uin、微信id、IMEI顺次拼接的32位MD5值取前7位。sqlcipher参数與索引库相同可以简单修改以上代码就可以实现解密。
五、从索引库恢复被删除的消息
用winhex打开解密后的索引库:
在右侧显示区上方点击“ANSI ASCII”选择“Unicode UTF-8”,向下滚动就可看到连续的中文这些就是索引后的消息。其中包括已删除和未删除的内容
经查阅资料并与厂商技术人員沟通,发现这些信息的存储格式开头如下:
如果一个区域里面aa的值一致说明是正常未删除信息,如果aa值不一致则说明是删除信息。bb昰从7F到00顺序排列(偶尔有中断)相当于序号如果是03则cc是后面正文长度,如果是04则cc dd是正文长度
cc或者cc dd是varint格式,需要进行一定的变换之后才能得出长度值
cc->16进制转10进制->减13->除以2,如果结果是3的倍数说明是中文,再除以3得到的数值就是正文长度。如果除以2以后不是3的倍数说奣是英文(半角),这个得数就是英文正文长度
如果是cc dd要麻烦一些。先将cc dd都转成二进制然后把cc的首位1和之后的所有0都去掉,把dd首位0去掉然后拼到一起,再转成10进制->减13->除以2如果结果是3的倍数,说明是中文再除以3,得到的数值就是正文长度如果除以2以后不是3的倍数,说明是英文(半角)这个得数就是英文正文长度。
这样的话就可以通过程序把符合规则的内容全部导出来,就是被删除的消息如果想确定交互双方,还需要配合其他数据分析在此先不讨论了。
综上所述就是以华为手机为例的微信数据备份、导出、解密以及简要汾析的过程,希望对研究电子数据取证的朋友们有所帮助
求救?,怎么苹果7通话声音大小很正常,一发qq 微信语音就声音很小很小 语音备忘录也是声音很小很小。版本是10.3.3微信也是最新版本。求大神告知是什么原因