public bool Load() { // read each XBFS header XbfsHeaders = new List <XbfsHeader>(); foreach (int offset in XbfsOffsets) { _io.Stream.Position = offset; var header = _io.Reader.ReadStruct <XbfsHeader>(); XbfsHeaders.Add(header); } long spDataSize = SeekToFile("sp_s.cfg"); if (spDataSize <= 0) { return(true); } // SP_S.cfg: (secure processor secured config? there's also a blank sp_d.cfg which is probably secure processor decrypted config) // 0x0 - 0x200 - signature? // 0x200 - 0x5200 - encrypted data? maybe loaded and decrypted into PSP memory? // 0x5200 - 0x5400 - blank // 0x5400 - 0x5800 - console certificate // 0x5800 - 0x6000 - unknown data, looks like it has some hashes and the OSIG of the BR drive // 0x6000 - 0x6600 - encrypted data? // 0x6600 - 0x7400 - blank // 0x7400 - 0x7410 - unknown data, hash maybe // 0x7410 - 0x40000 - blank _io.Stream.Position += 0x5400; // seek to start of unencrypted data in sp_s (console certificate) ConsoleCert = _io.Reader.ReadStruct <ConsoleEndorsementCert>(); return(true); }
public bool Load() { // read each XBFS header XbfsHeaders = new List<XbfsHeader>(); foreach (int offset in XbfsOffsets) { _io.Stream.Position = offset; var header = _io.Reader.ReadStruct<XbfsHeader>(); XbfsHeaders.Add(header); } long spDataSize = SeekToFile("sp_s.cfg"); if (spDataSize <= 0) return true; // SP_S.cfg: (secure processor secured config? there's also a blank sp_d.cfg which is probably secure processor decrypted config) // 0x0 - 0x200 - signature? // 0x200 - 0x5200 - encrypted data? maybe loaded and decrypted into PSP memory? // 0x5200 - 0x5400 - blank // 0x5400 - 0x5800 - console certificate // 0x5800 - 0x6000 - unknown data, looks like it has some hashes and the OSIG of the BR drive // 0x6000 - 0x6600 - encrypted data? // 0x6600 - 0x7400 - blank // 0x7400 - 0x7410 - unknown data, hash maybe // 0x7410 - 0x40000 - blank _io.Stream.Position += 0x5400; // seek to start of unencrypted data in sp_s (console certificate) ConsoleCert = _io.Reader.ReadStruct<ConsoleEndorsementCert>(); return true; }