晓查 发自 凹非寺 
量子位 报道 | 公众号 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”的末尾添加更多数据。

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

GitHub 开源神器:图片秒变文件相关推荐

  1. 不同分辨率图片匹配_杜克大学开源 AI 算法,让马赛克图片秒变高清!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 大家好,我是小 G.在这个追求高清画质的时代,我们对渣画质的容忍度越来越低. ...

  2. 杜克大学开源 AI 算法,让马赛克图片秒变高清!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 大家好,我是小 G. 在这个追求高清画质的时代,我们对渣画质的容忍度越来越低 ...

  3. GitHub开源神器!再厚的马赛克都能被扒干净?这款去码神器火了。。。

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 来自:扩展迷EXTFANS(ID:infinitydaily) 有人说,马赛 ...

  4. GitHub开源神器:教你如何实现 PDF 转 Word

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 作者:GG哥 来源:GitHub爱好者社区(github_shequ) 这是 ...

  5. android 动态显示多张图片,美图秀秀上线“魔法照片”功能:静态图片秒变动态大片!...

    一键生成大片,教你制作化静为动的"魔法照片" "魔法照片"的灵感来源于哈利波特的魔法世界,在神奇的魔法加持下,一张静态报纸中的人物竟然动了起来,现在这种神奇的效 ...

  6. 想Get热搜同款?GitHub开源神器让父亲重返18岁!

    今年父亲节你为爸爸准备了什么礼物? 一位开发者为弥补爸爸没能见到爷爷最后一面的遗憾,通过飞桨生成对抗网络套件PaddleGAN复原了爷爷的动态老照片,为爸爸送上了最难忘的礼物--一场跨越时空的对视! ...

  7. 有了这款 GitHub 开源神器,以后再也不怕找不到电影资源啦!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 大家好,我是小 G. 相信各位都知道,平时上网找电影是个挺费时费力的活,为了 ...

  8. GitHub 开源神器:堪称作业终结者!

    作者 | Saurabh Daware 译者 | 弯月,责编 | 郭芮 来源 | CSDN(ID:CSDNnews) 今天跟大家分享个比较有意思的开源工具. 前几天,有一个名叫 Saurabh Daw ...

  9. GitHub 开源神器 Bark模型,让文本转语音更简单

    今天跟大家分享一个文本转语音的开源模型:Bark Bark 是由Suno创建的基于转换器的文本到音频模型.Bark 可以生成高度逼真的多语言语音以及其他音频 - 包括音乐.背景噪音和简单的音效.该模型 ...

最新文章

  1. POJ-2635 The Embarrassed Cryptographer 大数取模
  2. php验证码--图片
  3. OpenGL绘图过程简述
  4. f2blog最新注入漏洞
  5. mysql的sum函数 如何设置默认值_mysql使用sum()出现null的问题,各种总结
  6. JavaSE--类与对象
  7. SpringMVC使用json格式之间的转换的工具类
  8. 实现:首页--上一页--下一页--末页的简单分页实现
  9. html5页面命名,html命名规则
  10. 你是外包,麻烦不要偷吃零食。。注意素质!
  11. win11右键菜单缺少“新建“选项解决办法“
  12. ScrollView和HorizontalScrollView常用属性,及禁止滑动
  13. 怎么找生物信息论文的数据,PubMed太有用了!
  14. 采埃孚ZF EDI DESADV需求实现
  15. 浮云绘图编辑器之直线、方块、圆等基础图元操作和接口源码
  16. java二面烩面什么问题_小米Java面试题,一面二面面经分享
  17. OpenWrt 安装 mDNS,并设置 mDNS 映射
  18. 牛客网小白月赛12(华华听月月唱歌)
  19. 什么是压力测试,在哪里做压力测试,软件压力测试存在哪些问题?
  20. eclipse 复制 粘贴 保存 等快捷键失效 原因及解决方案

热门文章

  1. 第6章第3节:颜色搭配:幻灯片常用的配色技巧 [PowerPoint精美幻灯片实战教程]
  2. mysql5.7如何启动服务_Mysql 5.7.18安装方法及启动MySQL服务的过程详解
  3. ap设置 维盟660g_维盟 FBM-580路由器功能参数介绍
  4. Codeforces Round #469 (Div. 2)
  5. 直播代码,直播室源码,直播视频源码
  6. 华为鸿蒙os手机入网,首款鸿蒙OS手机入网 华为卖车两天破3000单
  7. Linux搭建SMTP发送邮件服务器
  8. Hexo(sakura)添加说说页面
  9. java -xmx_Java中,启动JVM时,Xms和Xmx参数是什么? - Break易站
  10. 谁打败了浏览器之王?浏览器背后需要什么技术 ? (送书活动)