一个42KB的文件,解压完其实是个4.5PB的“炸弹”。。

WPJAM TOC

兄die,听说过 ZIP 炸弹吗?

一个很小很小的,几十 KB 的压缩过后的文件,解压以后有几百万 GB ,好像炸弹一样。

 

在继续介绍它之前,辣条君想先问问各位都用过哪些压缩软件。。。

WinRAR ?

或者 2345 好压?

还是开源的 7 - Zip ?

 

 

其实压缩软件虽然五花八门,但目的都很单纯:

把文件占用空间缩小。

 

不过辣条君上面提到的压缩软件,又不单纯是缩小空间。

JPG 图片 , MP3 音乐格式也起到了压缩作用。

 

但是 JPG, MP3 们执行的是有损压缩。

一旦个文件被有损压缩的时候,会损失一部分数据。

 

损失的代价就是,你无法从被压缩的文件还原出压缩前的文件。

 

图片,音乐等多媒体在有的时候考虑可用性和传播性,对这样的结果是可以接受的。

 

但对许多通用数据来说,往往需要的是无损压缩,比如 .zip 。

对于无损压缩来说,算法非常重要,不同的算法能实现的压缩率和速度有很大差别。

 

如上图所示,主流的算法一般在 30% - 40% 。

 

而文章一开始介绍的 ZIP 炸弹,是一个名为 42.zip 的文件。

它的初始大小是 42KB , 解压密码是 42 。

解压之后的大小,足足有 4.5 PB 。

嗯。。。就是这么嚣张。

解压这个 42.zip 以后会出现 16 个压缩包,每个压缩包又包含 16 个,如此循环 5 次,最后得到 16 的 5 次方个文件,也就是 1048576 个。

这一百多万个最终文件,每个大小为 4.3 GB 。

 

因此整个解压过程结束以后,会得到 1048576 * 4.6 GB = 4508876.8 GB

 

也就是 4508876.8 ÷ 1024 ÷ 1024 = 4.5 PB

 

还有比它更嚣张的。

 

一个叫做 droste.zip 的大小为 28 KB 的文件,一旦被打开了以后,就会无限解压缩生成一份同样的文件,直到永远。

 

某些病毒制作者利用杀毒软件会扫描压缩文件内部的特性,会把 ZIP 炸弹连带病毒一起发到目标电脑上。

 

而 ZIP 炸弹表面上看起来很小,易于传输,但实际上扫描起来非常花时间。

趁着杀毒软件忙着扫描 4.5 PB 的数据,被占用时,病毒软件就可以趁虚而入了 ~

干黑产的,角度刁钻得让人折腰。

 

不过现在很多杀毒软件已经有办法避开这种 zip 炸弹的佯攻了,这个话题渐渐地抛开了黑产。

 

一直以来压缩算法是算法研究里津津乐道的话题, Huffman 树, LZW 字典等等。。。

 

用程序解决信息问题的姿势,仔细一琢磨也挺有意思的不是?

相关推荐

Leave a Reply

微信扫一扫,分享到朋友圈

一个42KB的文件,解压完其实是个4.5PB的“炸弹”。。
返回顶部
戮之使博客

显示

忘记密码?

显示

显示

获取验证码

Close