「逆鋒起筆」,公衆號回覆 編程資源python
領取大佬們推薦的學習資料git
明明下載的是一張圖片,只需修改後綴名,圖片就變成了一首歌,一串代碼。國外***David Buchanan利用Twitter的漏洞,能夠用圖片假裝的方式傳輸一份「加密」文件,前提是不超過3MB。他成功把這種藏匿文件的GitHub源代碼壓縮到圖片中。如今你只要去他的Twitter,把這張圖片下載下來,並將文件後綴名從.png修改成.zip,便可解壓爲Github代碼。(注:親測Mac自帶解壓工具報錯,第三方工具可正常解壓。)
對於有十幾年網齡的老網民來講,這並非一項新技術。早年就有人將文本文件或種子文件藏匿在jpg圖片中。這種方法的特色在於,把文件打包到圖片中並不影響正常顯示,但通常來講文件大小不過幾十KB。隨着網絡發展,愈來愈多的平臺容許用戶上傳大尺寸無損圖片,這就給藏匿大文件提供了契機。Buchanan的新方法如今將藏匿文件體積增長到3MB,你甚至能放入一首歌。Twitter上就有現成的例子,Buchanan放出了一張surprise.mp3的圖片。若是後綴名修改成.mp3,就變成了一首歌。微信搜索公衆號 逆鋒起筆,關注後回覆 編程資源,領取各類經典學習資料。
至於這個surprise,天然毫無心外是Rick Astley的《Never Gonna Give You Up》這首歌。恭喜你,又被「瑞克搖」了。
Buchanan的這一發現已經連續多天成爲GitHub熱門項目,最終在週末登上日榜第一。
使用方法很簡單,只須要將pack.py文件下載到本地,運行如下代碼:github
python3 pack.py cover.png file.zip output.png
其中,cover.png是封面圖片,file.zip是你要藏匿的文件,output.png是輸出結果的文件名。從外觀上來看,output.png和cover.png是同樣的,但多出一個壓縮包的大小。編程
用圖片隱藏壓縮包的原理並不複雜,png圖片文件的格式以下。在Zlib以後,有一片IDAT塊的附加數據。藏匿數據就放在這裏。△圖片來自Twitter用戶@angealbertiniTwitter一般會壓縮圖像並刪除全部沒必要要的元數據,可是能夠在「 DEFLATE」的末尾添加更多數據。若是整個圖像文件符合避免從新編碼的要求,壓縮包內容就不會從IDAT塊內的DEFLATE流中剝離。這種方法不只限於嵌入zip、mp3等文件,只要數據能壓縮到3MB之內,均可以嵌入到png圖片中。Buchanan表示,這種方法可能被***用於藏匿惡意代碼,他本人已將該漏洞利用報告給「漏洞賞金」程序,但卻被Twitter告知這不是bug。能傳輸「加密」文件,怎麼能說是bug呢?應該是隱藏功能纔對。(手動狗頭)帶壓縮包的圖片地址:
https://i.imgur.com/kNhGrN3.pngDavid Buchanan的Twitter:
https://twitter.com/David3141593/status/1371974874856587268項目地址:
https://github.com/DavidBuchanan314/tweetable-polyglot-png微信