本文是献给那些手头存有量dat文件的人,经供参考。
【前言】
事情的缘由是很久很久之前在和好友聊天,好友发了一图片,正看的流口水呢,就突然被撤回了,弄的我是心急火燎的啊。
顺带提一下,那时候用的呢,正好用的PC端的。我就不信了啊,难道被撤回了就一点办法都没有了吗?
要知道,早在几百年前,就连删除的文件都能恢复,就不信找不到一点的蛛丝马迹。。。
如果用手机,估计我也没那个闲心去找了,工程量太大,对不!
【发现】
回归正题,我们找蛛丝马迹……
凡事自己解决不了的问题,我一向是直接问度娘的,自从谷哥弃天朝而去。。。
度娘的粉丝是千千万万的,其中搜索到的信息太零碎,我就不一一放入参考中,
大概有用的信息就是:
所有发送接收的照片是实实在在存在于我们的电脑中的
所有的照片是经过加密处理的,后缀名为**.dat,加密方式:异或
存放加密文件夹的位置,位置是:C:UsersdocumentsWeChatFilesData
因为什么都没动过,那个文件依然躺在那里,但是时间我不确定,因为太过久远了。
最近几日,为要新装win10,所以重新装了,然后复制备份dat过去,结果,第二次打开,什么都没有了。
我很庆幸的是,我一直没有更新PC端,而且我复制了一堆的dat,哈哈哈哈。。
因为时间不确定,我把所有的dat文件都保存了下来,留下的,肯定是有用的。
【方法】
根据【参考1/2】,我们发现了图片的加密方式:异或加密
文章中通过发送图片,对比dat文件,发现了加密方式:【异或】【加密值:ox51】
但是,我只有加密过后的dat文件啊,原图被对方撤回了啊。
保存都没法保存,别说是对比了。
文章中的对比方式是用二进制编辑器打开,本人在这推荐【010编辑器】,有脚本功能,后续会用上
我没有原图怎么办呢,本人有办法!
【所有jpg格式照片16进制开头FFD8,结束FFD9】
这是重点,要考的哦!不懂的多打开几张,复习下功课就知道了
【过程】
言归正传!!!
1.用编辑器打开
大家发现,这个dat文件的开头是【5374】,结尾是【5375】,是不是和我上面说的【开头FFD8,结束FFD9】几乎是一模一样啊~
2.对比比较
我们这里用win10知道的计算器,win7也有,切换到【程序员】模式
输入我们已知的数值【FF】,;再输入我们dat文件的开头【53】
做个简单的草稿纸罗列:
3.计算解密Code
之前大家都说是【异或加密】,给科普下,什么是异或加密
简单的说就是1±1=0;0±0=0;0±1=1
相信很简单,对吧,算出来了,【Code=10101100】
那这个数值是多少呢,我们回到【计算器】,切换到【Bin】,输入数值,
SO,【Code=AC】
做个加密老是换,在【参考】中是51,也有14,我自己恢复的这个是89,做个是新的样本:AC
4.解密
知道了加密值,知道了解密方法,其他的就好办多了,
当然不可能自己一个个计算修改数值,【参考3】中给出了一段代码
我自己对其中的code做了修改,就是0x14的地方,修改成0xAC,
代码如下:
//--------------------------------------
RequiresVersion(4.0);
RequiresFile();
constintBLOCK_SIZE=1024;
ucharbuffer[BLOCK_SIZE];
quadsize,pos;
inti,bufsize;
pos=0;
size=FileSize();
while(size>0)
{
bufsize=size<BLOCK_SIZE?size:BLOCK_SIZE;
ReadBytes(buffer,pos,bufsize);
for(i=0;i<bufsize;i++)
{
buffer[i]=buffer[i]^0xAC;}
WriteBytes(buffer,pos,bufsize);
pos+=bufsize;
size-=bufsize;
}
return1;
点击运行!
运行结果如下,以橙色显示修改,查看开头【FFD8】
再看看结尾:【FFD9】
另存为jpg文件,哇呜~~~
大功告成!
【写在最后】
不知道是不是改版了,目前我试验下来,有几点要注意的:
对方发过来图片,当时是可以看到dat文件的,但是重新推出登录之后,dat文件被删除
聊天过程中,删除聊天,也是会清空dat文件的。
基于以上条件,弄个拦截dat文件的程序是必要的,这点【参考3】中已经提及,本人并未测试。
恢复照片是可以的,谁也拦不住,但是自己看看就可以了,千万别传到不该传的地方,保护自己最重要。