是否可以在 .jpg 中“隐藏”一个 .gif?

Posted

技术标签:

【中文标题】是否可以在 .jpg 中“隐藏”一个 .gif?【英文标题】:Is it possible to "hide" a .gif inside a .jpg? 【发布时间】:2019-02-04 14:48:57 【问题描述】:

我从 gif 制作了一个动画 png 文件,并希望它成为我的一个 spotify 播放列表的封面。然而,Spotify 仅支持 jpg 文件。我已经尝试了一切以某种方式上传 gif/动画 png,但 spotify 要么说“错误文件”,要么“它不是 .jpg,即使它有这个扩展名”。

但至少存在一个播放列表具有动画封面(可点击):

所以我认为这并非完全不可能。有没有办法将动画 png 或任何其他动画文件伪装成 jpg 文件,以便 spotify 算法不会拒绝该文件为“非 jpg”?

【问题讨论】:

【参考方案1】:

您的 URL 指向的文件只不过是一个扩展名为 .jpeg 并包含一个附加 XMP 数据块的 GIF 文件。这是整个区块:

?xpacket begin="\xEF\xBB\xBF" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "><rdf:RDF xmlns:rdf="http://www.w.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sTpe/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:841355A4132068118083B7DA9A8DC98" xmpMM:DocumentID="xmp.did:FA726C2A111C11E69036DFC090D5CCE2" xmpMM:nstanceID="xmp.iid:F7A05810110B11E69036DFC090D5CCE2" xmp:CreatorTool="Adoe Photoshop CS6 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:987E00694F2068118083B7D9A8DCF98" stRef:documentID="xmp.did:841355A4132068118083B7DA9A8DC98"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>

注:请注意xmpMM:nstanceID 部分,而不是xmpMM:instanceID,因为它需要。这不是转录错误,而是文件本身的错误。另请注意,块中没有左尖括号。

您是否尝试将此文件上传回 Spotify?可能有两种结果:

    上传失败。这意味着过去有一种上传 GIF 的方法,但现在已经不存在了。 成功了。如果是这样,请仔细查看该 XMP 块并尝试将其嵌入到您的 GIF 中。或许正是 XMP 让 Spotify 宣布图像适合。

【讨论】:

以上是关于是否可以在 .jpg 中“隐藏”一个 .gif?的主要内容,如果未能解决你的问题,请参考以下文章

在 JPG 图像中隐藏消息

如何将几张静态JPG图片转化成动态GIF的图片?

图片隐写术总结

使用 CSS 隐藏动画 GIF 是不是可以节省浏览器资源?

CTF Misc图片隐写基础以及原理,覆盖了大部分题型

CTF解题思路:图片隐写