stringtranslate.com

ZIP (формат файла)

ZIP — это формат архивных файлов , который поддерживает сжатие данных без потерь . ZIP-файл может содержать один или несколько файлов или каталогов, которые могли быть сжаты. Формат файла ZIP поддерживает несколько алгоритмов сжатия , но наиболее распространенным является DEFLATE . Этот формат был первоначально создан в 1989 году и впервые реализован в утилите PKZIP компании PKWARE, Inc. [2] в качестве замены предыдущего формата сжатия ARC , разработанного Томом Хендерсоном. Затем формат ZIP был быстро поддержан многими программными утилитами, кроме PKZIP. Microsoft включила встроенную поддержку ZIP (под названием «сжатые папки») в версии Microsoft Windows с 1998 года через надстройку «Plus! 98» для Windows 98. Встроенная поддержка была добавлена ​​с 2000 года в Windows ME. [ нужна цитация ] Apple включила встроенную поддержку ZIP в Mac OS X 10.3 (через BOMArchiveHelper, теперь Archive Utility ) и более поздних версий. Большинство бесплатных операционных систем имеют встроенную поддержку ZIP, аналогично Windows и macOS.

ZIP-файлы обычно используют расширения файлов .zip или .ZIP и тип носителя MIME . [1] ZIP используется в качестве базового формата во многих программах, обычно под другим именем. При навигации по файловой системе через пользовательский интерфейс графические значки , представляющие ZIP-файлы, часто отображаются в виде документа или другого объекта с заметной застежкой-молнией .application/zip

История

Формат файла .ZIP был разработан Филом Кацем из PKWARE и Гэри Конвеем из Infinity Design Concepts. Формат был создан после того, как Systems Enhancement Associates (SEA) подала иск против PKWARE, утверждая, что продукты архивирования последней, получившие название PKARC, были производными от системы архивирования ARC SEA . [3] Название «zip» (что означает «движение на высокой скорости») было предложено другом Каца, Робертом Махони. [4] Они хотели дать понять, что их продукт будет быстрее, чем ARC и другие форматы сжатия того времени. [4] Самая ранняя известная версия спецификации формата файла .ZIP была впервые опубликована как часть пакета PKZIP 0.9 под файлом APPNOTE.TXT в 1989 году . Формат файла широко распространился в общедоступном Интернете в 1990-е годы. [5]

PKWARE и Infinity Design Concepts выпустили совместный пресс-релиз 14 февраля 1989 года, выпустив формат файлов .ZIP в общественное достояние . [6] [7] [8] [9] [10]

История версий

Спецификация формата файла .ZIP имеет собственный номер версии, который не обязательно соответствует номерам версий инструмента PKZIP, особенно для PKZIP 6 или более поздней версии. В разное время PKWARE добавлял предварительные функции, которые позволяют продуктам PKZIP извлекать архивы с использованием расширенных функций, но продукты PKZIP, создающие такие архивы, не станут доступны до следующего основного выпуска. Другие компании и организации поддерживают спецификации PKWARE в своем темпе.

Спецификация формата файла .ZIP официально называется «APPNOTE — Спецификация формата файла .ZIP» и публикуется на веб-сайте PKWARE.com с конца 1990-х годов. [11] Некоторые версии спецификации не были опубликованы. Спецификации некоторых функций, таких как сжатие BZIP2 , спецификация надежного шифрования и другие, были опубликованы PKWARE через несколько лет после их создания. URL-адрес онлайн-спецификации на веб-сайте PKWARE несколько раз менялся.

Краткое изложение ключевых достижений в различных версиях спецификации PKWARE:

WinZip , начиная с версии 12.1, использует расширение .zipx для ZIP-файлов, в которых используются методы сжатия, более новые, чем DEFLATE; в частности, методы BZip, LZMA, PPMd, Jpeg и Wavpack. Последние два применяются к соответствующим типам файлов, когда выбрано сжатие «Лучший метод». [28] [29]

Стандартизация

В апреле 2010 года ОТК 1 ISO/IEC инициировал голосование, чтобы определить, следует ли инициировать проект по созданию формата международного стандарта ISO/IEC, совместимого с ZIP. [30] Предлагаемый проект, озаглавленный « Упаковка документов» , предусматривал ZIP-совместимый «минимальный формат сжатого архива», подходящий для использования с рядом существующих стандартов, включая OpenDocument , Office Open XML и EPUB .

В 2015 году был опубликован стандарт ISO / IEC 21320-1 «Файл-контейнер документов. Часть 1: Ядро», в котором говорится, что «Файлы-контейнеры документов соответствуют Zip-файлам». Для этого требуются следующие основные ограничения формата файла ZIP: [31]

Дизайн

