最近抽空回县城高中去看看,期间也拍了很多照片,当时没有带数据线,只能从手机通过文件传输助手发送到电脑。可以从下图看到文件传输助手的功能,向文件传输助手发消息,可以在手机与电脑间传输文字、图片、音频、视频等文件。功能很强大,没必要把照片发送给其他朋友或同事,再在电脑上保存。
因为照片数量较多,如果一个一个从电脑端微信右键另存为,那是相当的累的,为此我在想肯定有更好的办法直接获取到电脑端微信接受的照片。想到的第一个办法就是通过查看电脑端微信文件保存路径,可以通过依次单击微信左下角【三道杠】,选择【设置】,在打开的设置对话框中选择左侧的【通用设置】,即可看到微信文件保存的路径了。如下图所示:
点击上图中的【打开文件夹】,在该目录下并未找到我从手机发送过来的照片,至少从文件扩展名上未找到.jpg或.png的图片。通过详细查找,在微信文件路径下有一个Data文件夹引起了我的注意,如下图所示:
可能有的小伙伴就要问了,那么多文件夹为啥唯独Data文件夹引起了我的注意呢?其实我自己使用手机通过文件传输助手发送了一张照片到电脑端,此时在Data文件夹就生成了一个以.dat结尾的文件,该文件和右键另存为出来的的Jpg文件大小一致,而且时间也和我的发送时间吻合,所以可以断定Data文件夹下的.dat文件就是照片。
既然文件大小一致,只是扩展名不一致,那能否通过修改扩展名为.jpg呢?这个方法我试过,是不管用的,所以微信一定是对照片原有数据进行处理然后再保存为.dat文件。
到这里,我也没有继续对.dat和.jpg文件进行比对,而是通过Google搜索,看看其他小伙伴有没有解决。很幸运的是,在知乎已经有小伙伴实现了从.dat到.jpg的转变,可以得到照片。该小伙伴的大体思路就是通过比对dat和jpg文件,我通过UltraEdit分别打开dat和jpg文件,如下图所示:
通过细节比对,发现右侧jpg里的00,对于dat文件里的65,右侧jpg里的03,对应dat文件中的66,通过分析就可以得出,dat文件分别和65进行异或即可得到右侧的Jpg文件,我们可以拿dat中的第一个9A和65进行异或(Xor)即可得到右侧的FF,具体演示如下动态图所示:
既然知道了原理,该小伙伴使用Python写了一段代码,可以实现dat文件转变为jpg文件,具体使用方法如下图所示:
该脚本需要去Python官网下载Python并进行安装,并把Python的安装路径放入到环境变量Path中,如下图所示:
如果右键未出现【复制为路径】,那是由于你没有按住Shift键的同时鼠标右键。