IPAK Files

From COD Engine Research
Revision as of 08:52, 29 December 2013 by Aerosoul94 (talk | contribs) (Created page with "Category:PAK Files Category:BO2 IPAK's, implemented in black ops 2, are basically an archive of compressed image data. == Structure == Thanks to kokole for the struct...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

IPAK's, implemented in black ops 2, are basically an archive of compressed image data.

Structure

Thanks to kokole for the structure.

struct ipak_header_t
{
	u32 identifier; // "IPAK"
	u32 version; //0x50000
	u32 fileSize;
	u32 sectionCount; //from what I've seen it's always 2 (1 = info 2 = data)
}; // 16 bytes

struct section_t
{
	u32 sectionIndex; //enum 0x1 = info, 0x2 = data
	u32 sectionStart;
	u32 sectionLength;
	u32 numOfEntries; // each entry is a compressed iwi file in section 2 and entry info in section 1
}; // 16 bytes

struct entry_info_t
{
	u32 hash; // checksum, type?
	u32 id;
	u32 entryStart; // location of compressed iwi file
	u32 entryLength;
}; // 16 bytes

struct entry_t
{
	entry_header_t header;
	block_info_t blocks[31]; //they can be null, actual number of blocks is header->blockCount;
};

struct entry_header_t
{
	int blockCount; // actual blockcount = *(byte*)&blockCount[0];
}; // 4 bytes

struct block_info_t
{			//enum 0x0 = plaintext, 0x1 = encrypted
	u32 info; //(depending on endian) blockSize = (info & 0xFFFF); , compressedFlag = info >> 24;
}; // 4 bytes

Decompression Methods

PC:

http://pastebin.com/vd9t2U2B

PS3:

1.00 t6mp_ps3f.self - 0x6AEA78

XBOX:

tu9 default_mp.xex - 0x828E5090
tu13 default_mp.xex - 0x828E6308