namespace SabreTools.Data.Models.STFS { /// /// Secure Transacted File System, used by Xbox 360 /// There are three formats: "LIVE", "PIRS", "CON " /// LIVE/PIRS are read-only signed by Microsoft, "CON " is read/write signed by console /// LIVE files are only distributed via Xbox Live, PIRS can be found elsewhere (e.g. system updates) /// /// public class Volume { /// /// STFS Header data /// Should be 0xA000 bytes (10 blocks) /// public Header Header { get; set; } = new(); /// /// An STFS volume contains blocks dedicated to integrity hashes /// Each 4096-byte block has 170 integrity hashes for other blocks /// A new hash table block exists after every 170 data blocks /// i.e. First hash block is at 0x0B000 then next is at 0xB7000 /// /// Reader does not fill this in yet public HashTable[]? HashTables { get; set; } /// /// Data in the STFS, arranged in blocks of 4096-bytes /// The Hash Table Blocks are interleaved, and ignored when numbering /// i.e. Block 170 is not adjacent to Block 171 /// /// Too large to read into memory, left in model for posterity public byte[]? Data { get; set; } } }