stringtranslate.com

LHA (formato de archivo)

LHA o LZH es una utilidad de compresión de software libre y un formato de archivo asociado. Fue creada en 1988 por Haruyasu Yoshizaki (吉崎栄泰, Yoshizaki Haruyasu ) , un médico, y originalmente se llamó LHarc . Una reescritura completa de LHarc, llamada provisionalmente LHx , finalmente se lanzó como LH . Luego se renombró como LHA ​​para evitar conflictos con el entonces nuevo comando MS-DOS 5.0 LH ("load high"). El LHA original y su puerto para Windows , LHA32, ya no están en desarrollo porque Yoshizaki está ocupado en el trabajo. [1]

Aunque ya no se usa mucho en Occidente, 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 LHA de Stefan Boberg para Amiga.

Microsoft lanzó el complemento Microsoft Compressed Folder (LZH), que fue diseñado para la versión japonesa de Windows XP . [3] La versión japonesa de Windows 7 viene 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 desde 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, por ejemplo, -lz1- . Estos son los bytes tercero a séptimo del archivo.

LZH canónico

LHarc comprime archivos usando un algoritmo del producto LZHUF anterior de Yoshizaki, que fue modificado de LZARI desarrollado por Haruhiko Okumura (奥村晴彦, Okumura Haruhiko ) , pero usa codificación Huffman en lugar de codificación aritmética . LZARI utiliza Lempel – Ziv – Storer – Szymanski con codificación aritmética.

El h0
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 y admite una longitud máxima de 60 bytes coincidentes. Se utiliza codificación Huffman dinámica.
LH2
Variante lh1. Este método admite una ventana deslizante de 8 KiB y admite un máximo de 256 bytes de longitud coincidente. Se utiliza la codificación Huffman dinámica.
lh3
Variante lh2 con Huffman estático.
lh4, lh5, lh6, lh7
Los métodos 4, 5, 6 y 7 admiten ventanas deslizantes de 4, 8, 32 y 64 KiB respectivamente, con un máximo de 256 bytes de longitud coincidente. Se utiliza la codificación Huffman estática. lh5 se introdujo por primera vez en LHarc 2, seguido de lh6 en LHA 2.66 (MSDOS) y lh7 en LHA 2.67 beta (MSDOS). LHA nunca se comprime en lh4.
volante a la izquierda
Técnicamente no es un método de compresión, pero se utiliza en el archivo .LZH para indicar que el objeto comprimido es un directorio vacío.

Extensiones de Joe Jared

Joe Jared amplió LZSS para utilizar diccionarios más grandes.

lh8, lh9, lha, lhb, lhc, lhe
Los tamaños de diccionario (ventana deslizante) son 64, 128, 256, 512, 1024 y 2048 KiB respectivamente.

Jared adaptó LZH a Atari. El hecho de que lh8 sea igual que lh7 fue un descuido. Los archivos que utilizan métodos con números más grandes bien podrían no existir, ya que Jared solo los considera funciones planificadas. [5]

Extensiones UNLHA32

UNLHA32.DLL utiliza su propio método para fines de prueba.

LHX
Utiliza un diccionario de 128–256 KiB.

Extensiones de PMarc

Estos métodos de compresión son creados por PMarc, un archivador CP/M creado por Miyo. El archivo normalmente tiene una extensión .PMA.

pc1
Archivo ejecutable comprimido de PopCom. Detalles desconocidos.
pm0
No se aplica ningún método de compresión a los datos de origen.
pm1
Ventana deslizante de 8 KB, Huffman estático. Se genera en raras ocasiones, el descompresor se somete a ingeniería inversa. [6]
pm2
Variante lh5, ventana corrediza 4K.
mensaje privado
Se utiliza para indicar un archivo autoextraíble de PMarc. Se debe omitir para revelar el formato real.

Extensiones de LArc

LArc utiliza 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 surgido antes que LZH. Utiliza un árbol de búsqueda binaria en la búsqueda de coincidencias LZ. [8]

Los Zs
Admite una ventana deslizante de 2 KiB , con soporte para 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 soporte para un máximo de 17 bytes de longitud coincidente.
lz7
lz8
Desconocido.

Las implementaciones comunes parecen admitir únicamente lzs, lz5 y el lz4 de solo almacenamiento.

Asuntos

LHICE/HIELO

Existen copias de LHICE marcadas como versión 1.14. Según Okumura, LHICE no fue escrito por Yoshizaki. [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 de número de año de 7 bits sin signo como un número de 5 bits. El año máximo debería ser 2107 en su lugar. [10] [11]

Los encabezados de nivel 2 y 3 más nuevos utilizan un tiempo Unix de 32 bits , pero sufren el problema del año 2038. [ 12]

Tamaño del encabezado

Según Micco, el autor de la popular biblioteca LHA UNLHA32.DLL, muchas implementaciones LHA no comprueban la longitud de los encabezados de los archivos LHA al leer el archivo. De este escenario podrían surgir dos problemas: puede producirse un desbordamiento del búfer en implementaciones ingenuas que supongan un tamaño máximo de 4 KB a partir de la especificación original; el software antivirus puede pasar por alto 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ó al extremo de concluir el desarrollo de UNLHA32 y aconsejar a la gente que abandonara el formato. Sin embargo, volvieron en 2017 para solucionar un problema de secuestro de DLL .

Véase también

Referencias

  1. ^ "LHA World por el Dr. Haruyasu Yoshizaki". 28 de abril de 1999. Archivado desde el original el 28 de abril de 1999. Consultado el 12 de enero de 2021 .
  2. ^ 吉澤, 亨史 (7 de junio de 2010). "「LZH」の開発中止--企業などは使用しないよう作者が注意喚起". CNET Japón (en japonés) . Consultado el 12 de enero de 2021 .
  3. ^ "Complemento de carpeta comprimida (LZH) de Microsoft". Microsoft . Archivado desde el original el 19 de agosto de 2007 . Consultado el 5 de octubre de 2007 .
  4. ^ "Windows 7 で (LZH の圧縮に Microsoft) フォルダーのアドインをインストールできません". Soporte.microsoft.com . Consultado el 17 de julio de 2016 .
  5. ^ Jared (1998).lzhformat.html
  6. ^ "fragglet/lhasa". GitHub . 7 de julio de 2022.
  7. ^ "圧縮データの拡張子 ".LZS" | 圧縮・解凍ソフトのガイド". Lzh-zip.com . Consultado el 17 de julio de 2016 .
  8. ^ "Algoritmos de compresión de datos de LARC y LHarc". GameDev.net .
  9. ^ "Historia de la compresión de datos en Japón". Oku.edu.mie-u.ac.jp . Consultado el 12 de julio de 2016 .
  10. ^ "Aminet - util/arc/lha138pch.lha". Aminet.net . Consultado el 12 de julio de 2016 .
  11. ^ "Aminet - util/arc/lha_68k.lha". Aminet.net . Consultado el 12 de julio de 2016 .
  12. ^ Notas sobre el formato LHA ​​de Nifty, Otros formatos de datos.
  13. ^ "LZH書庫 の ヘ ッ ダ ー 処 理 に け る 脆 弱 性 に つ い て (2010 年 版)". micco.mars.jp .

Enlaces externos