Файлы .ZIP — это архивы, в которых хранится несколько файлов. ZIP позволяет сжимать содержащиеся файлы множеством различных методов, а также просто хранить файл без его сжатия. Каждый файл хранится отдельно, что позволяет сжимать разные файлы в одном архиве разными методами. Поскольку файлы в ZIP-архиве сжимаются индивидуально, их можно извлечь или добавить новые, не применяя сжатие или распаковку ко всему архиву. Это контрастирует с форматом сжатых файлов tar , для которых такая обработка с произвольным доступом невозможна.

Каталог размещается в конце ZIP-файла. Это определяет, какие файлы находятся в ZIP-архиве, и определяет, где в ZIP-архиве находится этот файл. Это позволяет программам чтения ZIP загружать список файлов, не читая весь ZIP-архив. ZIP-архивы также могут включать дополнительные данные, не связанные с ZIP-архивом. Это позволяет превратить ZIP-архив в самораспаковывающийся архив (приложение, которое распаковывает содержащиеся в нем данные) путем добавления программного кода к ZIP-архиву и пометки файла как исполняемого. Хранение каталога в конце также позволяет скрыть заархивированный файл, добавив его к безобидному файлу, например файлу изображения GIF.

Формат .ZIP использует 32-битный алгоритм CRC и включает две копии метаданных каждой записи для обеспечения большей защиты от потери данных. Алгоритм CRC-32 был предложен Дэвидом Швадерером, и его можно найти в его книге «Руководство для программистов C по NetBIOS», опубликованной Howard W. Sams & Co. Inc. [32]

Состав

Внутренняя планировка ЗИП-64

ZIP-файл правильно идентифицируется по наличию конца записи центрального каталога , которая расположена в конце структуры архива, чтобы можно было легко добавлять новые файлы. Если конец записи центрального каталога указывает на непустой архив, имя каждого файла или каталога в архиве должно быть указано в записи центрального каталога вместе с другими метаданными о записи и смещением в ZIP-файле, указывающим фактическим входным данным. Это позволяет относительно быстро выполнить листинг файлов архива, поскольку для просмотра списка файлов не нужно читать весь архив. Записи в ZIP-файле также включают эту информацию для избыточности в заголовок локального файла . Поскольку к ZIP-файлам можно добавлять файлы, действительными являются только файлы, указанные в центральном каталоге в конце файла. Сканирование ZIP-файла на наличие заголовков локальных файлов недопустимо (за исключением случаев повреждения архивов), так как центральный каталог может объявить, что некоторые файлы были удалены, а другие файлы обновлены.

Например, мы можем начать с ZIP-файла, содержащего файлы A, B и C. Затем файл B удаляется, а C обновляется. Этого можно добиться, просто добавив новый файл C в конец исходного ZIP-файла и добавив новый центральный каталог, в котором перечислены только файл A и новый файл C. Когда ZIP был впервые разработан, передача файлов с помощью дискеты была обычным явлением. однако запись на диски занимала очень много времени. Если у вас большой zip-файл, возможно, занимающий несколько дисков, и вам нужно обновить только несколько файлов, а не читать и перезаписывать все файлы, было бы значительно быстрее просто прочитать старый центральный каталог и добавить новые файлы. затем добавьте обновленный центральный каталог.

Порядок записей файлов в центральном каталоге не обязательно должен совпадать с порядком записей файлов в архиве.

Каждая запись, хранящаяся в ZIP-архиве, начинается с локального заголовка файла с информацией о файле, такой как комментарий, размер файла и имя файла, за которым следуют необязательные «дополнительные» поля данных, а затем, возможно, сжатые, возможно, зашифрованные данные файла. Поля «Дополнительные» данные являются ключом к расширяемости формата ZIP. «Дополнительные» поля используются для поддержки формата ZIP64, WinZip-совместимого шифрования AES, атрибутов файлов и временных меток файлов NTFS или Unix с более высоким разрешением. Другие расширения возможны через поле «Дополнительно». Согласно спецификации, инструменты ZIP должны игнорировать дополнительные поля, которые они не распознают.

Формат ZIP использует специальные 4-байтовые «подписи» для обозначения различных структур в файле. Каждая запись файла отмечена определенной подписью. Конец записи центрального каталога обозначается специальной подписью, и каждая запись в центральном каталоге начинается с 4-байтовой подписи заголовка центрального файла .

В спецификации ZIP нет маркера BOF или EOF. Традиционно первое в ZIP-файле — это ZIP-запись, которую можно легко идентифицировать по подписи локального заголовка файла . Однако это не обязательно так, поскольку этого не требует спецификация ZIP — в частности, самораспаковывающийся архив начинается с заголовка исполняемого файла.

