圖片可隱藏zip和mp3文件,只需修改後綴名,這個GitHub項目火了
曉查 發自 凹非寺 量子位 報道 | 公眾號 QbitAI
明明下載的是一張圖片,只需修改後綴名,圖片就變成了一首歌,一串Python代碼。
國外黑客David Buchanan利用Twitter的漏洞,可以用圖片偽裝的方式傳輸一份“加密”文件,前提是不超過3MB。
他成功把這種藏匿文件的GitHub源代碼壓縮到圖片中。
現在你只要去他的Twitter,把這張圖片下載下來,並將文件後綴名從.png修改為.zip,即可解壓為Github代碼。
這種方法的特點在於,把文件打包到圖片中並不影響正常顯示,但一般來説文件大小不過幾十KB。
隨着網絡發展,越來越多的平台允許用户上傳大尺寸無損圖片,這就給藏匿大文件提供了契機。
Buchanan的新方法現在將藏匿文件體積增加到3MB,你甚至能放入一首歌。
Twitter上就有現成的例子,Buchanan放出了一張surprise.mp3的圖片。如果後綴名修改為.mp3,就變成了一首歌。
至於這個surprise,自然毫無意外是Rick Astley的《Never Gonna Give You Up》這首歌。恭喜你,又被“瑞克搖”了。
python3 pack.py cover.png file.zip output.png
其中,cover.png是封面圖片,file.zip是你要藏匿的文件,output.png是輸出結果的文件名。
從外觀上來看,output.png和cover.png是一樣的,但多出一個壓縮包的大小。
原理
用圖片隱藏壓縮包的原理並不複雜,png圖片文件的格式如下。在Zlib之後,有一片IDAT塊的附加數據。藏匿數據就放在這裏。
如果整個圖像文件符合避免重新編碼的要求,壓縮包內容就不會從IDAT塊內的DEFLATE流中剝離。
這種方法不僅限於嵌入zip、mp3等文件,只要數據能壓縮到3MB以內,都可以嵌入到png圖片中。
Buchanan表示,這種方法可能被黑客用於藏匿惡意代碼,他本人已將該漏洞利用報告給“漏洞賞金”程序,但卻被Twitter告知這不是bug。
能傳輸“加密”文件,怎麼能説是bug呢?應該是隱藏功能才對。(手動狗頭)
帶壓縮包的圖片地址: https://i.imgur.com/kNhGrN3.png
David Buchanan的Twitter: https://twitter.com/David3141593/status/1371974874856587268
項目地址: https://github.com/DavidBuchanan314/tweetable-polyglot-png