XLM
application/vnd.ms-excel
Magic Bytes
Offset: 2080
4D 69 63 72 6F 73 6F 66 74 20 45 78 63 65 6C 20 35 2E 30 20 57 6F 72 6B 73 68 65 65 74
The XLM file format is a legacy spreadsheet structure developed by Microsoft for early versions of the Excel application suite. It serves primarily as a container for workbook data and macro instructions within Microsoft Excel versions 5.0 and earlier. While largely replaced by modern XML-based formats, these files remain supported for backward compatibility; however, because the legacy macro language can execute automated commands, users should verify the origin of such files.
Validation Code
How to validate .xlm files in Python
Python
def is_xlm(file_path: str) -> bool:
"""
Check if file is a valid XLM by magic bytes.
Signature offset: 2080 bytes
"""
signature = bytes([0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x45, 0x78, 0x63, 0x65, 0x6C, 0x20, 0x35, 0x2E, 0x30, 0x20, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x68, 0x65, 0x65, 0x74])
with open(file_path, "rb") as f:
f.seek(2080)
return f.read(29) == signature
How to validate .xlm files in Node.js
Node.js
function isXLM(buffer: Buffer): boolean {
// Signature offset: 2080 bytes
const signature = Buffer.from([0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x45, 0x78, 0x63, 0x65, 0x6C, 0x20, 0x35, 0x2E, 0x30, 0x20, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x68, 0x65, 0x65, 0x74]);
if (buffer.length < 2109) return false;
return buffer.subarray(2080, 2109).equals(signature);
}
Go
func IsXLM(data []byte) bool {
// Signature offset: 2080 bytes
signature := []byte{0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x45, 0x78, 0x63, 0x65, 0x6C, 0x20, 0x35, 0x2E, 0x30, 0x20, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x68, 0x65, 0x65, 0x74}
if len(data) < 2109 {
return false
}
return bytes.Equal(data[2080:2109], signature)
}
API Endpoint
GET
/api/v1/xlm
curl https://filesignature.org/api/v1/xlm