专栏名称: Java编程学堂
每天分享程序员关注的 Python、Java、Web、AI、PHP、数据分析、前端、算法等多个领域的优质学习资源、开源项目及开发者工具。GitHub精选GitHub教程GitHub精品资源GitHub使用教程Git入门
目录
相关文章推荐
唐史主任司马迁  ·  截止当前,全年港股账户收益率最高,A股次之, ... ·  14 小时前  
投资眼老A  ·  崩了...突发暴跌... ·  昨天  
51好读  ›  专栏  ›  Java编程学堂

GitHub 热榜:如何用图片伪装文件?

Java编程学堂  · 公众号  ·  · 2021-03-23 11:30

正文

晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI

明明下载的是一张图片,只需修改后缀名,图片就变成了一首歌,一串代码。
国外黑客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文件下载到本地,运行以下代码:
python3 pack.py cover.png file.zip output.png
其中,cover.png是封面图片,file.zip是你要藏匿的文件,output.png是输出结果的文件名。
从外观上来看,output.png和cover.png是一样的,但多出一个压缩包的大小。

原理

用图片隐藏压缩包的原理并不复杂,png图片文件的格式如下。在Zlib之后,有一片IDAT块的附加数据。藏匿数据就放在这里。
图片来自Twitter用户@angealbertini
Twitter通常会压缩图像并删除所有不必要的元数据,但是可以在“ DEFLATE”的末尾添加更多数据。






请到「今天看啥」查看全文