stringtranslate.com

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

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

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

Канонический LZH

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

лх0
К исходным данным не применяется никакой метод сжатия.
лх1
Этот метод представлен в LHarc версии 1.
Поддерживает  скользящее окно размером 4 КиБ с поддержкой максимальной длины соответствия 60 байт. Используется динамическое кодирование Хаффмана.
лх2
Вариант lh1. Этот метод поддерживает скользящее окно размером 8 КиБ с поддержкой максимальной длины соответствия 256 байт. Используется динамическое кодирование Хаффмана.
лх3
Вариант lh2 со статическим Хаффманом.
лх4, лх5, лх6, лх7
Методы 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.
левое руло
Технически это не метод сжатия, но он используется в архиве .LZH для указания того, что сжатый объект представляет собой пустой каталог.

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

Джо Джаред расширил LZSS, чтобы использовать более крупные словари.

лх8, лх9, лха, лхб, лхс, лхе
Размеры словарей (скользящего окна) составляют 64, 128, 256, 512, 1024, 2048 КиБ соответственно.

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

Расширения UNLHA32

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

лхх
Использует словарь объёмом 128–256 КиБ.

Расширения PMarc

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

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

Расширения LArc

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

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

Распространенные реализации, по-видимому, поддерживают только lzs, lz5, а также lz4, предназначенный только для хранения.

Проблемы

LHICE/ICE

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

ошибка Y2K11

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

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

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

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

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

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

Ссылки

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

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