1 回顾
自从发布文章“寻找微信撤回的图片”之后,骗了不少粉啊。
总之,之前提出了一种可以找到微信撤回图片的方法。
2 真相
之前的说法是,工程师并没有真正把撤回的图片删除,而是加密后藏起来了。其实这样说并不严谨,经过后续测试,发现PC端的确如此,而手机端(Android)撤回的图片是有删除的,但是删除的不干净。
2.1 PC端
微信所有接收到的图片都储在[X]:\Users[USER]\Documents\WeChat Files[WECHAT_USER]\Data。里面有一堆以.dat为后缀的文件,他们大小不一,都经过了加密。而加密的方法便是对字节逐一“异或”。
之前的说法是,加密后的字节 = 原始字节 ^ 0x51。为了方便,我们把0x51称作“magic码”。
有网友反馈,magic码不一定是0x51,有的机器是0x50。经过一些测试,结论是,magic码与微信号有关,即不同的微信号在同一台机器可能得到不同的magic码,而同一个微信号在不同的机器上得到了相同的magic码。这里猜测,magic码是由微信号或者微信ID计算得来的。
其实,我们无需关心magic码的计算方式。因为,我们可以肯定的是,.dat文件是图片,而对于JPEG的图片,其对应二进制的第一个字节是0xFF。
所以,问题变成了,已知:.dat文件对应二进制的第一个字节 = 0xFF ^ magic码,求magic码。
我们已经知道,如果C=A