Как определить метод сжатия файла ZIP/RAR

У меня есть несколько файлов zip и rar, с которыми я работаю, и я пытаюсь проанализировать свойства сжатия каждого файла (уровень сжатия, алгоритм сжатия (например, deflate, LZMA, BZip2), размер словаря, размер слова и т. д.), и я еще не придумал, как это сделать.

есть ли способ проанализировать файлы, чтобы определить эти свойства, с помощью программного обеспечения или иным образом?

ура и спасибо!

6 ответов


предлагаю hachoir-wx чтобы взглянуть на эти файлы. Как установить пакет Python или можно попробовать ActivePython С PyPM при использовании Windows. Когда у вас установлены необходимые пакеты hachoir, вы можете сделать что-то вроде этого, чтобы запустить GUI:

python C:\Python27\Scripts\hachoir-wx

Это позволяет просматривать поля данных RAR и ZIP-файлов. Видеть это скриншот для примера.

для файлов RAR, посмотрите на technote.txt в директорию архиватора WinRAR. Это дает подробную информацию о спецификации RAR. Вам, вероятно, будут интересны следующие:

 HEAD_FLAGS      Bit flags: 2 bytes
                 0x10 - information from previous files is used (solid flag)
                 bits 7 6 5 (for RAR 2.0 and later)
                      0 0 0    - dictionary size   64 KB
                      0 0 1    - dictionary size  128 KB
                      0 1 0    - dictionary size  256 KB
                      0 1 1    - dictionary size  512 KB
                      1 0 0    - dictionary size 1024 KB
                      1 0 1    - dictionary size 2048 KB
                      1 1 0    - dictionary size 4096 KB
                      1 1 1    - file is directory

размер словаря также можно найти в GUI WinRAR.

 METHOD          Packing method 1 byte
                 0x30 - storing
                 0x31 - fastest compression
                 0x32 - fast compression
                 0x33 - normal compression
                 0x34 - good compression
                 0x35 - best compression

и Википедия также знает это:

утилита сжатия RAR проприетарные, с закрытым алгоритмом. RAR принадлежит Александру Л. Рошалю, старшему брату Евгения Рошаля. Версия 3 RAR основана на Lempel-Ziv (LZSS) и прогнозировании путем частичного сжатия соответствия (PPM), в частности, реализация PPMd PPMII Дмитрием Шкариным.

для ZIP-файлов я бы начал с просмотра технические характеристики и ZIP страница Википедии. Это, наверное, интересно:

  general purpose bit flag: (2 bytes)
  compression method: (2 bytes)

Это довольно старый вопрос, но я все равно хотел бросить свои два цента, так как некоторые из вышеперечисленных методов были не так просты для меня.

вы также можете определить это с помощью 7-Zip. После открытия архива появляется столбец для метода сжатия:

7zip properties


для ZIP-да, zipinfo

для RAR заголовки легко найти с помощью 7Zip или WinRAR, прочитайте прилагаемую документацию


для ZIP-файлов существует команда zipinfo.


через 7-Zip (или p7zip) командная строка:

7z l -slt archive.file

Если вы ищете специально для метода сжатия:

7z l -slt archive.file | grep -e '^---' -e '^Path =' -e '^Method ='

тип прост, Просто посмотрите на заголовки файлов (PK и Rar).

что касается остального, я сомневаюсь, что информация доступна в сжатом содержимом.