【藏秘密文件的小技巧】駭客把圖片上傳 Twitter,下載後改副檔名變成「Python 程式碼」

【我們為什麼挑選這篇文章】一些線上的儲存空間在上傳檔案時有檔案格式的限制,但基本上都支援圖片檔、影片檔,如果想要上傳其他類型的檔案,通常可先儲存成壓縮檔,再「偽裝」成圖片檔上傳,但有檔案大小的限制。

國外一名駭客將檔案的儲存上限提高到 3 MB,並透過同樣的手法將他的程式碼開源並轉成圖片,照著做,你也能將圖片當擴充硬碟用!(責任編輯:賴佩萱)

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請連繫出處
作者:量子位

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

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

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

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

下載圖片檔卻拿到一首歌、一串程式碼

對於有十幾年網齡的網友來說,這並不是一項新技術。早年就有人將文本文件或種子文件藏匿在 jpg 圖片中。

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

隨著網路發展,越來越多的平台允許用戶上傳大尺寸無損圖片,這就給藏匿大文件提供了契機。

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

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

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

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

GitHub 傳送門

使用方法很簡單,只需要將 pack.py 文件下載到本地,運行以下程式碼:

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

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

背後的原理是什麼?

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

圖片來自 Twitter 用戶 @angealbertini

Twitter 通常會壓縮圖像並刪除所有不必要的元數據,但是可以在「DEFLATE」的末尾添加更多數據。

如果整個圖像文件符合避免重新編碼的要求,壓縮包內容就不會從 IDAT 塊內的 DEFLATE 流中剝離。

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

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

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

帶壓縮包的圖片網址>>>https://i.imgur.com/kNhGrN3.png

(本文經 AI 新媒體量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈圖片可隱藏 zip 和 mp3 文件,只需修改後綴名,這個 GitHub 項目火了 〉。)

更多開源程式碼


訂閱《TechOrange》每日電子報!

每天一早,需要來根知識能量棒? TechOrange 與你一起,吸收世界新知識、消化科技新局勢。點我訂閱電子報 ,取得最新深度報導。

點關鍵字看更多相關文章: