十幾年前在圖片中藏入其他檔案的網路小把戲,現在可以塞入一首mp3

十幾年前在圖片中藏入其他檔案的網路小把戲,現在可以塞入一首mp3

ADVERTISEMENT

明明下載的是一張圖片,只需修改副檔名,圖片就變成了一首歌,一串Python程式碼。

國外駭客David Buchanan利用Twitter的漏洞,可以用圖片偽裝的方式傳輸一份「加密」文件,前提是不超過3MB。

他成功把這種藏匿文件的GitHub原始碼壓縮到圖片中。

現在你只要去他的Twitter,把這張圖片下載下來,並將文件副檔名從.png修改為.zip,即可解壓為Github程式碼。

實際測試過程中,Mac內建的解壓工具會出現錯誤訊息,第三方工具可正常解壓。 

對於有十幾年經驗的的使用者來說,這並不是一項新技術。早年就有人將TXT或種子藏匿在jpg圖片中。

這種方法的特點在於,把檔案打包到圖片中並不影響正常顯示,但一般來說文件大小不過幾十KB。

隨著網路發展,越來越多的平台允許使用者上傳大尺寸無損圖片,這就為藏匿大檔案提供了契機。

Buchanan的新方法現在將藏匿檔案的體積增加到3MB,你甚至能放入一首歌。

Twitter上就有現成的例子,Buchanan放出了一張surprise.mp3的圖片。如果副檔名修改為.mp3,就變成了一首歌。

至於這個surprise,是Rick Astley的《Never Gonna Give You Up》這首歌。恭喜你,又被「瑞克搖」了。

十幾年前在圖片中藏入其他檔案的網路小把戲,現在可以塞入一首mp3

Buchanan的這一發現已經連續多天成為GitHub熱門項目,最終在周末登上日榜第一。

十幾年前在圖片中藏入其他檔案的網路小把戲,現在可以塞入一首mp3

使用方法很簡單,只需要將pack.py檔案下載到本地端,執行以下程式碼:

python3 pack.py cover.png file.zip output.png

其中,cover.png是封面圖片,file.zip是你要藏匿的檔案,output.png是輸出結果的檔案名稱。

從外觀上來看,output.png和cover.png是一樣的,但多出一個壓縮檔的大小。

原理

用圖片隱藏壓縮包的原理並不復雜,png圖片文件的格式如下。在Zlib之後,有一片IDAT塊的附加資料。藏匿資料就放在這裡。

十幾年前在圖片中藏入其他檔案的網路小把戲,現在可以塞入一首mp3

Twitter通常會壓縮圖像並刪除所有不必要的元資料,但是可以在「 DEFLATE」的末尾添加更多資料。如果整個圖像文件符合避免重新編碼的要求,壓縮包內容就不會從IDAT塊內的DEFLATE流中剝離。

這種方法不僅限於嵌入zip、mp3等文件,只要數據能壓縮到3MB以內,都可以嵌入到png圖片中。

Buchanan表示,這種方法可能被駭客用於藏匿惡意程式碼,他本人已將該漏洞利用報告給「漏洞賞金」程式,但卻被Twitter告知這不是bug。

能傳輸「加密」文件,怎麼能說是bug呢?應該是隱藏功能才對。 

 

 

Qbitai
作者

量子位(Qbitai)專注於人工智慧及前沿科技領域,提供技術研發趨勢、科技企業動態、新創公司報道等最新資訊,以及機器學習入門資源、電腦科學最新研究論文、開源程式碼和工具的相關報導。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則