Надеюсь, вы слышали о аккуратном хаке , который позволяет объединить JPG и Zip-файл в один файл, и это допустимый (или хотя бы читаемый) файл для обоих форматов. Что ж, я понял, что, поскольку JPG допускает произвольные вещи в конце, а ZIP в начале, вы можете вставить туда еще один формат - посередине. Для целей этого вопроса предположим, что промежуточные данные - это произвольные двоичные данные, гарантирующие, что они не будут конфликтовать с форматами JPG или ZIP (то есть они не содержат магический zip-заголовок 0x04034b50). Иллюстрация:
0xFFD8 <- start jpg data end -> 0xFFD9 ... ARBITRARY BINARY DATA ... 0x04034b50 <- start zip file ... EOF
Я катаюсь так:
filea fileb 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
Создает файл 6,318 КБ. не открывается в 7-Zip. Тем не менее, когда я на одну кошку меньше «двойной» (вместо 13 filea и b's, 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
Создает файл размером 5,996 КБ, который открывает в 7-Zip.
Так что я знаю, что в моих произвольных двоичных данных нет волшебного заголовка Zip-файла, который мог бы испортить его. У меня есть справочные файлы с рабочим jpg + data + zip и нерабочим jpg + data + zip (сохраните как, потому что браузер считает их изображениями, и добавьте расширение zip самостоятельно).
Я хочу знать, почему он терпит неудачу с 13 комбинациями, а не с 12. Для получения бонусных баллов мне нужно как-то обойти это.