Надеюсь, вы слышали о 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 КБ. Это не открыть в 7-Zip. Однако, когда я кошка один меньше 'двойной' (так что вместо 13 FiLea и Б, 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
Аккуратный трюк - отныне я собираюсь использовать эту технику, чтобы вставить изображение себя во все мои java .jar (исполняемые jar-pegs :) – Seth