更多技術(shù)軼事剖析,請(qǐng)點(diǎn)擊右上角~
車友們,你們聽說過ZIP炸彈嗎?
小而小,數(shù)十KB的壓縮文件解壓縮后數(shù)百萬GB,就像炸彈一樣。(阿爾伯特愛因斯坦)壓縮。
在繼續(xù)介紹它之前,差評(píng)君想先問問各位都用過哪些壓縮軟件。。。
WinRAR ?
或者 2345 好壓?
還是開源的 7 - Zip ?
其實(shí)壓縮軟件雖然五花八門,但目的都很單純:
把文件占用空間縮小。
不過差評(píng)君上面提到的壓縮軟件,又不單純是縮小空間。
JPG 圖片 , MP3 音樂格式也起到了壓縮作用。
但是 JPG, MP3 們執(zhí)行的是有損壓縮。
一旦個(gè)文件被有損壓縮的時(shí)候,會(huì)損失一部分?jǐn)?shù)據(jù)。
損失的代價(jià)就是,你無法從被壓縮的文件還原出壓縮前的文件。
圖片,音樂等多媒體在有的時(shí)候考慮可用性和傳播性,對(duì)這樣的結(jié)果是可以接受的。
但對(duì)許多通用數(shù)據(jù)來說,往往需要的是無損壓縮,比如 .zip 。
對(duì)于無損壓縮來說,算法非常重要,不同的算法能實(shí)現(xiàn)的壓縮率和速度有很大差別。
如上圖所示,主流的算法一般在 30% - 40% 。
而文章一開始介紹的 ZIP 炸彈,是一個(gè)名為 42.zip 的文件。
它的初始大小是 42KB , 解壓密碼是 42 。
解壓之后的大小,足足有 4.5 PB 。
嗯。。。就是這么囂張。
解壓這個(gè) 42.zip 以后會(huì)出現(xiàn) 16 個(gè)壓縮包,每個(gè)壓縮包又包含 16 個(gè),如此循環(huán) 5 次,最后得到 16 的 5 次方個(gè)文件,也就是 1048576 個(gè)。
這一百多萬個(gè)最終文件,每個(gè)大小為 4.3 GB 。
因此整個(gè)解壓過程結(jié)束以后,會(huì)得到 1048576 * 4.6 GB = 4508876.8 GB
也就是 4508876.8 ÷ 1024 ÷ 1024 = 4.5 PB
還有比它更囂張的。
一個(gè)叫做 dro 的大小為 28 KB 的文件,一旦被打開了以后,就會(huì)無限解壓縮生成一份同樣的文件,直到永遠(yuǎn)。
這個(gè)文件名靈感應(yīng)該取自德羅斯特效應(yīng) ( Droste Effect ),是指一張圖片的部分與整張圖片相同,無限循環(huán)。。。如下圖↓
這個(gè)名字源自一家叫德羅斯特的可可粉廠商做的商品包裝。。。
注意女仆手上拿著的產(chǎn)品圖
咳咳。。。扯遠(yuǎn)了。
總而言之,這個(gè) dro 的核心原理就是輸出結(jié)果為自身。
舉個(gè)例子,制作者大概做了這么一件事:
在引號(hào)里重復(fù)這句話 “ 在引號(hào)里重復(fù)這句話 ”
然后解壓縮之后,硬盤就。。。 BOOM !
當(dāng)然。。。也有劍走偏鋒思路不同的。
有一段名為 《 彗星撞地球 》 的影片,也展現(xiàn)了神奇的壓縮比率。
這段 3D 影片如果直接放出來要 15 G 左右,效果。。。放在它出生的年代 2000 年還真不差。
這個(gè)壓縮過的大小只有 64 KB, 壓縮了 25 萬倍 !
實(shí)現(xiàn)的原理其實(shí)不算通常意義上的壓縮。
而是制作組 Warez 做了一個(gè) 64KB 的可執(zhí)行 EXE 文件,運(yùn)行的時(shí)候會(huì)調(diào)用顯卡,CPU 及內(nèi)存等等及時(shí)渲染動(dòng)畫。
打個(gè)比方,動(dòng)畫就好比連環(huán)畫,傳統(tǒng)影片是畫好的一冊(cè),而這個(gè) 《 彗星撞地球 》 則是看的時(shí)候現(xiàn)場(chǎng)一幅幅畫。
差評(píng)君用錄屏軟件錄了 7 分鐘都要 2.27 G 。( 當(dāng)然,這和現(xiàn)代顯示屏分辨率比較高有關(guān)系 )
那么問題來了。。。
一個(gè)文件的壓縮率有極限嗎?
有,可以由信息學(xué)之父克勞德·香農(nóng)提出的信息熵函數(shù)算出來。
不過 42.zip 也好,dro 也好,不適合套用香農(nóng)提出的極限。
因?yàn)檫@兩個(gè)文件為了達(dá)到驚人的壓縮比,有大量刻意重復(fù)的數(shù)據(jù),這種重復(fù)數(shù)據(jù)在壓縮的時(shí)候是可以被丟棄的,沒啥實(shí)質(zhì)性內(nèi)容的信息。
那么。。。
如果動(dòng)畫還有點(diǎn)傳播意義, 42.zip 和 droste. zip 還有啥意義呢?
這兒就要提就是 ZIP 炸彈之所以被稱作 “ 炸彈 ” 的真正原因了。。。
除了會(huì) “ 爆炸 ” , 這玩意兒其實(shí)是拿來攻擊別人的。
某些病毒制作者利用殺毒軟件會(huì)掃描壓縮文件內(nèi)部的特性,會(huì)把 ZIP 炸彈連帶病毒一起發(fā)到目標(biāo)電腦上。
而 ZIP 炸彈表面上看起來很小,易于傳輸,但實(shí)際上掃描起來非常花時(shí)間。
趁著殺毒軟件忙著掃描 4.5 PB 的數(shù)據(jù),被占用時(shí),病毒軟件就可以趁虛而入了 ~
差評(píng)君昨天說了啥來著。。。
干黑產(chǎn)的,角度刁鉆得讓人折腰。
不過現(xiàn)在很多殺毒軟件已經(jīng)有辦法避開這種 zip 炸彈的佯攻了,這個(gè)話題漸漸地拋開了黑產(chǎn)。
一直以來壓縮算法是算法研究里津津樂道的話題, Huffman 樹, LZW 字典等等。。。
用程序解決信息問題的姿勢(shì),仔細(xì)一琢磨也挺有意思的不是?
圖片來源:
BetaNews
tylerbrownblog
Tom’s Hardware
steemit
參考資料:
Quora 問題《 What is the most compressed file ever? 》
知乎問題 《 世界上最大的文件壓縮率是多少? 》中,用戶 @何先森飯掃光, @羅翔 的回答。
維基百科詞條 “ 自產(chǎn)生程序 ”
維基百科詞條 “ zip bomb ”
如果你好奇這些文件玩兒起來是咋回事,差評(píng)君在這提供下載鏈接,微信公眾號(hào)后臺(tái)回復(fù) “ 壓縮 ” 就行。
“ 借一部說話可以變成借萬部說話 ”
1.《0.zip是什么壓縮包?我來告訴你答案一個(gè)42KB的文件,解壓完其實(shí)是個(gè)4.5PB的“炸彈”……》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《0.zip是什么壓縮包?我來告訴你答案一個(gè)42KB的文件,解壓完其實(shí)是個(gè)4.5PB的“炸彈”……》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/gl/2140691.html