Какова байтовая подпись ZIP-файла, защищенного паролем?

StackOverflow https://stackoverflow.com/questions/1489857

Вопрос

Я читал, что ZIP-файлы начинаются со следующих байтов:

50 4B 03 04

Ссылка: http://www.garykessler.net/library/file_sigs.html

Вопрос:Существует ли определенная последовательность байтов, указывающая, что ZIP-файл защищен паролем?

Это было полезно?

Решение

Неправда, что ZIP-файлы должны начинаться с

50 4B 03 04

Записи внутри zip-файлов начинаются с 50 4B 03 04... ..и часто чистые zip-файлы начинаются с записи zip в начале файла.Но нет необходимости, чтобы zip-файлы начинались с этих байтов.Все файлы, начинающиеся с этих байтов, вероятно zip-файлы, но не все zip-файлы начинаются с этих байтов.

Например, вы можете создать самораспаковывающийся архив, представляющий собой файл PE-COFF, обычный EXE-файл, в котором собственно и есть является подпись файла, которая 4D 5A ....Затем, позже в exe-файле, вы можете сохранить zip-записи, начиная с 50 4B 03 04....Это файл как .exe, так и .zip.

Самораспаковывающийся архив — не единственный класс zip-файлов, который не начинается с 50 4B 03 04 .Таким образом вы можете «спрятать» произвольные данные в zip-файле.У WinZip и других инструментов не должно возникнуть проблем с чтением zip-файла, отформатированного таким образом.

Если вы найдете 50 4B 03 04 подпись внутри файла, либо в начале файла, либо где-то еще, вы можете просмотреть следующие несколько байтов, чтобы определить, зашифрована ли эта конкретная запись.Обычно это выглядит примерно так:

50 4B 03 04 14 00 01 00 08 00 ... 

Первые четыре байта представляют собой подпись записи.Следующие два байта — это «версия, которую необходимо извлечь».В данном случае это 0x0014, то есть 20.Согласно спецификации pkware, это означает, что для извлечения записи требуется версия 2.0 спецификации pkzip.(Последняя «функция» zip, используемая в записи, описана в спецификации v2.0).Там вы можете найти более высокие цифры, если в zip-файле используются более продвинутые функции.Для шифрования AES требуется версия 5.1 спецификации, поэтому в этом заголовке вы должны найти 0x0033.(Не все zip-инструменты это учитывают).

Следующие 2 байта представляют собой битовый флаг общего назначения (в спецификации он называется «битовым флагом», хотя это битовый флаг). битовое поле), в данном случае 0x0001.Здесь установлен бит 0, что указывает на то, что запись зашифрована.

Другие биты этого битового флага имеют значение и также могут быть установлены.Например, бит 6 указывает на то, что использовалось надежное шифрование — либо AES, либо какое-либо другое более надежное шифрование.Бит 11 говорит, что запись использует кодировку UTF-8 для имени файла и комментария.

Вся эта информация доступна в Спецификация PKWare AppNote.txt.

Другие советы

Это базовые файлы в zip-архиве, защищенные паролем.В архиве можно хранить несколько файлов, защищенных паролем и незащищенных паролем (например,файл readme, а затем содержимое).

Если вы перейдете по ссылкам, описывающим ZIP-файлы в URL-адресе, на который вы ссылаетесь, вы обнаружите, что Вот этот обсуждается бит, указывающий, зашифрован ли файл в ZIP-архиве или нет.Вроде бы каждый файл в архиве может быть независимо зашифрован или нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top