事情的起因是,很久以前我和一个朋友在微信上聊天,朋友发了一张图片给我,我看着正流口水,结果突然撤回了,这让我很着急。
对了,我当时用的是PC端微信,简直不敢相信,账号被撤回了就没办法了吗?
要知道,几百年前,就算是删除了的文件,也是可以恢复的,所以我不信我们找不到任何线索。。。
如果我用手机的话,可能就没有时间去找了。太麻烦了,对吧!
回到正题,我们来寻找线索吧……
对于自己解决不了的问题,我总是直接问百度。自从谷歌放弃中国后……
百度粉丝几万,我搜到的资料太零散,就不全部贴出来供大家参考了。
可能有用的信息是:
1.微信发送和接收的所有照片实际上都存储在我们的电脑上。
2.所有照片均加密,后缀为**.dat,加密方式:XOR
3.加密文件夹存放的位置为:C:
由于没有移动任何东西,文件仍然在那里,但由于时间太长,我不确定时间。
这几天重装了微信,把备份的数据复制过去,结果第二次打开微信,什么都没有了。
庆幸自己没更新微信PC版,复制了一堆数据,哈哈哈哈。。。
因为时间不确定,我把dat文件都保存了,剩下的肯定有用。
我们发现微信图片的加密方式:XOR加密
文章通过发送图片,对比dat文件,发现了加密方式:[XOR][加密值:ox51]
但我只有加密的dat文件,原始图片已经被对方撤回了。
我甚至无法保存它,更不用说比较它了。
文章中对比的方法是用二进制编辑器打开,这里我推荐【010编辑器】,有脚本功能,后面会用到。
没有原图怎么办?我有办法!
【所有jpg格式的照片都以十六进制FF D8开头,以FF D9结尾】
这是重点,要考了!不懂的话就多开几张图复习一下课文。
过程
1.用编辑器打开
你会发现这个dat文件的开头是[53 74],结尾是[53 75],是不是和我上面说的[以FF D8开头,以FF D9结尾]差不多呢?
2. 对比与比较
我们在这里使用我们熟悉的计算器,它也可以在 7中使用。切换到[程序员]模式
输入已知值[FF];然后输入我们的dat文件的开头[53]
制作一份简单的论文草稿清单:
3.计算解密代码
之前大家都说是【XOR加密】,我来解释一下什么是XOR加密。
简单来说,1±1=0;0±0=0;0±1=1
我相信这很简单,对吧?我明白了。[Code=]
那么这个值是什么呢?我们回到[计算器],切换到[Bin],输入这个值。
所以,[代码=AC]
加密总是会变,[参考] 里是 51,也有 14,我自己恢复的是 89,这是新样本:AC
4.解密
知道了加密值和解密方法,剩下的事情就会容易得多。
当然,不可能一个一个地计算并修改这些值。[参考3]给出了一段代码
我自己修改了代码,就是0x14改成了0xAC,
代码如下:
//----------------------------------------------------
(4.0);
();
int = 1024;
[ ];
四边形尺寸,位置;
int 我,;
位置=0;
尺寸 = ();
(大小 > 0)
= 大小 < ? 大小 :;
(,正,);
对于(i = 0; i <; i++)
[i] = [i] ^ 0xAC; }
(,正,);
位置 += ;
尺寸 -= ;
1;
点击运行!
结果如下,显示橙色的变化,检查开头的[FFD8]
我们再看一下结局:[FF D9]
保存为 jpg 文件,哇〜您就完成了!
不知道微信有没有改版,我试了一下,有几点需要注意:
1.对方发图片的时候,当时可以看到dat文件,但是再次登录微信之后,dat文件就被删除了
2.聊天过程中,删除聊天也会清除dat文件。
3.基于以上条件,需要编写一个程序来拦截dat文件,这个在[参考文献3]中提到过,不过我没有测试过。
4. 照片是可以恢复的,没有人可以阻止你,但只能自己看。不要上传到不该上传的地方。保护好自己才是最重要的。