Читайте также:
|
|
Остальная часть FAT состоит из 12-битовых, 16-битовых или 32-битовых ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения:
FAT12 | FAT16 | Что означает |
000h | 0000h | Свободный кластер |
FF0h - FF6h | FFF0h - FFF6h | Зарезервированный кластер |
FF7h | FFF7h | Плохой кластер |
FF8h – FFFh | FFF8h - FFFFh | Последний кластер файла в списке |
Цепочка FAT (красным – номера элементов FAT, синим – номера кластеров):
FF | |||||||||||||||
FF | FF |
PS. Номера первых кластеров (2, 8, 12), отведенных файлам, находятся в главном (корневом) каталоге диска или в подкаталогах (см. далее раздел «Файлы и каталоги»).
Непосредственный доступ к FAT может потребоваться для организации сканирования каталогов для поиска нужных файлов, для чтения каталогов как файлов, для организации защиты информации от несанкционированного копирования.
Общая схема использования FAT такая:
· Читаем FAT целиком в память. Обычно FAT располагается сразу после BOOT-сектора (логический сектор с номером 1). Для точного определения начального сектора FAT следует прочитать в память BOOT-сектор и проанализировать содержимое блока параметров BIOS. В поле ressecs записано количество зарезервированных секторов, которые располагаются перед FAT. Поле fatsize содержит размер FAT в секторах. Кроме того, следует учитывать, что на диске может находиться несколько копий FAT. Операционная система использует только первую копию, остальные нужны для утилит восстановления содержимого диска, таких как CHKDSK. Количество копий FAT находится в поле fatcnt BOOT-сектора.
· Из каталога узнаем номер первого кластера файла, для которого необходимо определить его расположение на диске.
· Используем номер первого кластера как индекс в FAT для извлечения номера следующего кластера.
· Повторяем предыдущую процедуру до тех пор, пока извлеченное из FAT значение не будет соответствовать концу файла (FFFFh).
Файлы и каталоги
Файловая система DOS, Windows, Unix имеет древовидную структуру. В корневом каталоге располагаются 32-байтовые элементы, которые содержат информацию о файлах и других каталогах. Для чтения корневого каталога необходимо определить его расположение и размер.
Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS в BOOT-секторе в поле fatsize, количество копий FAT - в поле fatcnt блока BPB. Следовательно, перед корневым каталогом находится один BOOT-сектор и (fatcnt*fatsize) секторов таблицы размещения файлов FAT.
Размер корневого каталога можно определить исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байта, поэтому корневой каталог имеет длину (32*rootsize) байтов.
Корневой каталог занимает непрерывную область фиксированного размера. Размер корневого каталога задается при форматировании и определяет максимальное количество файлов и каталогов, которые могут быть описаны в корневом каталоге. Для определения количества секторов, занимаемых корневым каталогом, можно воспользоваться следующей формулой:
Дата добавления: 2015-07-24; просмотров: 74 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Из сказанного выше следует, что таблицы логических дисков связаны в список, на начало этого списка указывает элемент таблицы разделов диска с кодом системы, равным 5. | | | Теоретическое описание декодера и метода вскрытия замков. |