Compressed archive file
application/octet-stream
Magic Bytes
Offset: 10
23 20 54 68 69 73 20 69 73 20 61 20 73 68 65 6C 6C 20 61 72 63 68 69 76 65
The LZH file format is a compressed archive type originally developed by Haruyasu Yoshizaki, utilizing the Lempel-Ziv-Huffman algorithm for efficient data reduction. It was historically dominant on MS-DOS and Amiga platforms, serving as a primary standard for software distribution and consolidating multiple files into single packages. Although now considered a legacy format and largely replaced by ZIP, it remains supported by many modern archiving utilities for accessing older data collections.
Validation Code
How to validate .lzh files in Python
Python
def is_lzh(file_path: str) -> bool:
"""
Check if file is a valid LZH by magic bytes.
Signature offset: 10 bytes
"""
signature = bytes([0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65])
with open(file_path, "rb") as f:
f.seek(10)
return f.read(25) == signature
How to validate .lzh files in Node.js
Node.js
function isLZH(buffer: Buffer): boolean {
// Signature offset: 10 bytes
const signature = Buffer.from([0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65]);
if (buffer.length < 35) return false;
return buffer.subarray(10, 35).equals(signature);
}
Go
func IsLZH(data []byte) bool {
// Signature offset: 10 bytes
signature := []byte{0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65}
if len(data) < 35 {
return false
}
return bytes.Equal(data[10:35], signature)
}
API Endpoint
GET
/api/v1/lzh
curl https://filesignature.org/api/v1/lzh