O проекте Мобильная версия Реклама Статьи партнеров
MWC 2020 Xiaomi Apple Samsung Google Huawei Oppo Vivo Microsoft AnTuTu
iLenta

Алгоритм восстановления файла на FAT диске

18 июля 2014, 16:14 |
Первое, что необходимо сделать при потере данных с жесткого диска – это найти файловую систему и провести анализ файловой системы при помощи специальной программы. С этой целью возникает необходимость идентификации физические секторы на диске, который принадлежит этому конкретному файлу. В файловой системе FAT каждому файлу и каталогу ставится запись каталога (структура). В этой структуре хранится вся основная базовая информация об файле, в т.ч. имя, атрибуты, а также начальный адрес и длина.

Ищем файл в таблице FAT 

Содержимое файла (каталога) хранится на диске в блоках данных фиксированной длины, которые называют кластерами. Каждый кластер также, в свою очередь, содержит определенное фиксированное количество физических секторов на диске для каждого раздела. Количество секторов, которые содержатся в кластере, определяются записью в структурах файловой системы.

Очень интересно бывает в том случае, если файл или каталог содержит не один, а более одного кластера. Вот последующие кластеры и находятся при помощи структуры данных, которая  называется FAT. Использование этой структуры преследует двойную цель: во-первых, для идентификации следующих кластеров в каталогах, во-вторых, для определения занятости этого конкретного кластера.

Перед началом анализа файловой системы FAT, необходимо корректно идентифицировать три важных области этой системы.

Во-первых, область – зарезервированная, т.е. она содержит данные из категории файловой системы. Зарезервированная область в версиях FAT12 и FAT16 занимает всего один сектор, однако размер этой области формально определяется в загрузочном секторе.

Во вторых, – область FAT. Эта область содержит основные и резервные структуры файловой системы. Размер этой области определяется размером структур FAT  и количеством. Начало этой области – сектор, следующий за зарезервированной областью.

В заключении рассмотрим последнюю область – это область данных. Именно в этой области хранится содержимое всех каталогов.

Анализируя файловую систему, исполнитель, в первую очередь,  будет интересоваться именно областью FAT, т.к. именно здесь хранятся все структуры, ставящие в соответствие файлы и каталоги по физическим адресам на диске, хранящем их содержимое.

В процессе анализа конкретной файловой системы очень важно корректно идентифицировать все три физические области. Исполнитель учитывает, что начало зарезервированной области  всегда находится в нулевом секторе анализируемой файловой системы. В загрузочном секторе указывается размер этой области, а для систем FAT 12 и FAT 16 составляет ровно один сектор. Зарезервированная область в FAT32 может занимать также несколько секторов.

Местоположение области  FAT  таково, что следует область FAT сразу за зарезервированной областью и содержать может как  одну, так и несколько структур FAT. Вычисляется  размер этой области путем умножения количества структур FAT на размер каждой структуры. Хранятся эти значения в загрузочном секторе, т.е. в  зарезервированной области.

Порядок восстановления файлов

Сейчас мы подошли к вопросу о восстановлении файлов. При удалении файла, запись, которая ему соответствует  в файловой системе метится как удалённая, а кластеры, занятые им же  получают статус свободных, т.е. не выделенных.

В процессе анализа исполнитель может получить информацию о размере и физическом адресе начала файла. Информация об остальных кластерах отсутствует. Это происходит потому, что  при удалении файла, записи кластеров в FAT обнуляются.

В результате исполнитель не может  просто восстановить всю цепочку кластеров, которая принадлежит удалённому файлу. Однако, он может сделать попытку  восстановления содержимого. Для этого необходимо прочитать данные из известного начального кластера. В случае, если файл маленький и умещается в одном кластере – это идеальный вариант. Иначе исполнителю придется думать над вопросом выбора остальных кластеров файла. Это достаточно сложная процедура. 

Методы определения принадлежности кластеров к конкретному файлу следующие:

— последовательное копирование объема данных, который соответствует размеру конкретного файла, при этом игнорируя состояние выделенных кластеров (надеемся на удачу);

— считка данных исключительно только из свободных кластеров (есть вероятность восстановления некоторых фрагментированных файлов). Этот метод использован  в программе Hetman Partition Recovery.

Все эти действия можно произвести только в ситуации доступности всех файлов. В случае перезаписи хотя бы части информации в кластерах, восстановления файла не возможно. 

Не смотря на то, что файловая система FAT устроена просто. При этом  восстановление удаленного с диска файла, размеченного в данной системе, получается не всегда.

Однако, для ёмких носителей, к которым относятся  жёсткие диски, Windows чаще использует файловую систему – NTFS, которая устроена значительно сложнее. Алгоритм восстановления данных с NTFS раздела является более сложным процессом, но приводящим к значительно уверенным результатам.