Инструменты, которые правильно читают ZIP-архивы, должны сканировать конец подписи записи центрального каталога, а затем, при необходимости, другие указанные записи центрального каталога. Им не следует искать записи в верхней части ZIP-файла, поскольку (как упоминалось ранее в этом разделе) только центральный каталог определяет, где начинается фрагмент файла, и что он не был удален. Сканирование может привести к ложным срабатываниям, поскольку формат не запрещает другим данным находиться между фрагментами, а потокам данных файлов содержать такие подписи. Однако инструменты, которые пытаются восстановить данные из поврежденных ZIP-архивов, скорее всего, просканируют архив на наличие подписей заголовков локальных файлов; это усложняется тем фактом, что сжатый размер фрагмента файла может сохраняться после фрагмента файла, что затрудняет последовательную обработку.

Большинство подписей заканчиваются коротким целым числом 0x4b50, которое хранится в порядке с прямым порядком байтов. В виде строки ASCII это читается как «PK» — инициалы изобретателя Фила Каца. Таким образом, когда ZIP-файл просматривается в текстовом редакторе, первые два байта файла обычно имеют формат «PK». (Самораспаковывающиеся ZIP-архивы DOS, OS/2 и Windows имеют EXE-файл перед ZIP, поэтому начинаются с «MZ»; самораспаковывающиеся ZIP-файлы для других операционных систем могут аналогичным образом предваряться исполняемым кодом для извлечения содержимого архива на этой платформе.)

Спецификация .ZIP также поддерживает распространение архивов по нескольким файлам файловой системы. Первоначально предназначенная для хранения больших ZIP-файлов на нескольких дискетах , эта функция теперь используется для отправки ZIP-архивов частями по электронной почте, другим средствам транспорта или съемным носителям.

Файловая система FAT в DOS имеет разрешение временной метки всего две секунды; Записи ZIP-файлов имитируют это. В результате встроенное разрешение временных меток файлов в ZIP-архиве составляет всего две секунды, хотя для хранения более точных временных меток можно использовать дополнительные поля. В формате ZIP нет понятия часового пояса , поэтому временные метки имеют смысл только в том случае, если известно, в каком часовом поясе они были созданы.

В сентябре 2006 года PKWARE выпустила пересмотренную версию спецификации ZIP, предусматривающую хранение имен файлов с использованием UTF-8 , наконец добавив в ZIP совместимость с Unicode. [17]

Заголовки файлов

Все многобайтовые значения в заголовке хранятся в порядке байтов с прямым порядком байтов. Все поля длины подсчитывают длину в байтах.

Заголовок локального файла

Дополнительное поле содержит различные дополнительные данные, такие как атрибуты, специфичные для ОС. Он разделен на записи, каждая из которых имеет как минимум 16-битную подпись и 16-битную длину. Например, запись дополнительного поля локального файла ZIP64 имеет сигнатуру 0x0001 и длину 16 байт (или более), так что за ней могут следовать два 64-битных значения (несжатый и сжатый размеры). Другое распространенное расширение локального файла — 0x5455 (или «UT»), которое содержит 32-битные временные метки UTC UNIX.

Сразу за этим следуют сжатые данные.

Дескриптор данных

Если бит по смещению 3 (0x08) поля флагов общего назначения установлен, то CRC-32 и размеры файлов неизвестны при записи заголовка. Если архив в формате Zip64, поля размера в сжатом и несжатом виде имеют длину 8 байт вместо 4 байт (см. раздел 4.3.9.2 [34] ). Эквивалентные поля в локальном заголовке (или в дополнительном поле расширенной информации Zip64 в случае архивов в формате Zip64) заполняются нулями, а CRC-32 и размер добавляются в 12-байтовой структуре (необязательно перед которой ставится 4-байтовая подпись) сразу после сжатых данных:

Заголовок файла центрального каталога

Запись центрального каталога представляет собой расширенную форму локального заголовка:

Конец записи центрального каталога (EOCD)

После всех записей центрального каталога следует запись конца центрального каталога (EOCD), которая отмечает конец ZIP-файла:

Такой порядок позволяет создать ZIP-файл за один проход, но центральный каталог также размещается в конце файла, чтобы облегчить удаление файлов из архивов, состоящих из нескольких частей ( например, «многодискетных») , поскольку ранее обсуждалось.

Методы сжатия

Спецификация формата файла .ZIP документирует следующие методы сжатия: Store (без сжатия), Shrink ( LZW ), уменьшить (уровни 1–4; LZ77 + вероятностный), Implode, Deflate, Deflate64, bzip2 , LZMA , WavPack , PPMd и вариант LZ77, предоставляемый инструкцией IBM z/OS CMPSC. [35] [22] Наиболее часто используемый метод сжатия — DEFLATE , описанный в IETF RFC  1951.

Другие методы, упомянутые, но не описанные подробно в спецификации, включают: PKWARE DCL Implode (старый IBM TERSE), новый IBM TERSE , IBM LZ77 z Architecture (PFS) и вариант JPEG. Метод «Tokenize» был зарезервирован для третьей стороны, но поддержка так и не была добавлена. [22]

