hahhaha ! 真好玩
某些论坛上经常有一些人,他们会发一些有趣的图片,“另存为”之后,你发现这是一张正常的图片。但是,如果你把它扩展名改为.rar之后,你会发现它可以正常的解压,解压之后里面有一些别的文件,比如BT种子(你懂的)。那么这是什么原理呢?其实,原理非常非常简单。你自己也可以做,而且不需要任何额外软件。我们先简单讲一点原理,再讲怎么做。
1 JPG和RAR文件格式
我们这里不需要知道全部格式信息,只要了解一丁点有用的就可以。
JPG格式的图片是经过离散余弦变换压缩的,他的格式是这样:
SOI(0xFFD8)
APP0(0xFFE0)
[APPn(0xFFEn)]可选
DQT(0xFFDB)
SOF0(0xFFC0)
DHT(0xFFC4)
SOS(0xFFDA)
压缩数据
EOI(0xFFD9)
简单说,jpg格式开头都是FFD8,结尾都是FFD9.一般的图片浏览器,比如微软的图片查看器,只要读到压缩数据后面FFD9字段,就自动终止。这是一个非常好的性质:我们可以在JPG文件的末尾添加任何东西而不影响图片的显示。
现在看看RAR的格式——不幸的是,RAR格式的作者已经去世,而RAR格式本身又是保密的。但是通过种种迹象我们发现,RAR文件是以Rar!开头的,而且RAR解压进程似乎忽略掉了所有Rar!之前出现的东西。
由此,我们只要把RAR文件的东西原封不动的写到jpg文件后面,就可以完成这个工作了!
2 实现方法
在Windows下,比如,一个qianuxn.jpg和qianxun.rar,我们只要执行如下命令:
copy /b qianxun.jpg+qianxun.rar
下面这张图片,只要另存为后把扩展名改为rar,就可以看到一个压缩文件了,并且,可以解压。