{"success":true,"data":{"ext":"xll","name":"XLL","description":"XLL is a Microsoft Excel add-in format created and maintained by Microsoft as part of the Excel platform. It is used to extend Excel with custom worksheet functions, automation features, and specialized calculations, and is loaded by Microsoft Excel and compatible spreadsheet applications. Because XLL files contain executable code, they should be obtained from trusted sources; the format is longstanding and often treated as a legacy add-in mechanism.","mime":["application/vnd.ms-excel"],"risk_level":"Safe","signatures":[{"hex":"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","offset":2080,"sources":[{"name":"Apache Tika","url":"https://raw.githubusercontent.com/apache/tika/main/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml"}]},{"hex":"46 6F 67 6C 69 6F 20 64 69 20 6C 61 76 6F 72 6F 20 4D 69 63 72 6F 73 6F 66 74 20 45 78 63 65","offset":2080,"sources":[{"name":"Apache Tika","url":"https://raw.githubusercontent.com/apache/tika/main/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml"}]},{"hex":"42 69 66 66 35","offset":2114,"sources":[{"name":"Apache Tika","url":"https://raw.githubusercontent.com/apache/tika/main/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml"}]},{"hex":"42 69 66 66 35","offset":2121,"sources":[{"name":"Apache Tika","url":"https://raw.githubusercontent.com/apache/tika/main/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml"}]},{"hex":"D0 CF 11 E0 A1 B1 1A E1","offset":0,"sources":[{"name":"Apache Tika","url":"https://raw.githubusercontent.com/apache/tika/main/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml"}]}],"related":["xlc","xld","xlm","xlt","xlw","xla"],"usage":{"python":"def is_xll(file_path: str) -> bool:\n    \"\"\"Check if file is a valid XLL by magic bytes at offset 2080.\"\"\"\n    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])\n    with open(file_path, \"rb\") as f:\n        f.seek(2080)\n        return f.read(29) == signature","node":"function isXLL(buffer: Buffer): boolean {\n  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]);\n  if (buffer.length < 2109) return false;\n  return buffer.subarray(2080, 2109).equals(signature);\n}","go":"func IsXLL(data []byte) bool {\n    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}\n    if len(data) < 2109 {\n        return false\n    }\n    return bytes.Equal(data[2080:2109], signature)\n}"}}}