Слово Implode в PKWARE слишком часто используется: DCL/TERSE Implode отличается от старого PKZIP Implode, предшественника Deflate. DCL Implode частично недокументирован из-за того, что он является собственностью IBM, но Марк Адлер , тем не менее, предоставил декомпрессор под названием «blast» вместе с zlib. [36]

Шифрование

ZIP поддерживает простую систему симметричного шифрования на основе пароля , обычно известную как ZipCrypto. Он задокументирован в спецификации ZIP и известен своими серьезными недостатками. В частности, он уязвим для атак с использованием известного открытого текста , которые в некоторых случаях усугубляются плохой реализацией генераторов случайных чисел . [5] Компьютеры под управлением собственной ОС Microsoft Windows без сторонних архиваторов могут открывать, но не создавать ZIP-файлы, зашифрованные с помощью ZipCrypto, но не могут извлекать содержимое файлов, использующих другое шифрование. [37]

Новые функции, включая новые методы сжатия и шифрования (например, AES ), документируются в спецификации формата файла ZIP начиная с версии 5.2. Открытый стандарт на основе AES, разработанный WinZip («AE-x» в APPNOTE), также используется 7-Zip и Xceed , но некоторые поставщики используют другие форматы. [38] PKWARE SecureZIP (SES, собственный) также поддерживает методы шифрования RC2, RC4, DES, Triple DES, шифрование и аутентификацию на основе цифровых сертификатов ( X.509 ), а также шифрование заголовка архива. Однако он запатентован (см. § Серьезные споры о шифровании). [39]

Шифрование имени файла представлено в спецификации формата файла .ZIP 6.2, которая шифрует метаданные, хранящиеся в части архива центрального каталога, но разделы локального заголовка остаются незашифрованными. Соответствующий требованиям архиватор может фальсифицировать данные локального заголовка при использовании шифрования центрального каталога. Начиная с версии 6.2 спецификации, поля «Метод сжатия» и «Размер сжатого изображения» в локальном заголовке еще не замаскированы.

ZIP64

Исходный формат .ZIP имел ограничение в 4 ГБ (2 32 байта) на различные вещи (размер несжатого файла, сжатый размер файла и общий размер архива), а также ограничение в 65 535 (2 16 - 1) записи в ZIP-архиве. В версии 4.5 спецификации (которая отличается от версии 4.5 какого-либо конкретного инструмента) PKWARE представила расширения формата «ZIP64», чтобы обойти эти ограничения, увеличив ограничения до 16  ЭБ (2 64 байта). По сути, он использует «обычную» запись центрального каталога для файла, за которой следует необязательная запись каталога «zip64», которая имеет поля большего размера. [40]

Формат заголовка локального файла (LOC) и записи центрального каталога (CEN) одинаков в ZIP и ZIP64. Однако ZIP64 определяет дополнительное поле, которое может быть добавлено к этим записям по усмотрению компрессора, целью которого является хранение значений, которые не помещаются в классические записи LOC или CEN. Чтобы указать, что фактические значения хранятся в дополнительных полях ZIP64, им присваиваются значения 0xFFFF или 0xFFFFFFFF в соответствующей записи LOC или CEN. Если одна запись не вписывается в классическую запись LOC или CEN, необходимо переместить только эту запись в дополнительное поле ZIP64. Остальные записи могут остаться в классической записи. Таким образом, не все записи, показанные в следующей таблице, могут храниться в дополнительном поле ZIP64. Однако, если они появляются, их порядок должен быть таким, как показано в таблице.

С другой стороны, формат EOCD для ZIP64 немного отличается от обычной версии ZIP. [33]

Это также не обязательно последняя запись в файле. Далее следует локатор конца центрального каталога (дополнительные 20 байт в конце).

Проводник в Windows XP не поддерживает ZIP64, но проводник в Windows Vista и более поздних версиях поддерживает. [ нужна цитация ] Аналогично, некоторые библиотеки расширений поддерживают ZIP64, например DotNetZip, QuaZIP [41] и IO::Compress::Zip в Perl. Встроенный zip-файл Python поддерживает его с версии 2.5 и по умолчанию использует его с версии 3.4. [42] Встроенный в OpenJDK java.util.zip поддерживает ZIP64, начиная с версии Java 7 . [43] Android Java API поддерживает ZIP64, начиная с Android 6.0. [44] Утилита архивирования Mac OS Sierra, в частности, не поддерживает ZIP64 и может создавать поврежденные архивы, когда требуется ZIP64. [45] Однако команда ditto, поставляемая с Mac OS, распакует файлы ZIP64. [46] Более поздние [ когда? ] версии Mac OS поставляются с инструментами командной строки zip и unzip, которые поддерживают Zip64: для проверки запустите zip -v и найдите «ZIP64_SUPPORT».

