Xbox 360 File Specifications Reference

2y ago
11 Views
2 Downloads
871.30 KB
13 Pages
Last View : 25d ago
Last Download : 3m ago
Upload by : Sutton Moon
Transcription

Xbox 360 File Specifications ReferenceIntroductionThis reference attempts to document the specifications of the custom data formats in use by theXbox 360 console. This data has either been discovered through reverse engineering or fromsecondary sources in the Xbox 360 enthusiast community. Often, only the fields that are necessaryfor data access have been properly deciphered and in all cases the names of data fields are at besteducated guesses. As far as the author is aware none of this information has been taken from orderived from primary sources and should not be considered definitive. For definitive specificationsplease consult Microsoft.ContentsIntroduction . 1XTAF . 2Secure Transacted File System. 4Xbox Database Format . 8Account Block. 10Appendix – Additional Tables . 11References . 13

XTAFXTAF is the Xbox 360 file system, sometimes referred to as FATX. XTAF is the file system that isplaced upon the raw hard drive of the Xbox 360. It is a derivative of the legacy File Allocation Tablefile system that was introduced in Microsoft DOS. XTAF uses a big-endian byte order as opposed tothe little-endian FAT and many legacy configuration options of FAT have been removed. Thecommunity knowledge of XTAF is well advanced with the documentation available from the Free60project being excellent as well as there being several open source implementations of XTAF ofvarying completeness to provide example code to help understanding.The XTAF format contains three distinct sections, a 512 byte header, a file allocation table and anumber of 0x4000 byte long clusters containing file data and directory ngth444420xFEEContentXTAF100xFFDescriptionMagic identifierSerial number of the file system, could also be 0 or -1Number of sectors per clusterNumber of copies of the file allocation tableUnknownUnused / unknownXTAF Header Structure (Free60.org, 2010)Files in XTAF are split into 0x4000 (16384) byte clusters that are not necessarily adjacent on disk. TheFile Allocation Table is used to determine where the next cluster of a file resides. The file allocationtable is an array of cluster numbers that are either 4 bytes or 2 bytes wide depending on the size ofthe disk (2 bytes if the number of clusters is less than 0xFFF4 and 4 bytes otherwise). Each entry inthe file allocation table provides the offset to the cluster that follows the current one with thespecial values 0xFFFFFFF and 0x00000000 to denote that this is the last cluster in a chain and thatthe cluster is unallocated respectively. The File Allocation Table is located at offset 0x1000 into thepartition.Immediately after the File Allocation Table is the root directory cluster. The root directory clustercontains a list of file records that represent the files and directories present in the root directory ofthe file system. Unlike other directories the root directory can only occupy one cluster and soaccessing it does not require any File Allocation Table lookups. File records contain the name, size,starting cluster and access/modified/created time stamps of files and directories. If a file record isallocated with all bytes set to 0xFF this signifies the end of the directory.

Size110x2A44222222Descriptionlength of the file name, or 0xE5 for deleted filesfile flagsfile name, padded with either 0x00 or 0xFF bytesstarting cluster of file, 0 for empty filesfile size, 0 for directoriescreation datecreation timeaccess dateaccess timeupdate dateupdate timeXTAF File Record Structure (Free60.org, 2010)Unlike the FAT file system XTAF directories do not contain ‘.’ and ‘.’ records that point to the currentdirectory and parent directory. The time stamps and file flags are in the same format as the FAT filesystem. The first cluster entry refers to both the index into the File Allocation Table of the clusterand the offset of the cluster on disk. Cluster numbers start at number 2 as the root directory clusteris considered cluster 1 before indexing into the File Allocation Table or calculating the offset of acluster subtract 1 from the cluster number. To calculate the file system offset of a cluster multiplythe cluster number by 0x4000 and add the offset of the root cluster.

