对方微信撤回的图片怎么恢复,关键词b? | 大商梦-尊龙凯时官网

自从发布“寻找微信图片”这篇文章后,取得了不少读者的好评。

之前,我们提出了一种方法,可以找到微信图片

工程师最初并未彻底删除撤回的图片,而是将其加密并隐藏起来。但后续测试表明,pc端的情况确实如此,而手机端(android)撤回的图片是被删除了,只是删除不够彻底。

所有接收到的微信图片都储存在[x]:\users\[user]\documents\wechat files\[wechat_user]\data文件夹下。在该文件夹里会有一系列以.dat为后缀的文件,它们的大小各不相同,并且都经过了加密处理。而这些文件的加密方法是对每个字节逐一进行“异或”操作。

之前提到的是,加密后的字节等于原始字节与0x51进行异或操作。为了方便,我们将0x51称为“魔数”。

有人反馈称,magic码并非一定是0x51,有些设备的magic码为0x50。经过一些测试,结论是,magic码与微信号相关。不同的微信号在同一台设备上可能得到不同的magic码,而同一微信号在不同设备上得到相同的magic码。有猜测认为,magic码可能是由微信号或微信id计算得出的。

其实,我们无需关心magic码的计算方式。因为,我们可以肯定的是,.dat文件是图片,而对于jpeg的图片,其对应二进制的第一个字节是0xff。

因此,我们现在的问题是,已知.dat文件的第一个字节为0xff异或魔术数,要求魔术数是多少。

根据已知条件,如果c=a^b,则a^c=(a^a)^b。由于a^a=0,所以a^c=b,即b=a^c。

magic码=0xff ^ 已知.dat文件对应二进制的第一个字节。

这是一个通过异或运算获取文件的魔术数字的示例。

修改后的解密代码:

def _decode_pc_dat(self, datfile):
with open(datfile, 'rb') as f:
    buf=bytearray(f.read())
magic=0xff ^ list(buf)[0] if buf else 0x00 #important
imgfile=re.sub(r'.dat$', '.jpg', datfile)
with open(imgfile, 'wb') as f:
    newbuf=bytearray(map(lambda b: b ^ magic, list(buf)))
    f.write(str(newbuf))

2.2 手机端(android)

在/sdcard/tencent/micromsg/diskcache目录下存放着类似cache.data.10这样的文件,大小大约在2mb左右。有趣的是,如果将文件的后缀改为.jpg,是可以打开这些文件的。这是因为jpeg文件实际上"串联"了一系列图片,通过以下代码就可以把这些图片拆分出来:

 def _decode_android_dat(self, datfile):
with open(datfile, 'rb') as f:
    buf=f.read()
last_index=0
for i, m in enumerate(re.finditer(b'\xff\xd8\xff\xe0\x00\x10\x4a\x46', buf)):
    if m.start()==0:
        continue
    imgfile='%s_%d.jpg' % (datfile, i)
    with open(imgfile, 'wb') as f:
        f.write(buf[last_index: m.start()])
    last_index=m.start()

经过实验发现,这些拆分出来的图片并不包含被撤回的图片。不幸的是,在手机端没有找到被撤回的图片。幸运的是,在微信的缓存文件夹中找到了被撤回图片的“缩略图”。尽管可能没有高清大图那么清晰,但至少可以辨认出发送的是什么内容,就像我们早年观看3gp格式视频一样。

基于缓存文件夹中文件的数量庞大,建议可以根据文件的修改时间来查找hash1和hash2。

之前提到的一个主要问题是,工程师在对pc端图片进行加密时选择了一个特殊的数字0x51,然后对每个字节进行异或操作。此外,我还曾经辩解说0x51代表了“q”的ascii码。选择“q”的原因是因为“qq”。

抱歉,这个情况很棘手,因为magic码并不是固定的。不过还是可以使用以下工具解密微信图片以及找回已撤回的图片:http://www.sdxlp.cn/tool/wechatdat。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.dasum.com/254624.html
网站地图