Сочетание с другими форматами файлов

Формат файла .ZIP позволяет разместить комментарий, содержащий до 65 535 (2 16 −1) байт данных, в конце файла после центрального каталога. [33] Кроме того, поскольку центральный каталог определяет смещение каждого файла в архиве относительно начала, первая запись файла может начинаться со смещением, отличным от нуля, хотя некоторые инструменты, например gzip , будут не обрабатывать архивные файлы, которые не начинаются с записи файла с нулевым смещением.

Это позволяет произвольным данным появляться в файле как до, так и после данных ZIP-архива, а также сохранять архив для чтения ZIP-приложением. Побочным эффектом этого является то, что можно создать файл, который является одновременно рабочим ZIP-архивом и другим форматом, при условии, что другой формат допускает произвольные данные в конце, начале или середине. Самораспаковывающиеся архивы (SFX) в форме, поддерживаемой WinZip, используют это преимущество, поскольку они представляют собой исполняемые файлы ( .exe ), которые соответствуют спецификации PKZIP AppNote.txt и могут быть прочитаны совместимыми zip-инструментами или библиотеками. .

Это свойство формата .ZIP и формата JAR , который является вариантом ZIP, можно использовать для сокрытия несанкционированного содержимого (например, вредоносных классов Java) внутри, казалось бы, безобидного файла, такого как изображение GIF, загруженное в Интернет. Этот так называемый эксплойт GIFAR был продемонстрирован как эффективная атака на веб-приложения, такие как Facebook. [47]

Пределы

Минимальный размер файла .ZIP составляет 22 байта. Такой пустой zip-файл содержит только запись конца центрального каталога (EOCD):
[0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]

Максимальный размер как архивного файла, так и отдельных файлов внутри него составляет 4 294 967 295 байт (2 32 −1 байт или 4 ГБ минус 1 байт) для стандартного ZIP. Для ZIP64 максимальный размер составляет 18 446 744 073 709 551 615 байт (2 64 -1 байт или 16 ЭБ минус 1 байт). [48]

Открытые расширения

Оптимизированный для поиска (SOZip) профиль

Для формата ZIP был предложен профиль ZIP-файла, оптимизированный для поиска (SOZip) [49] . Такой файл содержит один или несколько файлов, сжатых Deflate, которые организованы и снабжены аннотациями таким образом, что программа чтения, поддерживающая SOZip, может выполнять очень быстрый произвольный доступ (поиск) внутри сжатого файла. SOZip позволяет получить доступ к большим сжатым файлам непосредственно из ZIP-файла без предварительного распаковывания. Он сочетает в себе использование сбросов блоков ZLib, выпускаемых через регулярные промежутки времени, со скрытым индексным файлом, отображающим смещения несжатого файла на смещения в сжатом потоке. Программы чтения ZIP, не знающие об этом расширении, могут нормально читать файл с поддержкой SOZip и игнорировать расширенные функции, поддерживающие эффективный поиск.

Собственные расширения

Дополнительное поле

Формат файла .ZIP включает в себя дополнительные поля в заголовках файлов, которые можно использовать для хранения дополнительных данных, не определенных существующими спецификациями ZIP, и которые позволяют совместимым архиваторам, которые не распознают поля, безопасно пропускать их. Идентификаторы заголовков 0–31 зарезервированы для использования PKWARE. Остальные идентификаторы могут использоваться сторонними поставщиками для использования в собственных целях.

Серьезные споры о шифровании

Когда в 2003 году была выпущена общедоступная бета-версия WinZip 9.0, WinZip представил собственное шифрование AES-256 с использованием другого формата файлов, а также документацию по новой спецификации. [50] Сами стандарты шифрования не были проприетарными , но PKWARE не обновляла APPNOTE.TXT для включения спецификации сильного шифрования (SES) с 2001 года, которая использовалась PKZIP версий 5.0 и 6.0. Технический консультант WinZip Кевин Кирни и менеджер по продуктам StuffIt Мэтью Ковингтон обвинили PKWARE в удержании SES, но технический директор PKZIP Джим Петерсон заявил, что шифрование на основе сертификатов все еще не завершено.

Еще один спорный шаг: 16 июля 2003 года PKWare подала заявку на патент, описывающий метод сочетания ZIP и надежного шифрования для создания защищенного файла. [51]

В конце концов PKWARE и WinZip согласились поддерживать продукты друг друга. 21 января 2004 года PKWARE объявила о поддержке формата сжатия AES на основе WinZip. [52] В более поздней бета-версии WinZip появилась возможность поддерживать ZIP-файлы на основе SES. [53] PKWARE в конечном итоге выпустила для публики версию 5.2 спецификации формата файла .ZIP, в которой документировался SES. Проект бесплатного программного обеспечения 7-Zip также поддерживает AES, но не SES в ZIP-файлах (как и его POSIX- порт p7zip ) .

