SLB2
Jump to navigation
Jump to search
SLB2 structure
/* 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
* https://mega.co.nz/#!WE8zUAyb!ZuZy5Vxrd4eCc4bTvFW_ZC7lu7Ub0tcdyE08xbJtrok (Main)
- http://dus01.ps4.update.playstation.net/update/ps4/image/2013_1112/sys_df008b5601f4a214a3cc65030a02ac4a/PS4UPDATE.PUP?dest=us (Main)
- http://dus01.ps4.update.playstation.net/update/ps4/image/2013_1112/rec_cedada625478db608d5878c019454380/PS4UPDATE.PUP?dest=us (Recovery)
Unpacking
- http://pastie.org/private/4wgojewhp2pq7declhkhw (flatz)
- PS4 PUP Extractor v2 (xerpi)
- PS4 FW Tool v1.0.0 (skfu)
- https://github.com/Hykem/ps4tools (hykem, based on flatz)
- https://github.com/Jakes625/PS4-PUP-Tool (Jakes625)
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.