FATX
Последнее изменение этой страницы: 17:05, 18 июня 2016.
Полное название | Xbox FILE SYSTEM |
---|---|
Limits | |
Макс. размер тома | 64GB |
Макс. размер файла | 64GB on 32 bit systems) |
Макс. длина имени файла | 42 symbols |
Features | |
Диапазон дат | December 1, 1980 – January 18, 2038 |
Дата резолюции | 1 s |
Прозрачное сжатие | No |
Транспорантное шифрование | No |
FATX - является слегка модифицированной версией FAT файловой системы и предназначена для регулирования работы жесткого диска диск и карты памяти в игровой консоли Xbox. Операционная система для игровой приставки Xbox — это очень сильно изменённая Windows 2000. Во время адаптирования к игровой приставке в Windows 2000 было изменено много кода, в части, отвечающей за работу с файловыми системами, поэтому операционную систему этой игровой приставки нельзя назвать принадлежащей к линейке Microsoft Windows.
Содержание
Структура файловой системы
Файловая система разделена на 3 части:
- Заголовок (загрузочный сектор в файловых системах FAT)
- Таблица размещения файлов (FAT)
- Корневой каталог кластера / область данных
Все значения многобайтовыми , содержащиеся в каждой части являются большой обратный порядок байт.
Разница между коммерческой и Development Kit версией HDD
Существенное различие между коммерческой версией и DevKit жестких дисков является то, что жесткие диски DevKit имеет таблицу разделов (длинной 0x18 байт) в начале диска. Таблица содержит информацию о секторе и длине для Content и DevKit схем-разделов. Эта таблица разделов существует только на DevKit версиях Xbox, коммерческая версия имеют корректоры, которые встроены в ядро.
Разметка USB-накопителя
В отличие от жестких дисков и других запоминающих устройств, с которыми изначально поставляется XBOX 360, USB - диски, USB-накопитель, который могут быть использованы с Xbox 360, содержат файлы, расположенные в скрытой папке "Xbox360", расположенной в корневом каталоге устройства. Файлы Data0000-Data0003 всегда присутствуют вне зависимо от того, каков размер устройства. Data0000 файл включает в себя кэш, информация о работе устройства и его геометрии (в основном только общий размер устройства). Data0001 содержит таблицу размещения файлов для раздела данных, который использует оставшиеся файлы.
Файл конфигурации
Конфигурация это первые 2 сектора (0x400 байтах) файла Data0000 и он создается, когда устройство настроено. Он содержит информацию об устройстве и имеет цифровую подпись. Схема выглядит следующим образом:
офсет | длина | описание |
---|---|---|
0 | 0x1A8 | Консоль сертификата безопасности |
0x1A8 | 0x80 | Подпись (часть консоли CERT) |
0x228 | 0x14 | Идентификатор устройства |
0x23C | 4 (UInt32) | Размер сертификата |
0x240 | 8 (UInt64) | Размер устройства в байтах |
0x248 | 2 (UInt16) | Скорость чтения в KB/s |
0x24A | 2 (UInt16) | Скорость записи в KB/s |
0x24C | 0x1B4 | 0x1B4
Перетяжка (0x00) |
офсет | длина | описание |
---|---|---|
0 | 0x100 | Маркер-устройство |
0x100 | 0xA8 | Перетяжка (0x00) |
0x228 | 0x14 | Идентификатор устройства |
0x23C | 4 (UInt32) | Размер сертификата |
0x240 | 8 (UInt64) | Размер устройства в байтах |
0x248 | 2 (UInt16) | Скорость чтения в KB/s |
0x24С | 2 (UInt16) | Скорость записи в KB/s |
Маркер является производной от SHA1 хэш-суммы, взятого с начала идентификатора устройства (0x228) до конца конфигурации (0x1D8 байт) и всегда подписан индивидуальным ключом консоли.
Размер сертификата используется для определения того, как проверить файл конфигурации, когда устройство установлено. Если значение 0x228, то устройство было настроено с помощью Xbox и подпись проверена с использованием Params в сертификате консоли, если значение является 0х100 то устройство было предварительно сконфигурированные с помощью Microsoft и проверяется с помощью открытого ключа SATA (также используется для проверки HDDSS).
Последние 2 значения записываются, когда устройство настроено, но неизвестно, как они используются в дальнейшем. Возможно, они можут быть использованы для определения того, что подключенное устройство обеспечит наилучшую производительность для кэширования.
Раздел заголовка
офсет | длина | тип | информация |
---|---|---|---|
0x0 | 0x4 | строка ASCII | Partition Magic (XTAF) |
0x4 | 0x4 | неподписанные INT | ID раздел |
0x228 | 0x4 | неподписанные INT | Секторов в кластере |
0x23C | 0x4 | неподписанные INT | Корневой кластер каталог |
SysExt Partition
SystemUpdate с ядром-версии 2.0.12611.0 (Kinect-панель приборов) представила новую систему для хранения Kinect/ Avatar системных файлов.Оно создает раздел под названием "SysExt" (SystemExtended),чтобы хранить эти файлы. Такой принцип можно назвать как раздела внутри другого раздела.
Сектор "Josh"
Сектор "Josh" находится на 4 - м секторе (0x800). Его цель в настоящее время неизвестна. Он может быть использован только для идентификации Xbox ,который ранее был отформатирован.
Сектор безопасности
Сектора безопасности используется Microsoft , чтобы убедиться , что жесткий диск является оригинальным продуктом Microsoft. Сектора безопасности содержита детали , такие как серийный номер диска и логотип Microsoft (чтобы остановить другие компании , использующие его) Она начинается на 16-й сектор на диске (0x2000).
Chainmap и каталоги
Чтобы найти смещение chainmap, нужно взять разницу в смещении позиции и добавить 4096 (0x1000) к ней. Каждая запись в chainmap является либо беззнаковым целочисленным значением без знака которое варьируется в зависимости от количества кластеров внутри перегородки.
Чтобы выработать размер кластера, нужно назначить сектор на значение Cluster и умножить его на 512 (0x200).
Чтобы определить количество кластеров, требуется разделить размер разделов на размер кластера, и это и есть число кластеров.
Если число кластеров ниже 65520 (0xFFF0), то привод использует 2 байта chainmap-записи, в противном случае он использует 4-байтовых записей-chainmap. Размером chainmap является размер записей chainmap, умноженный на число разделов кластера.
Для того чтобы получить кластеры смещения, вам необходимо выработать смещение области данных файла. Это определяется путем принятия chainmap смещения и добавив его размер к нему. Затем вы просто умножаете индекс кластера (минус 1) на размер кластера и добавляете его к файлу данных офсета.
Для того, чтобы получить кластер "chainmap entrys"-смещение, необходимо умножить индекс кластера по карте на размер цепи ввода и добавить к chainmap-смещению.
Файлы
Содержимое файла сохраняется в кластере, как указано chainmap и стартовом кластере. Если файл больше , чем один кластер, он хранится в нескольких кластерах. Если длина файла не кратна размеру кластера, то последний кластер используется лишь частично. Если файл охватывает более 1 кластер, следующий кластер должен быть определен путем нахождения записи текущего кластера в chainmap и использовать значение , как следующий кластер.
Директории
Каталоги хранятся в табличном формате. Поскольку каталоги являются обычными, они находятся в FAT и, следовательно, могут охватывать несколько кластеров. Это дает возможность иметь много файлов в одном каталоге. Каждая запись таблицы каталогов имеет длину 64 байт. Запись может быть установлена на всех байтах 0xFF, что означает, что эта запись не используется, и, вероятно, отмечает конец содержимого каталога.
Файлы флажков и поля даты и времени содержатся в том же формате, который используется в файловой системе FAT. Для времени, биты 15-11 представляют час, 10-5 минуты, 4-0 секунды. На сегодняшний день, биты 15-9 являются годами, 8-5 есть месяц, 4-0 это день.
Битовое пространство не используется, метка тома вместо этого хранятся в файле "name.txt" в корневом каталоге. Содержимое этого файла начинаtncz со смещения 0x2. Следующие символы встречаются в именах файлов XTAF от реальных образов дисков:
- 0x20, 0x24, 0x2e (SPACE $.)
- 0x30-0x39 (цифры 0-9)
- 0x41-0x5a (буквы от A до Z)
- 0x5f (_)
- 0x61-0x7a (буквы от A до Z)
В отличие от файловой системы FAT, XTAF не имеет "." и ".." записей в таблицах каталога. Это означает, что единственная возможность перейти в родительский каталог, это запоминая его номер кластера.
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.