PK4
application/octet-stream
Magic Bytes
Offset: 0
50 4B 03 04 50 4B 05 06 50 4B 07 08
The PK4 file format is a compressed archive structure developed by id Software for game asset management and distribution. It is primarily used to package textures, models, and audio data for titles utilizing the id Tech 4 engine, such as Doom 3 and Quake 4. Structurally identical to the standard ZIP format, PK4 is considered safe, though it is now largely a legacy format replaced by more modern data containers in contemporary development.
Validation Code
How to validate .pk4 files in Python
Python
def is_pk4(file_path: str) -> bool:
"""Check if file is a valid PK4 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 .pk4 files in Node.js
Node.js
function isPK4(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 IsPK4(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/pk4
curl https://filesignature.org/api/v1/pk4