ELC
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
Emacs Lisp Byte-compiled (ELC) is a binary file format maintained by the GNU Project to optimize performance within the Emacs extensible text editor. It functions as a pre-processed container for Lisp code, allowing the environment to load complex scripts and software packages with greater speed. Although these files contain executable bytecode for the Emacs virtual machine, they are typically generated locally from source scripts and are generally considered safe for use.
Validation Code
How to validate .elc files in Python
Python
def is_elc(file_path: str) -> bool:
"""
Check if file is a valid ELC 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 .elc files in Node.js
Node.js
function isELC(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 IsELC(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/elc
curl https://filesignature.org/api/v1/elc