组合问题希望你听说过neat hack,可以让你把一个JPG和Zip文件到一个单一的文件,它是两种格式的有效(或至少可读)文件。那么,我意识到,由于JPG允许最终使用任意东西,并且在开始时使用ZIP,所以您可以在中间再粘贴一种格式。对于这个问题,假设中间数据是任意的二进制数据,保证不与JPG或ZIP格式冲突(意味着它不包含魔术zip头0x04034b50)。插图:JPG + Zip文件用Zip格式
0xFFD8 <- start jpg data end -> 0xFFD9 ... ARBITRARY BINARY DATA ... 0x04034b50 <- start zip file ... EOF
我catting这样的:
猫 “mss_1600.jpg” FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB “null.bytes” “randomzipfile.zip”> temp.zip
这产生一个6,318 KB文件。它不是在7-Zip中打开。然而,当我的猫少了一个 '双'(所以不是13 FILEA和B,12):
猫 “mss_1600.jpg” FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB FILEA FILEB “null.bytes” “randomzipfile.zip”> temp.zip
它产生一个5996 KB文件确实在7-Zip的开放。
所以我知道我的任意二进制数据没有神奇的Zip文件头来搞砸了。我有参考文件working jpg+data+zip和non-working jpg+data+zip(保存 - 因为浏览器认为它们是图像,并自己添加zip扩展名)。
我想知道为什么它失败了13个组合,而不是12。对于奖励点,我需要绕过这个莫名其妙。
只是想指出,这可能是7Zip算法的问题,因为File Roller也设法打开非工作示例。 – laginimaineb 2009-12-02 15:39:49
巧妙的技巧 - 从现在开始,我将使用这种技术将我自己的图片插入到我的所有java .jar(可执行的jar-pegs :) – Seth 2009-12-06 20:50:54