При использовании шифрования AES в WinZip для метода сжатия всегда установлено значение 99, а фактический метод сжатия сохраняется в дополнительном поле данных AES. [54] Напротив, спецификация строгого шифрования сохраняет метод сжатия в сегменте основного заголовка файла локального заголовка и центрального каталога, если только шифрование центрального каталога не используется для маскировки/шифрования метаданных.

Выполнение

Доступно множество инструментов .ZIP и множество .ZIP- библиотек для различных сред программирования; Используемые лицензии включают проприетарное и бесплатное программное обеспечение . WinZip , WinRAR , Info-ZIP , ZipGenius , 7-Zip , PeaZip и B1 Free Archiver — хорошо известные инструменты .ZIP , доступные на различных платформах. Некоторые из этих инструментов имеют библиотечные или программные интерфейсы.

Некоторые библиотеки разработки, лицензированные по соглашению об открытом исходном коде, — это libzip , libarchive и Info-ZIP . Для Java: Платформа Java, Standard Edition содержит пакет «java.util.zip» для обработки стандартных файлов .ZIP ; библиотека Zip64File специально поддерживает большие файлы (более 4 ГБ) и обрабатывает файлы .ZIP с использованием произвольного доступа; а инструмент Apache Ant содержит более полную реализацию, выпущенную по лицензии Apache Software License .

Реализации Info-ZIP формата .ZIP добавляют поддержку функций файловой системы Unix, таких как идентификаторы пользователей и групп, права доступа к файлам и поддержку символических ссылок. Реализация Apache Ant учитывает это до такой степени, что может создавать файлы с предопределенными разрешениями Unix. Реализации Info-ZIP также умеют использовать возможности исправления ошибок, встроенные в формат сжатия .ZIP . Некоторые программы этого не делают и не работают с файлом, содержащим ошибки.

Инструменты Info-ZIP для Windows также поддерживают разрешения файловой системы NTFS и предпримут попытку преобразования разрешений NTFS в разрешения Unix или наоборот при извлечении файлов. Это может привести к потенциально непредвиденным комбинациям, например, к созданию файлов .exe на томах NTFS с отказом в разрешении на выполнение.

Версии Microsoft Windows включают поддержку сжатия .ZIP в Explorer, начиная с Microsoft Plus! пакет был выпущен для Windows 98. Microsoft называет эту функцию «Сжатые папки». Не все функции .ZIP поддерживаются функцией сжатых папок Windows. Например, шифрование не поддерживается в редакции Windows 10 Home [55] , хотя расшифровка возможна. Кодировка записей Unicode не поддерживается до Windows 7 , а разделенные и составные архивы не доступны для чтения или записи с помощью функции «Сжатые папки», а также не поддерживается шифрование AES. [56]

Формат OpenDocument (ODF) начал использовать формат zip-архива в 2005 году. ODF — это открытый формат для офисных документов всех типов, это формат файлов по умолчанию, используемый в Collabora Online , LibreOffice и других. [57] Microsoft Office начал использовать формат zip-архива в 2006 году для своих файлов Office Open XML .docx, .xlsx, .pptx и т. д., который стал форматом файлов по умолчанию в Microsoft Office 2007 .

Наследие

Существует множество других стандартов и форматов, в названии которых используется слово «zip». Например, zip отличается от gzip , а последний определен в IETF RFC  1952. И zip, и gzip в основном используют алгоритм DEFLATE для сжатия. Аналогично, формат ZLIB (IETF RFC  1950) также использует алгоритм сжатия DEFLATE, но определяет другие заголовки для проверки ошибок и согласованности. Другие распространенные форматы с похожими названиями и программы с разными собственными форматами включают 7-Zip , bzip2 и rzip .

Обеспокоенность

Теоретический максимальный коэффициент сжатия для необработанного потока DEFLATE составляет примерно 1032 к одному, [58] но, используя формат ZIP непреднамеренными способами, можно создать ZIP-архивы со степенью сжатия миллиарды к одному. Эти zip-бомбы распаковываются до чрезвычайно больших размеров, что превышает возможности компьютера, на котором они распаковываются. [59]

Смотрите также

