前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图片可隐藏zip和mp3文件,只需修改后缀名,这个GitHub项目火了

图片可隐藏zip和mp3文件,只需修改后缀名,这个GitHub项目火了

作者头像
昱良
发布2021-03-24 14:19:55
6220
发布2021-03-24 14:19:55
举报
(给机器学习算法与Python学习加星标,提升AI技能)
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI

明明下载的是一张图片,只需修改后缀名,图片就变成了一首歌,一串Python代码。

国外黑客David Buchanan利用Twitter的漏洞,可以用图片伪装的方式传输一份“加密”文件,前提是不超过3MB

他成功把这种藏匿文件的GitHub源代码压缩到图片中。

随着网络发展,越来越多的平台允许用户上传大尺寸无损图片,这就给藏匿大文件提供了契机。

Buchanan的新方法现在将藏匿文件体积增加到3MB,你甚至能放入一首歌。

Twitter上就有现成的例子,Buchanan放出了一张surprise.mp3的图片。如果后缀名修改为.mp3,就变成了一首歌。

至于这个surprise,自然毫无意外是Rick Astley的《Never Gonna Give You Up》这首歌。恭喜你,又被“瑞克摇”了。

Buchanan的这一发现已经连续多天成为GitHub热门项目,最终在周末登上日榜第一。

使用方法很简单,只需要将pack.py文件下载到本地,运行以下代码:

代码语言:javascript
复制
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”的末尾添加更多数据。

如果整个图像文件符合避免重新编码的要求,压缩包内容就不会从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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档