Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

Методы сжатия [ править ]

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

Канонический ЛЖ [ править ]

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

lh0
К исходным данным не применяется метод сжатия.
lh1
Этот метод представлен в LHarc версии 1.
Он поддерживает скользящее окно размером 4  КиБ с поддержкой максимальной длины 60 байтов. Используется динамическое кодирование Хаффмана.
lh2
вариант lh1. Этот метод поддерживает скользящее окно размером 8 КиБ с поддержкой максимальной длины 256 байт. Используется динамическое кодирование Хаффмана.
lh3
lh2 вариант со статическим Хаффманом.
lh4, lh5, lh6, lh7
Методы 4, 5, 6, 7 поддерживают скользящее окно 4, 8, 32, 64 КиБ соответственно с поддержкой максимальной длины совпадения 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, было ошибкой. Файлы, использующие методы с более крупными номерами, также могут не существовать, поскольку Джаред считает их только запланированными функциями. [5]

Расширения UNLHA32 [ править ]

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

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

Расширения PMarc [ править ]

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

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

Расширения LArc [ править ]

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

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

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

Проблемы [ править ]

LHICE / ICE [ править ]

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

Ошибка 2000-го года [ править ]

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

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

Размер заголовка [ править ]

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

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

См. Также [ править ]

  • Список форматов архивов
  • LZX

Ссылки [ править ]

  1. ^ "Мир LHA доктора Харуясу Йошизаки" . 1999-04-28. Архивировано из оригинала на 1999-04-28 . Проверено 12 января 20 .
  2. ^ 吉澤, 亨 史 (07.06.2010). «「 LZH 」の 開 発 中止 - 企業 な ど は 使用 し な い よ う 作者 が 注意 喚起» . CNET Japan (на японском языке) . Проверено 12 января 20 .
  3. ^ «Надстройка для сжатых папок Microsoft (LZH)» . Архивировано из оригинала на 2007-08-19 . Проверено 5 октября 2007 .
  4. ^ «Windows 7 で (LZH の 圧 縮 Microsoft) フ ォ ル ダ ー の ア ド イ ン ト ー ル で き せ ん» . Support.microsoft.com . Проверено 17 июля 2016 .
  5. Джаред (1998). lzhformat.html
  6. ^ "fragglet / lhasa" . GitHub .
  7. ^ "圧 縮 デ ー タ の 拡 張 子" .LZS "| 圧 縮 ・ 解凍 ソ フ ト の ガ イ ド" . Lzh-zip.com . Проверено 17 июля 2016 .
  8. ^ «Алгоритмы сжатия данных LARC и LHarc» . GameDev.net .
  9. ^ «История сжатия данных в Японии» . Oku.edu.mie-u.ac.jp . Проверено 12 июля +2016 .
  10. ^ "Аминет - util / arc / lha138pch.lha" . Aminet.net . Проверено 12 июля +2016 .
  11. ^ "Аминет - util / arc / lha_68k.lha" . Aminet.net . Проверено 12 июля +2016 .
  12. ^ Примечания к формату LHA Nifty, Другие форматы данных.
  13. ^ "LZH 書庫 の ヘ ッ ダ ー 処理 に お け る 脆弱 性 に つ い て (2010 г.)" . micco.mars.jp .

Внешние ссылки [ править ]

  • История сжатия данных в Японии
  • LHA Notes Документ о LHA.
  • jLHA - библиотека LHA для Java
    • интерфейс jLHA
  • LHA для Unix (на японском языке)
  • Взлом сжатия данных, урок 11 LZH, LZARI и LZB
  • Файл магии NSRL содержит информацию PMarc
  • Explzh Текущий архиватор Windows 7 для LZH / LHA. (Помимо LZH он поддерживает RAR, Zip, 7Z, ACE, Tar, Cab и другие)
  • lhasa - кроссплатформенный декомпрессор LHA с открытым исходным кодом (+ расширения UNLHA32, PMArc, LArc)
  • lzh format документ, описывающий формат заголовка LZH.