SLB2

From PS4 Developer wiki
Jump to navigation Jump to search

SLB2 structure

PS4 SLB PUP container format - SKFU
 /* file structure of SLB goes as following, if unpacking make sure you use 64 bits little endian on windows os */
 typedef unsigned char u8;
 typedef unsigned long int u32;
 typedef unsigned long long int u64;
 
 typedef struct{
 	u32 offset; //1 block is headersize (512 padded)
 	u32 cryptSize;
 	u64 reserved; //probably file alignment
 	u8 fileName[32];
 } fileEntry;
 
 typedef struct{
 	u32 magic; //SLB2
 	u64 version; //1
 	u32 fileCount;
 	u32 blockCount;
 	u8 reserved[12];
 	fileEntry files[10];
 } ps4pup;

SLB2 files to play with

1.500.000:

* https://mega.co.nz/#!WE8zUAyb!ZuZy5Vxrd4eCc4bTvFW_ZC7lu7Ub0tcdyE08xbJtrok (Main)

1.501.000 :

Unpacking

SLB PUP Files

These files are contained inside of SLB2 containers. They contain data pertaining to system firmware. All inner pup files begin with the same bytes:

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  4F 15 3D 1D 00 01 01 12 04 00 00 00              O.=.........


After that the bytes begin to differentiate. It could be a file count, or a hash used later on to decrypt the inner pup files.