歡迎光臨
每天分享高質量文章

一個42KB的檔案,解壓完其實是個4.5PB的“炸彈”。。

轉載自微信公眾號:差評(chaping321)

差友們,聽說過 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 的檔案,一旦被開啟了以後,就會無限解壓縮生成一份同樣的檔案,直到永遠。

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

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

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

咳咳。。。扯遠了。

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

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

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

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

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

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

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

這個壓縮過的大小只有 64 KB, 壓縮了 25 萬倍 !


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

而是製作組 Warez 做了一個 64KB 的可執行 EXE 檔案,執行的時候會呼叫顯示卡,CPU 及記憶體等等及時渲染動畫。

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

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

那麼問題來了。。。

一個檔案的壓縮率有極限嗎?

有,可以由資訊學之父克勞德·夏農提出的資訊熵函式算出來。

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

因為這兩個檔案為了達到驚人的壓縮比,有大量刻意重覆的資料,這種重覆資料在壓縮的時候是可以被丟棄的,沒啥實質性內容的資訊。

那麼。。。

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

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

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

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

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

趁著防毒軟體忙著掃描 4.5 PB 的資料,被佔用時,病毒軟體就可以趁虛而入了 ~

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

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


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

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

用程式解決資訊問題的姿勢,仔細一琢磨也挺有意思的不是?

圖片來源

BetaNews

tylerbrownblog

Tom’s Hardware

steemit

參考資料

Quora 問題《 What is the most compressed file ever? 》

知乎問題 《 世界上最大的檔案壓縮率是多少? 》中,使用者 @何先森飯掃光, @羅翔 的回答。

維基百科詞條 “ 自產生程式 ”

維基百科詞條 “ zip bomb ”


●編號698,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

Web開發

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