79 lines
1.8 KiB
C
79 lines
1.8 KiB
C
typedef enum PbpType{
|
|
PBP_TYPE_NPUMDIMG = 0,
|
|
PBP_TYPE_PSISOIMG = 1,
|
|
PBP_TYPE_PSTITLEIMG = 2,
|
|
PBP_TYPE_UNKNOWN = 3
|
|
} PbpType;
|
|
|
|
// for PSISOIMG and PSTITLEIMG contents
|
|
|
|
typedef struct DataPspHeader{
|
|
SceUInt8 magic[0x4];
|
|
SceUInt8 unk[0x7C];
|
|
SceUInt8 unk2[0x32];
|
|
SceUInt8 unk3[0xE];
|
|
SceUInt8 hash[0x14];
|
|
SceUInt8 reserved[0x58];
|
|
SceUInt8 unk4[0x434];
|
|
char content_id[0x30];
|
|
} DataPspHeader;
|
|
|
|
// for NPUMDIMG content
|
|
typedef struct NpUmdImgBody {
|
|
SceUInt16 sector_size; // 0x0800
|
|
SceUInt16 unk_2; // 0xE000
|
|
SceUInt32 unk_4;
|
|
SceUInt32 unk_8;
|
|
SceUInt32 unk_12;
|
|
SceUInt32 unk_16;
|
|
SceUInt32 lba_start;
|
|
SceUInt32 unk_24;
|
|
SceUInt32 nsectors;
|
|
SceUInt32 unk_32;
|
|
SceUInt32 lba_end;
|
|
SceUInt32 unk_40;
|
|
SceUInt32 block_entry_offset;
|
|
char disc_id[0x10];
|
|
SceUInt32 header_start_offset;
|
|
SceUInt32 unk_68;
|
|
SceUInt8 unk_72;
|
|
SceUInt8 bbmac_param;
|
|
SceUInt8 unk_74;
|
|
SceUInt8 unk_75;
|
|
SceUInt32 unk_76;
|
|
SceUInt32 unk_80;
|
|
SceUInt32 unk_84;
|
|
SceUInt32 unk_88;
|
|
SceUInt32 unk_92;
|
|
} NpUmdImgBody;
|
|
|
|
typedef struct NpUmdImgHeader{
|
|
SceUInt8 magic[0x08]; // "NPUMDIMG"
|
|
SceUInt32 key_index; // usually 2, or 3.
|
|
SceUInt32 block_basis;
|
|
char content_id[0x30];
|
|
NpUmdImgBody body;
|
|
SceUInt8 header_key[0x10];
|
|
SceUInt8 data_key[0x10];
|
|
SceUInt8 header_hash[0x10];
|
|
SceUInt8 padding[0x8];
|
|
SceUInt8 ecdsa_sig[0x28];
|
|
} NpUmdImgHeader;
|
|
|
|
// generic eboot.pbp header
|
|
|
|
typedef struct PbpHeader
|
|
{
|
|
char magic[0x4];
|
|
SceUInt32 version;
|
|
SceUInt32 param_sfo_ptr;
|
|
SceUInt32 icon0_png_ptr;
|
|
SceUInt32 icon1_pmf_ptr;
|
|
SceUInt32 pic0_png_ptr;
|
|
SceUInt32 pic1_png_ptr;
|
|
SceUInt32 snd0_at3_ptr;
|
|
SceUInt32 data_psp_ptr;
|
|
SceUInt32 data_psar_ptr;
|
|
} PbpHeader;
|
|
|
|
int HashPbp(char* eboot_file, unsigned char* out_hash); |