PK3
application/octet-stream
Magic Bytes
Offset: 0
50 4B 03 04 50 4B 05 06 50 4B 07 08
PK3 is a legacy compressed archive format developed by id Software for use in the Quake III Arena game engine. It serves as a container for storing game assets, including textures, models, sound files, and map data, to optimize loading and organization. Based on the ZIP standard, PK3 files are generally secure, though users should scan archives from third-party sources to prevent the execution of malicious scripts within modified game environments.
Validation Code
How to validate .pk3 files in Python
Python
def is_pk3(file_path: str) -> bool:
"""Check if file is a valid PK3 by magic bytes."""
signature = bytes([0x50, 0x4B, 0x03, 0x04, 0x50, 0x4B, 0x05, 0x06, 0x50, 0x4B, 0x07, 0x08])
with open(file_path, "rb") as f:
return f.read(12) == signature
How to validate .pk3 files in Node.js
Node.js
function isPK3(buffer: Buffer): boolean {
const signature = Buffer.from([0x50, 0x4B, 0x03, 0x04, 0x50, 0x4B, 0x05, 0x06, 0x50, 0x4B, 0x07, 0x08]);
return buffer.subarray(0, 12).equals(signature);
}
Go
func IsPK3(data []byte) bool {
signature := []byte{0x50, 0x4B, 0x03, 0x04, 0x50, 0x4B, 0x05, 0x06, 0x50, 0x4B, 0x07, 0x08}
if len(data) < 12 {
return false
}
return bytes.Equal(data[:12], signature)
}
API Endpoint
GET
/api/v1/pk3
curl https://filesignature.org/api/v1/pk3