SLB2: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== SLB2 structure ==
== Structure ==
 
[[File:PS4 SLB PUP container format - SKFU.png|thumb|PS4 SLB PUP container format - SKFU]]
[[File:PS4 SLB PUP container format - SKFU.png|thumb|PS4 SLB PUP container format - SKFU]]


<source lang="c">
<source lang="c">
/* file structure of SLB goes as following, if unpacking make sure you use 64 bits little endian on windows os */
/* SLB2 structure is little endian */
typedef unsigned char u8;
typedef unsigned long int u32;
typedef unsigned long long int u64;
   
   
typedef struct{
struct SceSlb2Entry {
u32 offset; //1 block is headersize (512 padded)
uint32_t fileStartSector;
u32 cryptSize;
uint32_t fileSizeInByte;
u64 reserved; //probably file alignment
uint32_t reserved[2]; // padding for alignment
u8 fileName[32];
char    fileName[32];
} fileEntry;
} __attribute__((packed));
   
   
typedef struct{
struct SceSlb2Header {
u32 magic; //SLB2
uint32_t magic; // "SLB2"
u32 version; //1
uint32_t version; // ex: 1
        u32 flags; // 0
uint32_t flags; // ex: 0
u32 fileCount;
uint32_t entryNum;
u32 blockCount;
uint32_t sizeInSector;
u8 reserved[12];
uint32_t reserved[3]; // padding for alignment
fileEntry files[10];
struct SceSlb2Entry entryList[0];
} slb2_header;
} __attribute__((packed));
</source>
</source>


=== SLB2 files to play with ===
== Unpacking ==
[[1.500.000]]:
* http://www.mirrorcreator.com/files/056CKD7J/PS4UPDATE.PUP.rar_links
<span style="text-decoration: line-through;">* https://mega.co.nz/#!WE8zUAyb!ZuZy5Vxrd4eCc4bTvFW_ZC7lu7Ub0tcdyE08xbJtrok (Main)</span>
* https://mega.co.nz/#!GEdQkRRR!KSCLLQEGlWfQwsA3yBo3pkZqqqE6w-Jwk-5CvLd4GR0 (Recovery)
 
[[1.501.000]] :
* 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 ===
* [https://web.archive.org/web/20141023113732/http://pastie.org/private/4wgojewhp2pq7declhkhw pupunpack.py] (flatz)
* http://pastie.org/private/4wgojewhp2pq7declhkhw (flatz)
* [http://www.eurasia.nu/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=10234&ttitle=PS4_PUP_Extractor_v2 PS4 PUP Extractor v2] (xerpi)
* [http://www.eurasia.nu/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=10234&ttitle=PS4_PUP_Extractor_v2 PS4 PUP Extractor v2] (xerpi)
* [http://www.skfu.xxx/2013/11/release-ps4-fw-tool-100.html PS4 FW Tool v1.0.0] (skfu)
* [https://streetskaterfu.blogspot.fr/2013/11/release-ps4-fw-tool-100.html PS4 FW Tool v1.0.0] (skfu)
* https://github.com/Hykem/ps4tools (hykem, based on flatz)
* [https://github.com/Hykem/ps4tools ps4tools] (hykem, based on flatz)
* https://github.com/Jakes625/PS4-PUP-Tool (Jakes625)
* [https://github.com/harlequin/ps4tools ps4tools] (harlequin, based on flatz and zecoxao)
* [https://github.com/nikosradio/ps4tools ps4tools] (nikosradio, based on flatz)
* [https://github.com/Keyaku/ps4tools ps4tools] (Keyaku, based on flatz)
* [https://github.com/Jakes625/PS4-PUP-Tool PS4-PUP-Tool] (Jakes625)
* [https://github.com/cfwprpht/PS4_AC1D_Flash-Tool PS4_AC1D_Flash-Tool] (cfwprpht)
* [https://github.com/cfwprpht/PS4_AC1D_Flash-Tool PS4_AC1D_Flash-Tool] (cfwprpht)
* [https://github.com/cfwprpht/Usefull_Libraries/blob/master/SLB2/SLB2/SLB2.cs SLB2 library] (cfwprpht)
* [https://github.com/cfwprpht/Usefull_Libraries/blob/master/SLB2/SLB2/SLB2.cs SLB2 library] (cfwprpht)
* [https://github.com/zecoxao/blsunpack blsunpack] (zecoxao)
* [https://github.com/yifanlu/slb2tools slb2tools] (yifan lu)
== Usage ==
SLB2 files are parsed by many executables:
* PS4 [[Southbridge]] EMC IPL to extract C0028001 (EMC IPL) and C0020001 (EMC IPL information) from sflash0s0x32b (inactive partition).


== Other notes ==
It looks like newer (confirmed for OFW 7.55 and above) SLB2 files have some data between 0x200 and 0x270 which doesn't affect any unpacking tool but affects the unpacking on the PS4. The file gets recognised as corrupted if that data isn't there. This data is present in the `recovery` images but not in the `update` images.


{{Software}}
{{Software}}
<noinclude>[[Category:Main]]</noinclude>
<noinclude>[[Category:Main]]</noinclude>

Revision as of 23:25, 21 September 2022

Structure

PS4 SLB PUP container format - SKFU
/* SLB2 structure is little endian */
 
struct SceSlb2Entry {
	uint32_t fileStartSector;
	uint32_t fileSizeInByte;
	uint32_t reserved[2]; // padding for alignment
	char     fileName[32];
} __attribute__((packed));
 
struct SceSlb2Header {
	uint32_t magic; // "SLB2"
	uint32_t version; // ex: 1
	uint32_t flags; // ex: 0
	uint32_t entryNum;
	uint32_t sizeInSector;
	uint32_t reserved[3]; // padding for alignment
	struct SceSlb2Entry entryList[0];
} __attribute__((packed));

Unpacking

Usage

SLB2 files are parsed by many executables:

  • PS4 Southbridge EMC IPL to extract C0028001 (EMC IPL) and C0020001 (EMC IPL information) from sflash0s0x32b (inactive partition).

Other notes

It looks like newer (confirmed for OFW 7.55 and above) SLB2 files have some data between 0x200 and 0x270 which doesn't affect any unpacking tool but affects the unpacking on the PS4. The file gets recognised as corrupted if that data isn't there. This data is present in the `recovery` images but not in the `update` images.