如何用图片假装文件?

“逆锋起笔”,公众号回复 编程资源python

领取大佬们推荐的学习资料git

 

晓查 

明明下载的是一张图片,只需修改后缀名,图片就变成了一首歌,一串代码。国外***David Buchanan利用Twitter的漏洞,能够用图片假装的方式传输一份“加密”文件,前提是不超过3MB他成功把这种藏匿文件的GitHub源代码压缩到图片中。如今你只要去他的Twitter,把这张图片下载下来,并将文件后缀名从.png修改成.zip,便可解压为Github代码。watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=(注:亲测Mac自带解压工具报错,第三方工具可正常解压。)watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=对于有十几年网龄的老网民来讲,这并非一项新技术。早年就有人将文本文件或种子文件藏匿在jpg图片中。这种方法的特色在于,把文件打包到图片中并不影响正常显示,但通常来讲文件大小不过几十KB。随着网络发展,愈来愈多的平台容许用户上传大尺寸无损图片,这就给藏匿大文件提供了契机。Buchanan的新方法如今将藏匿文件体积增长到3MB,你甚至能放入一首歌。Twitter上就有现成的例子,Buchanan放出了一张surprise.mp3的图片。若是后缀名修改成.mp3,就变成了一首歌。微信搜索公众号 逆锋起笔,关注后回复 编程资源,领取各类经典学习资料。watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=至于这个surprise,天然毫无心外是Rick Astley的《Never Gonna Give You Up》这首歌。恭喜你,又被“瑞克摇”了。watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=Buchanan的这一发现已经连续多天成为GitHub热门项目,最终在周末登上日榜第一。watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=使用方法很简单,只须要将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块的附加数据。藏匿数据就放在这里。watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=图片来自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微信


watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=