LHA (формат файла) - LHA (file format)
Эта статья включает в себя список общих Рекомендации, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Июль 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
LHarc работает в MS-DOS | |
Расширение имени файла | .lzh, .lha |
---|---|
Тип интернет-СМИ | приложение / x-lzh-compressed |
Типовой код | "LHA␣ "(L-H-A-SPACE) |
Единый идентификатор типа (UTI) | public.archive.lha |
Разработан | Харуясу Йошизаки (Йоши) |
Тип формата | Сжатие данных |
Интернет сайт | https://github.com/jca02266/lha |
LHA или же LZH это бесплатное ПО сжатие утилита и связанный формат файла. Он был создан в 1988 году Харуясу Йошизаки. (吉 崎 栄 泰, Йошизаки Харуясу), первоначально названный LHarc. Полная версия LHarc, предварительно названная LHx, в конечном итоге был выпущен как LH. Затем он был переименован в LHA чтобы избежать противоречий с тогда еще новыми MS-DOS 5.0 LH ("высокая загрузка") команда. Согласно ранним документам, LHA произносится как Ла.
Хотя LHA больше не используется на западе, он остается популярным в Япония. Он использовался id Программное обеспечение для сжатия установочных файлов своих более ранних игр, в том числе Рок и Землетрясение. LHA был перенесен на многие операционные системы и до сих пор является основным форматом архивирования, используемым в Amiga компьютер, хотя и конкурировал с LZX в середине 1990-х гг. Это произошло из-за Аминет, крупнейший в мире архив программного обеспечения и файлов, связанных с Amiga, стандартизированный для реализации Стефаном Бобергом LHA для Amiga.
Microsoft выпустила надстройку Microsoft Compressed (LZH) Folder Add-on, которая была разработана для японской версии Windows XP.[1] Японская версия Windows 7 поставляется со встроенной надстройкой папки LZH.[2] Пользователи неяпонских версий Windows 7 Enterprise и Ultimate также могут установить надстройку папки LZH, установив дополнительный пакет японского языка из Центр обновления Windows.
Методы сжатия
В архиве LZH метод сжатия хранится в виде пятибайтовой текстовой строки, например -lz1-. Это с третьего по седьмой байты файла.
Канонический ЛЖ
LHarc сжимает файлы, используя алгоритм из более раннего продукта LZHUF Йошизаки, который был модифицирован из LZARI, разработанного Харухико Окумура (奥 村 晴 彦, Окумура Харухико), но использует Кодирование Хаффмана вместо арифметическое кодирование. LZARI использует Лемпель – Зив – Сторер – Шиманский с арифметическим кодированием.
- lh0
- К исходным данным не применяется метод сжатия.
- lh1
- Этот метод представлен в LHarc версии 1.
- Поддерживает 4KiB раздвижное окно, с поддержкой максимальной длины совпадения 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, было ошибкой. Файлы, использующие методы с более крупными номерами, также могут не существовать, поскольку Джаред считает их только запланированными функциями.[3]
Расширения UNLHA32
UNLHA32.DLL использует свой собственный метод для тестирования.
- lhx
- Он использует словарь 128–256 КиБ.
Расширения PMarc
Эти методы сжатия созданы PMarc, CP / M архиватор, созданный Miyo. Архив обычно имеет расширение .PMA.
- pc1
- Сжатый исполняемый архив PopCom. Подробности неизвестны.
- pm0
- К исходным данным не применяется метод сжатия.
- pm1
- Скользящее окно 8 КБ, статический хаффман. Редко генерируется, декомпрессор перепроектирован.[4]
- pm2
- Вариант lh5, раздвижное окно 4K.
- pms
- Используется для обозначения самораспаковывающегося архива PMarc. Следует пропустить, чтобы раскрыть реальный формат.
Расширения LArc
LArc использует тот же формат файла, что и .LZH, но был написан Кадзухико Мики, Харухико Окумура и Кеном Масуямой с расширением ".LZS".[5] Программа вроде вышла до ЛЖ. Он использует двоичное дерево поиска в сопоставлении LZ.[6]
- lzs
- Он поддерживает 2 КБ раздвижное окно, с поддержкой максимальной длины совпадения 17 байтов.
- lz2
- Он похож на lzs, за исключением того, что размер словаря и длину соответствия можно изменить.
- lz3
- Неизвестный.
- lz4
- К исходным данным не применяется метод сжатия.
- lz5
- Он поддерживает 4 КБ раздвижное окно, с поддержкой максимальной длины совпадения 17 байтов.
- lz7
- lz8
- Неизвестный.
Общие реализации поддерживают только lzs, lz5, а также lz4 только для хранения.
вопросы
LHICE / ЛЕД
Существуют копии LHICE, помеченные как версия 1.14. По словам Окумуры, LHICE написан не Йоши.[7]
y2k11 ошибка
Из-за ошибки временные метки DOS из заголовков уровней 0 и 1 после 2011 года будут установлены на 1980, что означает необходимость исправления некоторых утилит. Это вызвано ошибкой, которая интерпретирует битовое поле беззнакового 8-битного номера года как 5-битное число. Максимальный год должен быть 2107.[8][9]
В более новых заголовках уровня 2 и 3 используется 32-битный Время Unix вместо. Он страдает от Проблема 2038 года.[10]
Размер заголовка
По словам Микко, автора популярной библиотеки LHA UNLHA32.DLL, многие реализации LHA не проверяют длину заголовков файлов LHA при чтении архива. В этом сценарии могут возникнуть две проблемы: переполнение буфера может произойти для наивных реализаций, предполагающих максимальный размер 4 КБ из исходной спецификации; Антивирусное программное обеспечение может пропускать файлы с такими большими заголовками и не выполнять поиск вирусов. Аналогичная проблема существует с ARJ. Micco сообщила об этой проблеме японским властям, но они не считают ее действительной уязвимостью.[11]
Micco зашла так далеко, что завершила разработку UNLHA32 и посоветовала людям отказаться от этого формата. Тем не менее, они вернулись в 2017 году, чтобы исправить Перехват DLL проблема.
Смотрите также
Рекомендации
- ^ «Надстройка для сжатых папок Microsoft (LZH)». Архивировано из оригинал на 2007-08-19. Получено 2007-10-05.
- ^ «Windows 7 で (LZH の 圧 縮 に Microsoft) フ ォ ル ダ ー の ア ド イ ン ン ス ト ー き せ ん». Support.microsoft.com. Получено 2016-07-17.
- ^ Джаред (1998). lzhformat.html
- ^ "fragglet / lhasa". GitHub.
- ^ "縮 デ ー タ の 拡 張 子" .LZS "| 圧 縮 ・ 解凍 ソ フ ト ガ イ". Lzh-zip.com. Получено 2016-07-17.
- ^ «Алгоритмы сжатия данных LARC и LHarc». GameDev.net.
- ^ «История сжатия данных в Японии». Oku.edu.mie-u.ac.jp. Получено 12 июля 2016.
- ^ "Аминет - util / arc / lha138pch.lha". Aminet.net. Получено 12 июля 2016.
- ^ "Аминет - util / arc / lha_68k.lha". Aminet.net. Получено 12 июля 2016.
- ^ Примечания к формату LHA Nifty, другие форматы данных.
- ^ "LZH 書庫 の ヘ ッ ダ ー 処理 に お け る 脆弱 性 に つ い て (версия 2010 г.)". micco.mars.jp.
внешняя ссылка
- История сжатия данных в Японии
- Примечания LHA Документ о LHA.
- jLHA - Библиотека LHA для Java
- LHA для Unix (на японском языке)
- Взлом сжатия данных, урок 11 LZH, LZARI и LZB
- Волшебный файл NSRL содержит информацию PMarc
- Explzh Текущий архиватор Windows 7 для LZH / LHA. (Помимо LZH он поддерживает RAR, Zip, 7Z, ACE, Tar, Cab и другие)
- Лхаса кроссплатформенность, Открытый исходный код Декомпрессор LHA (+ расширения UNLHA32, PMArc, LArc)
- формат lzh документ, описывающий формат заголовка LZH.