Как определить метод сжатия файла 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. После открытия архива появляется столбец для метода сжатия:
для ZIP-да, zipinfo
для RAR заголовки легко найти с помощью 7Zip или WinRAR, прочитайте прилагаемую документацию
через 7-Zip (или p7zip) командная строка:
7z l -slt archive.file
Если вы ищете специально для метода сжатия:
7z l -slt archive.file | grep -e '^---' -e '^Path =' -e '^Method ='
тип прост, Просто посмотрите на заголовки файлов (PK
и Rar
).
что касается остального, я сомневаюсь, что информация доступна в сжатом содержимом.