一個42KB的文件,解壓完其實是個4.5PB的「炸彈」……

聽說過ZIP 炸彈嗎?

一個很小很小的,幾十KB 的壓縮過後的文件,解壓以後有幾百萬GB ,好像炸彈一樣。

在繼續介紹它之前,差評君想先問問各位都用過哪些壓縮軟件。。。

WinRAR ?

或者2345 好壓?

還是開源的7 - Zip ?

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

其實壓縮軟件雖然五花八門,但目的都很單純:

把文件佔用空間縮小

不過差評君上面提到的壓縮軟件,又不單純是縮小空間。

JPG 圖片, MP3 音樂格式也起到了壓縮作用。

但是JPG, MP3 們執行的是有損壓縮

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一旦個文件被有損壓縮的時候,會損失一部分數據。

損失的代價就是,你無法從被壓縮的文件還原出壓縮前的文件

圖片,音樂等多媒體在有的時候考慮可用性和傳播性,對這樣的結果是可以接受的。

但對許多通用數據來說,往往需要的是無損壓縮,比如.zip 。

對於無損壓縮來說,算法非常重要,不同的算法能實現的壓縮率和速度有很大差別。

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

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

而文章一開始介紹的ZIP 炸彈,是一個名為42.zip 的文件。

它的初始大小是42KB , 解壓密碼是42 。

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

解壓之後的大小,足足有4.5 PB

嗯。。。就是這麼囂張。

解壓這個42.zip 以後會出現16 個壓縮包,每個壓縮包又包含16 個,如此循環5 次,最後得到16 的5 次方個文件,也就是1048576 個。

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

這一百多萬個最終文件,每個大小為4.3 GB 。

因此整個解壓過程結束以後,會得到1048576 * 4.6 GB = 4508876.8 GB

也就是4508876.8 ÷ 1024 ÷ 1024 = 4.5 PB

還有比它更囂張的。

一個叫做droste.zip 的大小為28 KB 的文件,一旦被打開了以後,就會無限解壓縮生成一份同樣的文件,直到永遠。

這個文件名靈感應該取自德羅斯特效應( Droste Effect ),是指一張圖片的部分與整張圖片相同,無限循環。。。如下圖↓

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

這個名字源自一家叫德羅斯特的可可粉廠商做的商品包裝。。。

注意女僕手上拿著的產品圖

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

咳咳。。。扯遠了。

總而言之,這個droste.zip 的核心原理就是輸出結果為自身。

舉個例子,製作者大概做了這麼一件事:

在引號裡重複這句話“ 在引號裡重複這句話”

然後解壓縮之後,硬盤就。。。 BOOM !

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

當然。。。也有劍走偏鋒思路不同的。

有一段名為《 彗星撞地球》 的影片,也展現了神奇的壓縮比率。

這段3D 影片如果直接放出來要15 G 左右,效果。。。放在它出生的年代2000 年還真不差。

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

這個壓縮過的大小

只有64 KB, 壓縮了25 萬倍

實現的原理其實不算通常意義上的壓縮。

而是製作組Warez 做了一個64KB 的可執行EXE 文件,運行的時候會調用顯卡,CPU 及內存等等及時渲染動畫。

打個比方,動畫就好比連環畫,傳統影片是畫好的一冊,而這個《 彗星撞地球》 則是看的時候現場一幅幅畫。

差評君用錄屏軟件錄了7 分鐘都要2.27 G 。( 當然,這和現代顯示屏分辨率比較高有關係)

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

那麼問題來了。。。

一個文件的壓縮率有極限嗎?

有,可以由信息學之父克勞德·香農提出的信息熵函數算出來。

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

不過42.zip 也好,droste.zip 也好,不適合套用香農提出的極限。

因為這兩個文件為了達到驚人的壓縮比,有大量刻意重複的數據,這種重複數據在壓縮的時候是可以被丟棄的,沒啥實質性內容的信息。

那麼。。。

如果動畫還有點傳播意義, 42.zip 和droste. zip 還有啥意義呢?

這兒就要提就是ZIP 炸彈之所以被稱作“ 炸彈” 的真正原因了。。。

除了會“ 爆炸” , 這玩意兒其實是拿來攻擊別人的

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

一個42KB的文件,解壓完其實是個4.5PB的“炸彈”……

某些病毒製作者利用殺毒軟件會掃描壓縮文件內部的特性,會把ZIP 炸彈連帶病毒一起發到目標電腦上。

而ZIP 炸彈表面上看起來很小,易於傳輸,但實際上掃描起來非常花時間。

趁著殺毒軟件忙著掃描4.5 PB 的數據,被佔用時,病毒軟件就可以趁虛而入了~

差評君昨天說了啥來著。。。

幹黑產的,角度刁鑽得讓人折腰。

不過現在很多殺毒軟件已經有辦法避開這種zip 炸彈的佯攻了,這個話題漸漸地拋開了黑產。

一直以來壓縮算法是算法研究裡津津樂道的話題, Huffman 樹, LZW 字典等等。。。

用程序解決信息問題的姿勢,仔細一琢磨也挺有意思的不是?


分享到:


相關文章: