LHA (file format)

LHA atau LZH adalah utilitas kompresi freeware dan format file terkait. Itu dibuat pada tahun 1988 oleh Haruyasu Yoshizaki (Yoshizaki Haruyasu), seorang dokter dan awalnya bernama LHarc. Penulisan ulang lengkap LHarc, untuk sementara bernama LHx, akhirnya dirilis sebagai LH. Itu kemudian diubah namanya menjadi LHA untuk menghindari konflik dengan perintah MS-DOS 5.0 LH (“load high”) yang baru. LHA asli dan port Windows-nya, LHA32, tidak lagi dalam pengembangan karena Yoshizaki sedang sibuk bekerja.

Meski tidak lagi banyak digunakan di barat, LHA tetap populer di Jepang hingga tahun 2000-an. Itu digunakan oleh id Software untuk mengompres file instalasi untuk game mereka sebelumnya, termasuk Doom dan Quake. Karena beberapa versi LHA telah didistribusikan dengan kode sumber di bawah lisensi permisif, LHA telah dipindahkan ke banyak sistem operasi dan masih menjadi format pengarsipan utama yang digunakan di komputer Amiga, meskipun bersaing dengan LZX pada pertengahan 1990-an. Ini karena Aminet, arsip perangkat lunak dan file terkait Amiga terbesar di dunia, menstandarkan penerapan LHA Stefan Boberg untuk Amiga.

Microsoft merilis Add-on Folder Microsoft Compressed (LZH), yang dirancang untuk Windows XP versi Jepang. Windows 7 versi Jepang disertakan dengan add-on folder LZH bawaan. Pengguna Windows 7 Enterprise dan Ultimate versi non-Jepang juga dapat menginstal add-on folder LZH dengan menginstal paket bahasa Jepang opsional dari Pembaruan Windows.

Metode kompresi
Dalam arsip LZH, metode kompresi disimpan sebagai string teks lima byte, mis. -lz1-. Ini adalah byte ketiga hingga ketujuh dari file.

LZH kanonik
LHarc memampatkan file menggunakan algoritme dari produk LZHUF Yoshizaki sebelumnya, yang dimodifikasi dari LZARI yang dikembangkan oleh Haruhiko Okumura (奥村晴彦, Okumura Haruhiko), tetapi menggunakan pengkodean Huffman alih-alih pengkodean aritmatika. LZARI menggunakan Lempel–Ziv–Storer–Szymanski dengan pengkodean aritmatika.

lh0
Tidak ada metode kompresi yang diterapkan pada data sumber.
 lh1
Metode ini diperkenalkan di LHarc versi 1.
Ini mendukung jendela geser 4 KiB, dengan dukungan panjang pencocokan maksimal 60 byte. Pengkodean Huffman dinamis       digunakan.
 lh2
varian lh1. Metode ini mendukung jendela geser 8 KiB, dengan dukungan panjang pencocokan maksimal 256 byte.                       Pengkodean Huffman dinamis digunakan.
 lh3
varian lh2 dengan Static Huffman.
lh4, lh5, lh6, lh7
Metode 4, 5, 6, 7 masing-masing mendukung jendela geser 4, 8, 32, 64 KiB, dengan dukungan panjang pencocokan maksimal     256 byte. Pengkodean Huffman statis digunakan. lh5 pertama kali diperkenalkan di LHarc 2, diikuti oleh lh6 di LHA 2.66               (MSDOS), lh7 di LHA 2.67 beta (MSDOS). LHA sendiri tidak pernah dikompres menjadi lh4.
   lhd
Secara teknis ini bukan metode kompresi, tetapi digunakan dalam arsip .LZH untuk menunjukkan bahwa objek terkompresi           adalah direktori kosong.

Ekstensi Joe Jared
Joe Jared memperluas LZSS untuk menggunakan kamus yang lebih besar.