Рекомендации

  1. ^ abc Регистрация нового типа/подтипа контента MIME — application/zip, IANA , 20 июля 1993 г. , получено 5 января 2012 г.
  2. ^ «Филипп Кац, пионер компьютерного программного обеспечения, 37 лет» . Нью-Йорк Таймс'. 1 мая 2000 года . Проверено 14 июня 2009 г.
  3. ^ Мюррей, Мэтт; Танненбаум, Джеффри А. (15 августа 1997 г.). «Взлет и падение звезды программного обеспечения; Фил Кац любил код и спиртное». The Wall Street Journal (онлайн-изд.). Архивировано из оригинала 4 марта 2016 года.Альтернативный URL-адрес Обновлено 19 июня 2000 г.
  4. ^ ab "Библиотека документальных фильмов BBS". www.bbsdocumentary.com . Проверено 25 сентября 2020 г.
  5. ^ ab Останься, Майкл. «ZIP-атаки с уменьшенным известным открытым текстом» (PDF) . Math.ucr.edu . Архивировано из оригинала (PDF) 28 октября 2017 года . Проверено 9 сентября 2017 г.
  6. ^ Брайан Ливингстон (8 сентября 2003 г.), PKZip Must Open Up , получено 5 января 2012 г. , Формат файла ZIP бесплатно предоставляется в общественное достояние и не может быть востребован ни юридически, ни морально каким-либо физическим лицом, организацией или компанией.
  7. ^ Откуда взялись ZIP-файлы? , Infinity Design Concepts, Inc. , получено 5 января 2012 г.
  8. Пресс-релиз, 1989 г. , получено 5 января 2012 г.
  9. ^ Наш основатель — Фил Кац, PKWARE, архивировано из оригинала 1 октября 2010 г. , получено 5 января 2012 г.
  10. ^ Гарет Хортон; Роб Вейр; Алекс Браун (2 ноября 2010 г.), sc34-wg1 , получено 5 января 2012 г.
  11. ^ .ZIP Примечание по применению , получено 20 июля 2012 г.
  12. ^ Файл: APPNOTE.TXT — .ZIP Спецификация формата файла Версия: 4.5 Пересмотрено: 01.11.2001, 3 декабря 2001 г., заархивировано из оригинала 3 декабря 2001 г. , получено 21 апреля 2012 г.
  13. ^ APPNOTE.TXT — Спецификация формата файла .ZIP, версия: 5.2 — Уведомление об изменении, 16 июля 2003 г. , получено 5 января 2012 г.
  14. ^ Файл: APPNOTE.TXT — Спецификация формата файла .ZIP Версия: 5.2 — Уведомление об изменении — исправлено: 02.06.2003, 2 июля 2003 г., заархивировано из оригинала 2 июля 2003 г. , получено 21 апреля 2012 г.
  15. ^ Файл: APPNOTE — Спецификация формата файла .ZIP Версия: 6.1.0 — Уведомление об изменении — Редакция: 20 января 2004 г., 19 августа 2004 г., заархивировано из оригинала 19 августа 2004 г. , получено 21 апреля 2012 г.
  16. ^ APPNOTE.TXT — Спецификация формата файла .ZIP, версия: 6.2.0 — Уведомление об изменении, 26 апреля 2004 г. , получено 5 января 2012 г.
  17. ^ ab APPNOTE.TXT — спецификация формата файла .ZIP, версия: 6.3.0, 29 сентября 2006 г. , получено 5 января 2012 г.
  18. ^ APPNOTE.TXT — спецификация формата файла .ZIP, версия: 6.3.1, 11 апреля 2007 г. , получено 25 июня 2018 г.
  19. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.2, 28 сентября 2007 г. , получено 25 июня 2018 г.
  20. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.3, 1 сентября 2012 г. , получено 25 июня 2018 г.
  21. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.4, 1 октября 2014 г. , получено 25 июня 2018 г.
  22. ^ abc APPNOTE.TXT — спецификация формата файла .ZIP Версия: 6.3.5, 20 декабря 2018 г. , получено 3 января 2019 г.
  23. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.6, 26 апреля 2019 г. , получено 3 января 2019 г.
  24. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.7, 1 июня 2020 г. , получено 6 июня 2020 г.
  25. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.8, 15 июня 2020 г. , получено 7 июля 2020 г.
  26. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.9, 15 июля 2020 г. , получено 8 августа 2020 г.
  27. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.10, 1 ноября 2022 г. , получено 20 ноября 2022 г.
  28. ^ «Спецификация дополнительных методов сжатия» . ВинЗип . Мэнсфилд, Коннектикут : WinZip Computing, SL, 19 мая 2009 г. Проверено 24 мая 2009 г.
  29. ^ «Что такое файл Zipx?». Винзип: База знаний . Мэнсфилд, Коннектикут : WinZip Computing, SL, 13 августа 2010 г. Проверено 17 августа 2010 г.
  30. ^ «ISO/IEC JTC 1/SC 34 — Языки описания и обработки документов» (PDF) . 12 апреля 2010 г. Архивировано из оригинала (PDF) 12 мая 2014 г. . Проверено 10 мая 2014 г.
  31. ^ «Файл-контейнер документов ISO/IEC 21320-1:2015. Часть 1: Ядро» . ИТТФ. 2015.
  32. ^ Электронный журнал (1 января 2023 г.). «Формат файла .ZIP». Neperos.com .
  33. ^ abcdefgh «Файл: APPNOTE.TXT — Спецификация формата файла .ZIP: Версия: 6.3.4» (TXT) . Pkware.com . Проверено 9 сентября 2017 г.
  34. ^ «Файл: APPNOTE.TXT — спецификация формата файла .ZIP» . ПКВЭР Инк . Проверено 21 февраля 2022 г.
  35. ^ Адлер, Марк. «Как связаны zlib, gzip и zip? Что у них общего и чем они отличаются?» . Проверено 27 ноября 2018 г.
  36. ^ «Часто задаваемые вопросы о zlib» . злиб . PKWare DCL использует совершенно другой формат сжатых данных, чем PKZIP и zlib. Однако вы можете поискать возможное решение вашей проблемы в каталоге contrib/blast zlib.(вклад/вклад)
  37. Сандип (15 сентября 2021 г.). «Как защитить паролем ZIP-файл». Технические новости сегодня .
  38. ^ «Информация о шифровании AES: спецификация шифрования AE-1 и AE-2» . Winzip.com . Проверено 9 сентября 2017 г.
  39. ^ «APPNOTE — PKZIP/SecureZIP — Сайт поддержки PKWARE» . Pkware.com . Проверено 9 сентября 2017 г.
  40. ^ «Файл: APPNOTE.TXT — Спецификация формата файла .ZIP: Версия: 6.3.4» (TXT) . Pkware.cachefly.net . Проверено 9 сентября 2017 г.
  41. ^ «Изменения QuaZIP» . 22 января 2014 года . Проверено 25 января 2014 г.
  42. ^ «Усовершенствование Python: используйтеallowZip64=True по умолчанию (3.4)» . Проверено 6 мая 2014 г.
  43. Шен, Сюэмин (17 апреля 2009 г.). «ZIP64, формат > Zip-файлов 4G, теперь поддерживается» . Блог Сюэмин Шэня . Сан Микросистемс . Проверено 27 сентября 2010 г.
  44. ^ «Войти — Аккаунты Google». code.google.com . Проверено 9 сентября 2017 г.
  45. ^ «Ошибка: неверная подпись заголовка файла центрального каталога при распаковке больших файлов, заархивированных Mac OS · Проблема № 69 · thejoshwolfe/yauzl». Гитхаб .
  46. ^ «Извлеките большой zip-файл (50 ГБ) в Mac OS X» . Проверено 17 декабря 2018 г.
  47. ^ Макмиллан, Роберт (август 2008 г.). «Фотография, которая может украсть ваши учетные данные в Интернете» . Infoworld.com . Проверено 9 сентября 2017 г.
  48. ^ «ZipArchive: формат Zip64: превышение ограничений размеров файлов и количества файлов и сегментов» . Artpol-software.com . Проверено 9 сентября 2017 г.
  49. ^ Руо, Эвен (OSGeo). «Оптимизированный для поиска ZIP-профиль (SOZip)» ​​(уценка) . github.com . Проверено 11 января 2023 г.
  50. ^ «WinZip - Информация о шифровании AES» . Winzip.com . Проверено 9 сентября 2017 г.
  51. Макмиллан, Роберт (25 июля 2003 г.). «PKWare подает заявку на патент на формат файлов .zip» . InfoWorld.com . Архивировано из оригинала 10 августа 2003 года . Проверено 16 июня 2008 г.
  52. ^ «Производители программного обеспечения исправляют Zip tiff» . Новости.com . Проверено 9 сентября 2017 г.
  53. ^ Джон Лейден. «Компрометация шифрования Zip-файлов решена» . Thereregister.co.uk . Проверено 9 сентября 2017 г.
  54. ^ «Информация о шифровании AES: спецификация шифрования AE-1 и AE-2» . Winzip.com . Проверено 9 сентября 2017 г.
  55. ^ Махам Мухтар (август 2017 г.). «2 способа исправить опцию «Зашифровать содержимое для защиты данных», выделенную серым цветом в Windows 10». iTechtics . EFS доступна для всех выпусков Windows 10, кроме Windows 10 Home.
  56. ^ «Почему поддержка сжатых папок Windows (Zip-папок) застряла на рубеже веков?» 15 мая 2018 г.
  57. Холл, Джим (15 августа 2022 г.). «Как структурированы файлы ODT». opensource.com . Проверено 9 июля 2023 г.
  58. ^ «Технические подробности zlib» . Проверено 10 июля 2019 г.
  59. Смит, Эрни (10 июля 2019 г.). «Самая умная из когда-либо созданных «zip-бомб» взрывает файл размером 46 МБ до 4,5 петабайт». Материнская плата . Вице Медиа . Проверено 10 июля 2019 г.

Внешние ссылки