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

редактировать
LHA
Сообщение об использовании LHarc.jpg LHarc, работающий в MS-DOS
Расширение имени файла .lzh,.lha
Тип Интернет-носителя application / x -lzh-compressed
Код типа "LHA␣"(LHA-SPACE)
Унифицированный идентификатор типа (UTI) public.archive.lha
РазработаноХаруясу Йошизаки (Йоши)
Тип форматаСжатие данных
Веб-сайтht tps: //github.com/jca02266/lha

LHA или LZH - это бесплатная утилита сжатия и соответствующий формат файла. Он был создан в 1988 году Харуясу Йошизаки (吉 崎 栄 泰, Йошизаки Харуясу) и первоначально назывался LHarc . Полная версия LHarc, предварительно названная LHx, в конечном итоге была выпущена как LH. Затем он был переименован в LHA, чтобы избежать конфликта с новой на тот момент командой MS-DOS 5.0 LH("высокая загрузка"). Согласно ранним документам, LHA произносится как La.

Хотя LHA больше не используется на западе, он остается популярным в Японии. Он использовался id Software для сжатия установочных файлов своих более ранних игр, включая Doom и Quake. LHA был перенесен во многие операционные системы и до сих пор является основным форматом архивирования, используемым на компьютере Amiga, хотя в середине 1990-х он конкурировал с LZX. Это произошло из-за Aminet, крупнейшего в мире архива программного обеспечения и файлов, связанных с Amiga, стандартизованного на реализации Стефаном Бобергом LHA для Amiga.

Microsoft выпустила надстройку Microsoft Compressed (LZH) Folder Add-on, которая была разработана для японской версии Windows XP. Японская версия Windows 7 поставляется со встроенной надстройкой папки LZH. Пользователи неяпонских версий Windows 7 Enterprise и Ultimate также могут установить надстройку папки LZH, установив дополнительный языковой пакет для японского языка из Центра обновления Windows.

Содержание

  • 1 Методы сжатия
    • 1.1 Канонический LZH
    • 1.2 Расширения Джо Джареда
    • 1.3 Расширения UNLHA32
    • 1.4 Расширения PMarc
    • 1.5 Расширения LArc
  • 2 проблемы
    • 2.1 LHICE / ICE
    • 2.2 Ошибка y2k11
    • 2.3 Размер заголовка
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки

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

В архиве LZH метод сжатия сохраняется в виде пятибайтовой текстовой строки, например -lz1-. Это с третьего по седьмой байты файла.

Canonical LZH

LHarc сжимает файлы, используя алгоритм из более раннего продукта LZHUF Йошизаки, который был модифицирован из LZARI, разработанного Харухико Окумура (奥 村 晴 彦, Окумура Харухико), но использует кодирование Хаффмана вместо арифметического кодирования. LZARI использует Лемпеля – Зива – Сторера – Шиманского с арифметическим кодированием.

lh0
К исходным данным не применяется метод сжатия.
lh1
Этот метод представлен в LHarc версии 1.
Он поддерживает 4 KiB скользящее окно, с поддержкой до 60 байтов соответствующей длины. Используется динамическое кодирование Хаффмана.
lh2
вариант lh1. Этот метод поддерживает скользящее окно размером 8 КиБ с поддержкой максимальной длины 256 байт. Используется динамическое кодирование Хаффмана.
lh3
вариант lh2 со статическим кодированием Хаффмана.
lh4, lh5, lh6, lh7
Методы 4, 5, 6, 7 поддерживают 4, 8, 32, 64 KiB скользящее окно соответственно, с поддержкой максимальной длины 256 байтов. Используется статическая кодировка Хаффмана. lh5 впервые представлен в LHarc 2, затем lh6 в LHA 2.66 (MSDOS), lh7 в LHA 2.67 beta (MSDOS). Сам LHA никогда не сжимается в lh4.
lhd
Технически это не метод сжатия, но он используется в архиве.LZH, чтобы указать, что сжатый объект является пустым каталогом.

Расширения Джо Джареда

Джо Джаред расширил LZSS для использования словарей большего размера.

lh8, lh9, lha, lhb, lhc, lhe
Размеры словаря (скользящего окна) составляют 64, 128, 256, 512, 1024, 2048 КБ соответственно.

Джаред перенес LZH на Atari. То, что lh8 - то же самое, что lh7, было упущением. Файлы, использующие методы с более крупными номерами, также могут не существовать, поскольку Джаред считает их только запланированными функциями.

Расширения UNLHA32

UNLHA32.DLL использует свой собственный метод для целей тестирования.

lhx
Он использует словарь 128–256 КиБ.

Расширения PMarc

Эти методы сжатия созданы PMarc, архиватором CP / M, созданным Миё. Архив обычно имеет расширение.PMA.

pc1
Сжатый исполняемый архив PopCom. Детали неизвестны.
pm0
К исходным данным не применяется метод сжатия.
pm1
Скользящее окно размером 8 КБ, статический Хаффман. Редко генерируется, декомпрессор подвергается обратному проектированию.
pm2
вариант lh5, скользящее окно 4K.
pms
Используется для обозначения самораспаковывающегося архива PMarc. Следует пропустить, чтобы раскрыть реальный формат.

Расширения LArc

LArc использует тот же формат файла, что и.LZH, но был написан Кадзухико Мики, Харухико Окумура и Кеном Масуямой с именем расширения ".LZS". Программа вроде вышла до ЛЖ. Он использует двоичное дерево поиска в сопоставлении LZ.

lzs
Он поддерживает 2 KiB скользящее окно с поддержкой максимальной длины сопоставления 17 байтов.
lz2
Аналогичен lzs, за исключением того, что размер словаря и длина соответствия могут быть изменены.
lz3
Неизвестно.
lz4
К исходным данным не применяется метод сжатия.
lz5
Он поддерживает 4 КиБ скользящее окно с поддержкой максимальной длины 17 байт.
lz7
lz8
Неизвестно.

Обычные реализации, похоже, поддерживают только lzs, lz5, а также lz4 только для хранения.

Проблемы

LHICE / ICE

Существуют копии LHICE, помеченные как версия 1.14. По словам Окумуры, LHICE написан не Йоши.

ошибка y2k11

Из-за ошибки временные метки DOS из заголовков уровней 0 и 1 после 2011 года будут установлены на 1980, что означает, что некоторые утилиты нужно пропатчить. Это вызвано ошибкой, которая интерпретирует битовое поле 8-битного номера года без знака как 5-битное число. Вместо этого максимальный год должен быть 2107.

В более новых заголовках уровня 2 и 3 вместо этого используется 32-битное время Unix. Он страдает от проблемы года 2038.

Размер заголовка

По словам Микко, автора популярной библиотеки LHA UNLHA32.DLL, многие реализации LHA не проверяют длину заголовков файлов LHA, когда читаем архив. В этом сценарии могут возникнуть две проблемы: переполнение буфера может произойти для наивных реализаций, предполагающих максимальный размер 4 КБ из исходной спецификации; Антивирусное программное обеспечение может пропускать файлы с такими большими заголовками и не выполнять поиск вирусов. Аналогичная проблема существует с ARJ. Micco сообщила об этой проблеме японским властям, но они не считают ее действительной уязвимостью.

Micco зашла так далеко, что завершила разработку UNLHA32 и посоветовала людям отказаться от этого формата. Тем не менее, они вернулись в 2017 году, чтобы исправить проблему с перехватом DLL.

См. Также

  • Портал Amiga

Ссылки

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

Последняя правка сделана 2021-05-26 08:43:01
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте