2014-09-22 5 views
1

все.отличия .zip формат, созданный с winrar и с 7-zip

Я использую стороннюю библиотеку для архивирования/распаковки некоторых файлов. Формат ввода/вывода - .zip.

Но я обнаружил, что lib может хорошо читать архивы, созданные с помощью WinRAR, но не может читать архивы, созданные с помощью 7-zip.

Может ли кто-нибудь сказать мне, в чем проблема, и как это можно исправить.

шестнадцатеричный вид запуска архива, созданного с WinRar:

50 4b 04 14 03 00 00 00 08 00 EC 88 25 45 6e 1a ....

шестнадцатеричный вид начиная архива, созданного с 7-Zip:

50 4b 04 14 03 00 00 00 08 00 ED 88 25 45 6e 1a ....

разница в байте EC и ED.

ответ

0

7-Zip архивы могут быть созданы с помощью нескольких различных compression formats, которые не совместимы со стандартными ZIP библиотеки сжатия/декомпрессии, основанные, например, на Info-ZIP исходного кода.

Такие приложения, как WinRAR и Total Commander, поддерживающие создание/извлечение ZIP-файлов, изначально используют DLL для извлечения файлов из нестандартных 7-Zip-архивов.

См. Вопрос Могу ли я использовать EXE или DLL-файлы из 7-Zip в коммерческом приложении? на странице FAQ страница 7-Zip.

2

Это структура заголовка из ZIP-файла:

+---------------------------------------------------------------------+ 
|        BYTE         | 
|0x0 0x1 0x2 0x3|0x4 0x5|0x6 0x7| 0x8 0x9 |0xA 0xB|0xC 0xD|  | 
+---------------+-------+-------+-----------+--------+--------+-------+ 
| signature |version| flags |compression|mod time|mod date| CRC32 | 
+---------------+-------+-------+-----------+--------+--------+-------+ 
| 50 4B 03 04| 14 00| 00 00| 08 00 |EC/ED 88| 25 45|  | 
+---------------------------------------------------------------------+ 
  • подпись всегда 0x50 0x03 0x04 0x4b (как в вашем случае). 0x50 = 'P', 0x4b = 'K' (Phillip Katz)
  • версия, необходимой для извлечения (0x14 0x00 = 20 -> ZIP 2.0)
  • общего назначения битого флаги (без флагов, ваш файл не кодировка языка зашифрованный/по умолчанию)
  • метод сжатия является выкачивают (08)

Таким образом, единственное то, что изменение времени модификации (всего несколько минут).

Даже первые два байта CRC32 являются одинаковыми. Если - единственная разница - это значение EC/ED, проблема не в содержании архива.

Дополнительные ссылки: https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html

 Смежные вопросы

  • Нет связанных вопросов^_^