Какова байтовая подпись ZIP-файла, защищенного паролем?
-
18-09-2019 - |
Вопрос
Я читал, что 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-архиве или нет.Вроде бы каждый файл в архиве может быть независимо зашифрован или нет.