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,就可以看到一个压缩文件了,并且,可以解压。

 

 

 

 

posted @ 2012-07-28 20:11  喜欢阿亮的小水  阅读(420)  评论(0编辑  收藏  举报