lh8, lh9, lha, lhb, lhc, lhe
Ukuran kamus (jendela geser) masing-masing adalah 64, 128, 256, 512, 1024, 2048 KiB.
Jared mem-porting LZH ke Atari. Fakta bahwa lh8 sama dengan lh7 adalah sebuah kekhilafan. File yang menggunakan metode bernomor lebih besar mungkin juga tidak ada, karena Jared hanya menganggapnya sebagai fitur yang direncanakan.[5]

ekstensi UNLHA32
UNLHA32.DLL menggunakan metodenya sendiri untuk tujuan pengujian.

lhx
Ini menggunakan kamus 128–256 KiB.

ekstensi PMarc
Metode kompresi ini dibuat oleh PMarc, pengarsipan CP/M yang dibuat oleh Miyo. Arsip biasanya memiliki ekstensi .PMA.

   pc1
Arsip terkompresi PopCom yang dapat dieksekusi. Detail tidak diketahui.
 pm0
Tidak ada metode kompresi yang diterapkan pada data sumber.
   pm1
Jendela geser 8 KB, huffman statis. Jarang dihasilkan, dekompresor direkayasa ulang.[6]    pm2
varian lh5, jendela geser 4K.
pms
Digunakan untuk menunjukkan arsip self-extracting PMarc. Harus dilewati untuk mengungkapkan format sebenarnya.

ekstensi LArc
LArc menggunakan format file yang sama dengan .LZH, tetapi ditulis oleh Kazuhiko Miki, Haruhiko Okumura dan Ken Masuyama, dengan nama ekstensi “.LZS”..[7] Program tersebut tampaknya telah hadir sebelum LZH. Ia menggunakan pohon pencarian biner dalam pencocokan LZ.[8]

   lzs
Ini mendukung jendela geser 2 KiB, dengan dukungan maksimum 17 byte dari panjang pencocokan.
   lz2
Mirip dengan lzs, kecuali ukuran kamus dan panjang kecocokan dapat diubah.
   lz3
Tidak dikenal.
   lz4
Tidak ada metode kompresi yang diterapkan pada data sumber.
   lz5
Ini mendukung jendela geser 4 KiB, dengan dukungan maksimum 17 byte dari panjang pencocokan.
   lz7
   lz8
Tidak dikenal.

Implementasi umum tampaknya hanya mendukung lzs, lz5, plus lz4 khusus penyimpanan.

Masalah
LHICE/ICE
Ada salinan LHICE yang ditandai sebagai versi 1.14. Menurut Okumura, LHICE tidak ditulis oleh Yoshizaki.[9]

kesalahan Y2K11
Karena bug, stempel waktu DOS dari header Level 0 dan 1 setelah tahun 2011 akan disetel ke 1980, artinya beberapa utilitas perlu ditambal. Ini disebabkan oleh bug yang menginterpretasikan bitfield angka tahun 7-bit yang tidak ditandatangani sebagai angka 5-bit. Sebagai gantinya, tahun maksimum seharusnya 2107.[10][11]

Header Level 2 dan 3 yang lebih baru menggunakan waktu Unix 32-bit sebagai gantinya. Ia menderita masalah Tahun 2038.[12]

Ukuran tajuk
Menurut Micco, penulis perpustakaan LHA UNLHA32.DLL yang populer, banyak implementasi LHA yang tidak memeriksa panjang header file LHA saat membaca arsip. Dua masalah dapat muncul dari skenario ini: buffer-overrun dapat terjadi untuk implementasi naif dengan asumsi ukuran maksimal 4KB dari spesifikasi asli; perangkat lunak antivirus dapat melewatkan file dengan header besar seperti itu dan gagal memindai virus. Masalah serupa ada dengan ARJ. Micco melaporkan masalah ini kepada pihak berwenang Jepang, tetapi mereka tidak menganggapnya sebagai kerentanan yang valid.[13]

Micco melangkah lebih jauh untuk menyimpulkan pengembangan UNLHA32 dan menyarankan orang untuk menyerah pada format tersebut. Namun demikian, mereka kembali pada tahun 2017 untuk memperbaiki masalah pembajakan DLL.

This entry was posted in . Bookmark the permalink.

SIGN UP FOR NEWSLETTER

Signup for our newsletter to get notified about news and new products.