LHA o LZH es una utilidad de compresión gratuita y un formato de archivo asociado. Fue creado en 1988 por un doctor Haruyasu Yoshizaki (吉 崎 栄 泰, Yoshizaki Haruyasu ) , y originalmente llamado LHarc . Una reescritura completa de LHarc, tentativamente llamada LHx , finalmente se lanzó como LH . Luego se le cambió el nombre a LHA para evitar conflictos con el entonces nuevo comando LH ("carga alta") de MS-DOS 5.0 . El LHA original y su puerto de Windows , LHA32, ya no están en desarrollo porque Yoshizaki está ocupado en el trabajo. [1]
Otros nombres | LHarc, LHx, LH |
---|---|
Autor (es) original (es) | Haruyasu Yoshizaki |
Lanzamiento estable | 2.13 / 20 de julio de 1991 |
Versión de vista previa | 2.55b / 24 de noviembre de 1992 |
Escrito en | Lenguaje ensamblador , C |
Sistema operativo | DOS |
Sucesor | LHA32 |
Licencia | Licencia permisiva |
Sitio web | https://www.vector.co.jp/vpack/browse/person/an000224.html |
Extensión de nombre de archivo | .lzh, .lha |
---|---|
Tipo de medio de Internet | aplicación / x-lzh-compressed |
Código de tipo | " LHA␣ " (LHA-ESPACIO) |
Identificador de tipo uniforme (UTI) | public.archive.lha |
Desarrollado por | Haruyasu Yoshizaki ( Yoshi ) |
Tipo de formato | Compresión de datos |
Extendido desde | LArc |
Aunque ya no se usa mucho en el oeste, LHA siguió siendo popular en Japón hasta la década de 2000. [2] Fue utilizado por id Software para comprimir archivos de instalación para sus juegos anteriores, incluidos Doom y Quake . Debido a que algunas versiones de LHA se han distribuido con código fuente bajo la licencia permisiva , LHA se ha adaptado a muchos sistemas operativos y sigue siendo el principal formato de archivo utilizado en la computadora Amiga , aunque compitió con LZX a mediados de la década de 1990. Esto se debió a que Aminet , el archivo más grande del mundo de software y archivos relacionados con Amiga, estandarizó la implementación de Stefan Boberg de LHA para Amiga.
Microsoft lanzó el complemento de carpeta comprimida de Microsoft (LZH), que fue diseñado para la versión japonesa de Windows XP . [3] La versión japonesa de Windows 7 se envía con el complemento de carpeta LZH incorporado. [4] Los usuarios de versiones no japonesas de Windows 7 Enterprise y Ultimate también pueden instalar el complemento de carpeta LZH instalando el paquete de idioma japonés opcional de Windows Update .
Métodos de compresión
En un archivo LZH, el método de compresión se almacena como una cadena de texto de cinco bytes, p. Ej. -lz1- . Estos son del tercero al séptimo bytes del archivo.
Canonical LZH
LHarc comprime archivos usando un algoritmo del producto LZHUF anterior de Yoshizaki, que fue modificado a partir de LZARI desarrollado por Haruhiko Okumura (奥 村 晴 彦, Okumura Haruhiko ) , pero usa codificación Huffman en lugar de codificación aritmética . LZARI usa Lempel – Ziv – Storer – Szymanski con codificación aritmética.
- lh0
- No se aplica ningún método de compresión a los datos de origen.
- lh1
- Este método se introduce en la versión 1 de LHarc.
- Admite una ventana deslizante de 4 KiB , con un máximo de 60 bytes de longitud coincidente. Se utiliza la codificación dinámica de Huffman.
- lh2
- variante lh1. Este método admite una ventana deslizante de 8 KiB, con un máximo de 256 bytes de longitud coincidente. Se utiliza la codificación dinámica de Huffman.
- lh3
- Variante lh2 con Static Huffman.
- lh4, lh5, lh6, lh7
- Los métodos 4, 5, 6, 7 admiten una ventana deslizante de 4, 8, 32, 64 KiB respectivamente, con un máximo de 256 bytes de longitud coincidente. Se utiliza codificación estática de Huffman. lh5 se introduce por primera vez en LHarc 2, seguido de lh6 en LHA 2.66 (MSDOS), lh7 en LHA 2.67 beta (MSDOS). El propio LHA nunca se comprime en lh4.
- lhd
- Técnicamente, no es un método de compresión, pero se usa en el archivo .LZH para indicar que el objeto comprimido es un directorio vacío.
Extensiones de Joe Jared
Joe Jared extendió LZSS para usar diccionarios más grandes.
- lh8, lh9, lha, lhb, lhc, lhe
- Los tamaños de diccionario (ventana deslizante) son 64, 128, 256, 512, 1024, 2048 KiB respectivamente.
Jared portó LZH a Atari. El hecho de que lh8 sea lo mismo que lh7 fue un descuido. Es posible que los archivos que utilizan métodos numerados más grandes no existan, ya que Jared solo los considera características planificadas. [5]
Extensiones UNLHA32
UNLHA32.DLL utiliza su propio método para realizar pruebas.
- lhx
- Utiliza un diccionario de 128-256 KiB.
Extensiones PMarc
Estos métodos de compresión son creados por PMarc, un archivador CP / M creado por Miyo. El archivo suele tener una extensión .PMA.
- pc1
- Archivo ejecutable comprimido PopCom. Detalles desconocidos.
- pm0
- No se aplica ningún método de compresión a los datos de origen.
- pm1
- Ventana corredera de 8 KB, huffman estático. El descompresor, que rara vez se genera, tiene ingeniería inversa. [6]
- pm2
- variante lh5, ventana deslizante 4K.
- pms
- Se utiliza para indicar el archivo autoextraíble de PMarc. Debe omitirse para revelar el formato real.
Extensiones de LArc
LArc usa el mismo formato de archivo que .LZH, pero fue escrito por Kazuhiko Miki, Haruhiko Okumura y Ken Masuyama, con el nombre de extensión ".LZS". [7] El programa parece haber llegado antes que LZH. Utiliza un árbol de búsqueda binario en la coincidencia LZ. [8]
- lzs
- Admite una ventana deslizante de 2 KiB , con un máximo de 17 bytes de longitud coincidente.
- lz2
- Es similar a lzs, excepto que se puede cambiar el tamaño del diccionario y la longitud de la coincidencia.
- lz3
- Desconocido.
- lz4
- No se aplica ningún método de compresión a los datos de origen.
- lz5
- Admite una ventana deslizante de 4 KiB , con un máximo de 17 bytes de longitud coincidente.
- lz7
- lz8
- Desconocido.
Las implementaciones comunes parecen admitir solo lzs, lz5, además de lz4 de solo almacenamiento.
Asuntos
LHICE / HIELO
Hay copias de LHICE marcadas como versión 1.14. Según Okumura, LHICE no está escrito por Yoshi. [9]
Error Y2K11
Debido a un error, las marcas de tiempo de DOS de los encabezados de Nivel 0 y 1 después del año 2011 se establecerán en 1980, lo que significa que algunas utilidades deben ser parcheadas. Esto se debe a un error que interpreta el campo de bits del número de año de 8 bits sin firmar como un número de 5 bits. En su lugar, el año máximo debería ser 2107. [10] [11]
En su lugar, los encabezados de nivel 2 y 3 más nuevos usan un tiempo Unix de 32 bits . Sufre el problema del año 2038 . [12]
Tamaño del encabezado
Según Micco, autor de una popular biblioteca LHA UNLHA32.DLL, muchas implementaciones de LHA no comprueban la longitud de los encabezados de los archivos LHA al leer el archivo. Pueden surgir dos problemas de este escenario: puede ocurrir un desbordamiento del búfer para implementaciones ingenuas asumiendo un tamaño máximo de 4 KB de la especificación original; El software antivirus puede omitir archivos con encabezados tan grandes y no escanear en busca de virus. Existe un problema similar con ARJ . Micco informó de este problema a las autoridades japonesas, pero no lo consideran una vulnerabilidad válida. [13]
Micco llegó tan lejos para concluir el desarrollo de UNLHA32 y aconsejar a la gente que abandonara el formato. Sin embargo, regresaron en 2017 para solucionar un problema de secuestro de DLL .
Ver también
- Lista de formatos de archivo
- LZX
Referencias
- ^ "LHA World por Dr.Haruyasu Yoshizaki" . 1999-04-28. Archivado desde el original el 28 de abril de 1999 . Consultado el 12 de enero de 2021 .
- ^ 吉澤, 亨 史 (7 de junio de 2010). "「 LZH 」の 開 発 中止 - 企業 な ど は 使用 し な い よ う 作者 が 注意 喚起" . CNET Japan (en japonés) . Consultado el 12 de enero de 2021 .
- ^ "Complemento de carpeta comprimida de Microsoft (LZH)" . Archivado desde el original el 19 de agosto de 2007 . Consultado el 5 de octubre de 2007 .
- ^ "Windows 7 で (LZH の 圧 縮 に Microsoft) フ ォ ル ダ ー の ア ド イ ン を イ ン ス ト ー ル で き ま せ ん" . Support.microsoft.com . Consultado el 17 de julio de 2016 .
- ^ Jared (1998). lzhformat.html
- ^ "fragglet / lhasa" . GitHub .
- ^ "圧 縮 デ ー タ の 拡 張 子" .LZS "| 圧 縮 ・ 解凍 ソ フ ト の ガ イ ド" . Lzh-zip.com . Consultado el 17 de julio de 2016 .
- ^ "Algoritmos de compresión de datos de LARC y LHarc" . GameDev.net .
- ^ "Historia de la compresión de datos en Japón" . Oku.edu.mie-u.ac.jp . Consultado el 12 de julio de 2016 .
- ^ "Aminet - util / arc / lha138pch.lha" . Aminet.net . Consultado el 12 de julio de 2016 .
- ^ "Aminet - util / arc / lha_68k.lha" . Aminet.net . Consultado el 12 de julio de 2016 .
- ^ Notas de formato LHA de Nifty, otros formatos de datos.
- ^ "LZH 書庫 の ヘ ッ ダ ー 処理 に お け る 脆弱 性 に つ い て (2010 年 版)" . micco.mars.jp .
enlaces externos
- Una historia de compresión de datos en Japón
- Documento de notas de LHA sobre LHA.
- jLHA - biblioteca LHA para Java
- JLHA front-end
- LHA para Unix (en japonés)
- Hackeo de compresión de datos Lección 11 LZH, LZARI y LZB
- El archivo mágico de NSRL contiene información de PMarc
- Explzh Archivador actual de Windows 7 para LZH / LHA. (Además de LZH, admite RAR, Zip, 7Z, ACE, Tar, Cab y otros)
- lhasa un descompresor LHA multiplataforma de código abierto (+ extensiones UNLHA32, PMArc, LArc)
- Documento en formato lzh que describe el formato de encabezado LZH.