希望你听说过一个很棒的技巧neat hack,它可以将JPG和Zip文件合并成一个文件,并且对于两种格式都是有效的(或至少可读的)文件。我意识到,由于JPG允许在结尾处放置任意内容,而ZIP在开头处,因此您可以在其中添加一种格式-在中间。对于本问题,假设中间数据是任意二进制数据,保证不会与JPG或ZIP格式冲突(这意味着它不包含魔术zip头0x04034b50)。图示:
0xFFD8 <- start jpg data end -> 0xFFD9 ... ARBITRARY BINARY DATA ... 0x04034b50 <- start zip file ... EOF
我这样进行猫操作:
cat "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中无法打开。但是,当我少拼接了一个'double'(也就是12个filea和b而不是13个)时:
cat "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
它产生了一个5,996 KB的文件,可以在7-Zip中打开。
我知道我的任意二进制数据没有魔术Zip文件头来破坏它。我有工作的jpg+数据+zip和不工作的jpg+数据+zip的参考文件(保存为,因为浏览器认为它们是图像,并自行添加zip扩展名)。
我想知道为什么它在13个组合中失败了,而在12个组合中没有失败。如果能解决这个问题,我会给予额外奖励。