Как распаковать необработанные данные PKZIP без zip-заголовка в Python?Python

Программы на Python
Ответить
Anonymous
 Как распаковать необработанные данные PKZIP без zip-заголовка в Python?

Сообщение Anonymous »

Я хочу распаковать необработанные данные из файла в экзотическом формате, но знаю, что метод сжатия тот же, что и в ZIP-файле (PKZIP).
В файле отсутствует подпись PK\03\04. После этого данные более или менее соответствуют спецификациям заголовка PKZIP:
https://docs.fileformat.com/compression/zip/
  • 2 байта — версия = 0x0014 (не знаю, имеет ли это смысл)
  • 2 байта флаги = 0
  • 2 метод сжатия байт = 0x0008 («сдутый» согласно ZIP-документам)
  • случайные 4 байта (время модификации)
  • случайные 4 байта (должен быть CRC32)
    4 байта допустимого размера в сжатом виде
  • 4 байта допустимого размера в несжатом виде
  • длина имени файла = 0x14 >
  • дополнительная длина поля = 0
  • имя файла — 20 случайных байт
Затем необработанные сжатые данные и после этого Конечная запись который выглядит поврежденным аналогичным образом. После добавления подписи и допустимых символов имени файла и сохранения буфера в файл я смог распаковать его с помощью 7zip. Он показал диалоговое окно с ошибкой, но создал несжатый файл. Результирующий файл содержал ожидаемые данные.
Я знаю, что всегда существует один сжатый файл и метод сжатия фиксирован. Имя файла не имеет значения, поэтому я думаю, что должна быть возможность обрабатывать только байты сжатых данных после заголовка, игнорируя также конечную запись.
Какой пакет Python предоставляет такую ​​функциональность?
Я хочу игнорировать заголовки ZIP и передать в какую-то функцию Python только буфер сжатых данных (возможно, с указанием метода сжатия и некоторых флагов) и получить обратно буфер несжатых данных. Никакой проверки CRC, никаких имен файлов.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»