Как определить метод сжатия файла ZIP / RAR - PullRequest
18 голосов
/ 01 августа 2011

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

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

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

Ответы [ 6 ]

10 голосов
/ 02 июля 2012

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

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

7zip properties

6 голосов
/ 25 августа 2011

Для ZIP - да, zipinfo

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

4 голосов
/ 02 августа 2011

Я предлагаю 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

Размер словаря также можно найти в графическом интерфейсе 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)
2 голосов
/ 22 февраля 2018

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

7z l -slt archive.file

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

7z l -slt archive.file | grep -e '^---' -e '^Path =' -e '^Method ='
1 голос
/ 02 августа 2011

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

0 голосов
/ 01 августа 2011

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

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

...