Line 15:
Line 15:
u8 pad;
u8 pad;
u32 update_tag;
u32 update_tag;
−
};
+
} __attribute__((packed));
u16 data[4];
u16 data[4];
};
};
Line 22:
Line 22:
struct {
struct {
union {
union {
−
u32 nand_gen; // first counter matches offset 0x8 in nand SFFS blocks
+
u32 nand_gen; // matches offset 0x8 in nand SFFS blocks
u16 data[2];
u16 data[2];
−
};
+
} __attribute__((packed));
u16 checksum; // sum of data[] elements?
u16 checksum; // sum of data[] elements?
−
} nand_counters[3]; // why are there three of these?
+
} nand_counters[3]; // current slot rotates on each write
u8 pad0[6]; // 0x6E
u8 pad0[6]; // 0x6E
u8 korean_key[16]; // 0x74
u8 korean_key[16]; // 0x74
u8 pad1[116]; // 0x84
u8 pad1[116]; // 0x84
−
u16 prng_seed[2]; // 0xF8 u32 with lo word stored first, incremented every time IOS starts,
+
u16 prng_seed[2]; // 0xF8 u32 with lo word stored first, incremented every time IOS starts.
+
// Used with the PRNG key to setup IOS's PRNG (syscalls 73/74 etc.)
u8 pad2[4]; // 0xFC
u8 pad2[4]; // 0xFC
};
};
{{check}}
{{check}}