Secure Transacted File SystemSecure Transacted File System (STFS) is a contain file format used to store downloaded content aswell as locally generated data such as saved games and user profiles. The format has built in controlsto ensure the integrity of the data including a digital signature and tables containing SHA1 hashes ofeach 0x1000 bytes of data. STFS files can be broken down into three types, LIVE, PIRS and CON files.LIVE files contain downloaded content such as games and movies signed with an RSA key controlledby Microsoft and PIRS files are similar except are not delivered by the Xbox LIVE service such assystem updates while CON files are created by the Xbox 360 locally and are signed by the console.This arrangement makes LIVE and PIRS resistant to user tampering and CON files resistant fromcorruption. STFS files are generally found on XTAF file systems.STFS containers are the most complicated of the Xbox 360 file formats examined and are also theleast well documented format. Information online is limited to a description of its header format andspeculative descriptions of its verification techniques as well as two incomplete and contradictoryopen source projects. This specification should be considered the most preliminary. The best publicinformation about this file format is the source code of an Xbox 360 modification library called X360by DJ Shepherd (Shepherd DJ, 2010)The STFS file starts with a long header of 0x971A bytes that includes the type of STFS file it is (LIVE,PIRS or CONS), the digital signature of the file, the metadata structure version and large amounts ofmetadata including up to two images and title/description text in multiple languages. After theheader there are the first hash tables and a table with the file listing. After this point the data startsdivided into 0x1000 byte blocks interspersed every 170 blocks with one or more tables containingadditional hashes.STFS Header (Free60.org, h0x40x50x140x10x80x40x800x1000x80Typeascii stringbytesascii stringbyteascii stringbytesbytesbytesbytesInformationMagic “CON “, PIRS or LIVECertificate Owner Console IDCertificate Owner Console Part NumberCertificate Owner Console Type (1 for devkit, 2 for retail)Certificate Date of GenerationPublic ExponentPublic ModulusCertificate SignatureSignatureAlternatively for LIVE and PIRS packages the header changes as esInformationPackage SignaturePadding

STFS Metadata (Free60.org, 0x40x80x80x4C0x140x18 * 12 (0x900)0x18 * 12 (0x900)0x800x800x10x40x40x40000x4000Typelicense entries (see below)bytesunsigned intsigned intsigned intsigned longunsigned intsigned intsigned intunsigned intByteByteByteByteunsigned intbytesbytesByteSTFS Volume Descriptorsigned intsigned longbytesbytesbytesunicode stringunicode stringunicode stringunicode stringBytesigned intsigned intImageImageInformationLicensing Data (indicates package owner)Content ID / Header SHA1 HashEntry IDContent Type (see below)Metadata Version (see below)Content SizeMedia IDVersion (system/title updates)Base Version (system/title updates)Title IDPlatform (xbox/gfwl?)Executable TypeDisc NumberDisc In SetSave Game IDConsole IDProfile IDVolume Descriptor Struct Size (usually 0x24)File System Volume DescriptorData File CountData File Combined SizeReservedPaddingDevice IDDisplay NameDisplay DescriptionPublisher NameTitle NameTransfer Flags (see below)Thumbnail Image SizeTitle Thumbnail Image SizeThumbnail ImageTitle Thumbnail ImageSTFS Metadata Version 2 (Free60.org, 571A0x941ALength0x100x100x20x20x280x3D00 (thumbnail size)0x300 (each 0x80 different locale)0x3D00 (title thumbnail size)0x300 (each 0x80 different locale)Typebytesbytessigned shortsigned shortbytesimageimageimageimageInformationSeries IDSeason IDSeason NumberEpisode NumberPaddingThumbnail ImageAdditional Display NamesTitle Thumbnail ImageAdditional Display DescriptionsIf the metadata version field is set to 2 the above changes are present in the metadata format. TheSTFS volume descriptor contains information about the location of the file listing table and the toplevel hash table.

STFS Volume Descriptor (Free60.org, x30x140x40x4Typebytebytesigned shortsigned int24bytessigned intsigned intInformationReservedBlock SeperationFile Table Block CountFile Table Block NumberTop Hash Table HashTotal Allocated Block CountTotal Unallocated Block CountIf bit 12, 13 and 15 of the Entry ID are on ((Entry ID 0xFFF) & 0xF000) 0xC 0xB) there are 2hash tables every 0xAA (170) blocks, evidence suggests that this is the case in CON files. The secondhash table contains almost identical information to the first and it is hypothesized that theduplication is to support transactional integrity. Hash tables contain 170 records each containing aSHA1 hash of the relevant block as well as a status byte and the block number of the following block.STFS Hash byte24 bit integerInformationSHA1 Hash of BlockStatus (0x00, 0x40, 0x80, 0xC0)Next Block IndexSTFS Hash Status ValuesValue0x000x400x800xC0InformationUnused BlockFree Block (previously used)Used BlockNewly Allocated BlockThe file listing table contains a series of file listing structures that describe a file or directory insidethe STFS archive. The File Listing structure contains both big-endian and little-endian values and thepath indicator value is an offset into the File Listing table where -1 (0xFFFF) indicates the rootdirectory. Time stamps in the File Listing table are the same as XTAF (and FAT). Bit 6 of byte 0x28indicates whether or not the entry is a directory.STFS File Listing (Free60.org, th0x280x10x30x30x30x20x40x40x4Typeascii stringbytesigned int24signed int24signed int24signed shortunsigned intsigned intsigned intInformationFile name, null-paddedLength of file name, plus flagsNumber of blocks allocated for file (little endian)Copy of 0x29Starting block number of file (little endian)Path indicator (big endian)Size of file in bytes (big endian)Update date/time stamp of fileAccess date/time stamp of file

Hash tables are interspersed with data so that it is not trivial to convert a block number into anoffset in the file. Block numbers refer to data blocks only and do not increment for hash table blocks.The following code segment demonstrates how to adjust a block number to take into accountembedded hash tables. The variable table size shift is 1 if ((Entry ID 0xFFF) & 0xF000) 0xC 0xB) is True and 0 otherwise. The return value can be multiplied by 0x1000 and then added to0xC000 to find the location of the block on disk.block adjust 0if block num 0xAA:block adjust ((block num // 0xAA)) 1 table size shiftif block num 0x70E4:block adjust ((block num // 0x70E4) 1) table size shiftreturn block adjust block numEvery 0xAA blocks there is a hash table containing the hashes of the next 0xAA blocks. Every 0x70E4(0xAA * 0xAA) blocks there is a hash table presumably containing hashes of the previous 0xAA hashblocks. Finally, every 0x4AF768 (0xAA * 0xAA * 0xAA) there is a table presumably containing thehashes of the 0x70E4 hash tables.

Xbox Database FormatThe Xbox Database Format (XDBF) is a generic container format for storing records and files. XDBF isthe format of Gamer Profile Data (GPD) files which are used to store information relevant to a singleuser including settings, information about the games played, achievement information for eachgame and image resources. XDBF is also used by Statistics, Presence, Achievement files (SPA) whichare embedded in game software bundles and are used to generate GPD files for each user that playsthe game. GPD and SPA files are both usually found inside STFS containers. XDBF files have featuresto simplify the process of syncing them with remote servers.The XDBF format is well understood by the Xbox 360 enthusiast community and is documented bythe Free60 project. The file format is composed of a header, a table of record entries, a table of freespace, and the data area. These regions are adjacent and their sizes can be calculated from headerinformation. The data area is not divided into blocks or clusters and entries are contiguous inside theXDBF area and are specified by a start offset and a length. The XDBF header specifies the length ofthe entry and free space tables as well as how many records in those tables have been used.XDBF Header (Free60.org, x40x4Typeascii stringunsigned intunsigned intunsigned intunsigned intunsigned intInformationMagic (0x58444246) “XDBF”Version (0x10000)Entry Table Length (in number of entries)Entry CountFree Space Table Length (in number of entries)Free Space Table Entry CountXDBF Entry Table (Free60.org, ned shortunsigned longunsigned intunsigned intInformationNamespaceIDOffsetLengthOffset is not the offset from the start of the file but rather the offset from the end of the free spacetable. Namespaces describe the type of entry in the XDBF file and vary depending on the particulartype of XDBF file. GPD files contain achievement records, image records, setting records, titlerecords, strings and achievement security records. String entries are UTF-16 big-endian strings andimage entries are PNG files both of the length specified in the entry record. Other strings inachievement and title entries are also UTF-16 big-endian. The Setting entry structure is less welldocumented. In a Setting entry the Setting ID field determines the size and structure of the payloadand the Content ID field determines which setting this entry corresponds to.

GPD Namespaces (Free60.org, TitleStringAchievement SecurityAchievement Entries (Free60.org, 2011)Offset0x00x40x80xC0x100x140x180x18 Name length0x18 Name length Locked Description lengthLength0x40x40x40x40x40x8null terminatednull terminatednull terminatedTypeunsigned intunsigned intunsigned intsigned intunsigned intsigned longunicode stringunicode stringunicode stringTitle Entries (Free60.org, x40x40x40x40x40x80x40x8null terminatedTypeunsigned intsigned intsigned intsigned intsigned intsigned longsigned intsigned longunicode stringInformationTitle IDAchievement CountAchievement Unlocked CountGamerscore TotalGamerscore UnlockedUnknownUnknownLast Played TimeTitle NameSetting ariablebytessigned intBytesContent IDSetting IDDataSetting IDValue01234567DescriptionDataContextUnsigned gned Integer64 bit IntegerDouble32 bit Integer length followed by UTF-16 BE textFloat32 bit Integer length followed by binary data64 bit Microsoft File Time timestampInformationMagic (0x1C)Achievement IDImage IDGamerscoreFlags (see below)Unlock TimeNameLocked DescriptionUnlocked Description

Account BlockThe Account Block is a file inside a STFS archive that describes a Xbox 360 Profile. The Account Blockis 404 bytes long and is encrypted with RC4 and HMAC-SHA1. The RC4 key is the first 16 bytes of theHMAC-SHA1 digest of the first 16 bytes of the Account file encrypted with the keyE1BC159C73B1EAE9AB3170F3AD47EBF3 (TheFallen93, 2010).Very little information was available about the structure of this file and most of the followinginformation about the decrypted Account Block has been derived from reverse engineering. It isworth emphasising that the layout and purpose of many fields of the Account Block is still unknown.Account ationAccount Type (0x20 Live)Account PasscodeGamerTagXUID (Live Only)Account Level (0x30 Silver, 0x60 Gold)Console Type (PROD, PART)

Appendix – Additional TablesSTFS Content Types (Free60.org, 10000x50000xE0000DescriptionArcade TitleAvatar ItemCache FileCommunity GameGame DemoGamer PictureGame TitleGame TrailerGame VideoInstalled GameInstallerIPTV Pause BufferLicense StoreMarketplace ContentMovieMusic VideoPodcast VideoProfilePublisherSaved GameStorage DownloadThemeTVVideoViral VideoXbox DownloadXbox Original GameXbox Saved GameXbox 360 TitleXbox TitleXNA

GPD Content ID (Shepherd DJ, DescriptionGamerZoneRegionGamerscorePresence State (Unknown)CameraReputationMute SettingVoice Output SpeakersVoice Volume SettingGamer Picture ReferencePersonal Picture ReferenceMottoTitles PlayedAchievements UnlockedDifficulty SettingControl SensitivityPreferred Color 1Preferred Color 2Auto AimAuto CenterAction Movement ControlGamerscore Earned On TitleAchievements Unlocked on TitleUser Tier (Unknown)Has Messanger AccountMessanger Auto SigninSave Live PasswordPublic Friends ListService Type (Unknown)Account NameAccount LocationGamercard URLAccount BioSync ID TableSync RecordXbox.com Favorite Game (1)Xbox.com Favorite Game (2)Xbox.com Favorite Game (3)Xbox.com Favorite Game (4)Xbox.com Favorite Game (5)Xbox.com Favorite Game (6)Xbox.com Platforms OwnedXbox.com Connection SpeedUser Crux Last Change Time (Unknown)

ReferencesFree60.org. (2011, 01). GPD. Retrieved 01 24, 2011, from Free60 Wiki: http://free60.org/GPDFree60.org. (2011, 01). STFS. Retrieved 01 24, 2011, from Free60 Wiki: http://free60.org/STFSFree60.org. (2010, 08). XDBF. Retrieved 01 24, 2011, from Free60 Wiki: http://free60.org/XDBFFree60.org. (2010, 03). XTAF. Retrieved 01 24, 2011, from Free60 Wiki: http://free60.org/XTAFShepherd DJ. (2010, 03). Programs. Retrieved 01 24, 2011, from SkunkieButt's Blog:http://skunkiebutt.com/?page id 362TheFallen93. (2010, 09). XAM Systemlink Patch. Retrieved 01 24, 2011, from TheFallen93's q link.txt

XTAF is the Xbox 360 file system, sometimes referred to as FATX. XTAF is the file system that is placed upon the raw hard drive of the Xbox 360. It is a derivative of the legacy File Allocation Table file system that was introduced in Micro

Related Documents:

Xbox 360 Setup (HDMI) *Older Xbox 360 models and Xbox 360 Slim models require an Xbox 360 Audio Adapter for audio output when used with an HDMI connection (available from TurtleBeach.com). Xbox 360 E consoles do not require an Xbox 360 Audio Adapter. NOT

Microsoft, Xbox, Xbox 360, Xbox Live, and the Xbox, Xbox 360, and Xbox Live logos are either registered trademarks or trademarks . Please do not contact Customer Support for hints/codes/cheats; . battlefield often winds up dead.

Vision camera. Xbox LIVE Vision adds video to your Xbox 360 system and games, including: Video chat and picture messages. Photo snapshots. Family Settings for privacy and parental control of communication and user-created content. To enable Xbox LIVE Vision on your Xbox 360 console, get the latest Xbox 360 system software by signing

Hyper-V allows the Xbox One to create virtual machines on x86- 64 systems. Backward compatibility to Xbox 360 games is available by emulating a virtual Xbox 360 environment on the Xbox One. With Windows 10, Universal Windows Platform apps became available on Xbox One allowing fo

Xbox 360 Disassembly: To disassemble your Xbox 360 to get the DVD Drive out, follow these instructions but you do NOT need to remove the black heatsink screws. All you need to remove is the six silver long screws circled in RED: Anandtech Xbox 360 Stripping Guide Keep the power connecter plugged in your Xbox 360

To use Xbox LIVE Chat: Connect the Xbox LIVE Cable from your Xbox 360 controller to the port located on the left earpiece of the A50. *If you have a non-slim Xbox 360 and you use HDMI to connect to the TV, you will need an Xbox 360 Audio Dongle (not included). You may be able to pull audio from your TV’s optical passthrough. See

one Xbox 360 Hard drive to another Xbox 360 Hard drive. during the transfer process, all content on your new Xbox 360 Hard drive will be erased. Xbox Live arcade games and most other content purchased on Xbox Live Marketplace can be re-downloaded free of charge. to avoid erasing existing game saves or gamer profiles on your new hard

when using chords in your riffs and solos. mattwarnockguitar.com 14 After working this line in a few keys, experiment by adding bends to other chords in your vocabulary. Audio Example 14 The last line uses A7#9 chord shapes to create tension in this Stevie Ray Vaughan style line. Remember, you can use 7#9 chords anywhere in a blues, though they fit most naturally on the V7 chord. If you use .