Каждый только что удаленный файл все еще находится на жестком диске, но Windows его больше не видит. Если программе восстановления данных необходимо восстановить этот файл, она просматривает загрузочный сектор раздела (Partition Boot Sector). В нем содержится вся информация о строении раздела, например размер секторов (как правило, 512 байт) и количество секторов в одном кластере.
В разделе NTFS размером более 2 Гбайт в одном кластере содержится четыре сектора. В нашем примере показан небольшой раздел размером 500 Мбайт, у которого каждому сектору соответствует один кластер.
Наряду с этой информацией программы восстановления данных сканируют главную таблицу файлов (Master File Table, MFT), которая тоже находится в Partition Boot Sector. Она представляет собой список всех файлов, находящихся в разделе, в ней содержатся все файловые атрибуты и информация о том, в каких секторах винчестера находятся сами файлы. Те из них, что по размерам менее 1500 байт, записываются прямо в MFT. Для файлов большего объема в MFT есть ссылки на адреса секторов, в которых лежат данные.
В начале MFT находятся другие записи, например так называемая битовая карта распределения кластеров (Cluster Bitmap), показывающая все используемые кластеры, а также файл плохих кластеров (Bad Cluster File), регистрирующий все кластеры с ошибками. Только с 17-й записи начинается собственно описание файлов. Обычно таблица MFT в Windows не видна. Но есть дисковые редакторы, например WinHex, которые показывают содержание MFT в шестнадцатеричных кодах.
На картинке (см.ниже) вы видите MFT-запись удаленного файла в HEX-коде. Для программы восстановления данных достаточно этой информации, чтобы восстановить файл.
Значения которые программа восстановления файлов находит в Master File Table:
1. Эти четыре байта (File Identifier) обозначают начало нового файла. Байты до следующего File Identifier содержат всю информацию о файле.
2. Эти два байта зарезервированы для флагов, которые дают справку о состоянии файла. Если их значение равно 0, как в нашем случае, это значит, что файл удален.
3. Из этих 16 байт программа восстановления данных узнает, когда файл был создан и в последний раз подвергался изменениям.
4. Эта ссылка на каталог, в котором находится файл (Parent Directory Record Number). С ее помощью программа-спасатель может включить файл в структуру каталогов.
5. Здесь появляется имя файла, в нашем случае Mу Prеsеntаtiоn.pрt.
6.Если эти два байта имеют значе ние 0, то файл не сжат.
7. Эти восемь байт сообщают размер файла,в нашем случае 56 320 байт.
8.Важнейшая часть записи MFT, называющаяся Data runs, показывает, где фактически находятся данные.
Здесь указано где находятся данные.
a. Первый байт сообщает, сколько байт необходимо для адреса первого кластера (3 байта) и отображения длины файла во всех кластерах (1 байт).
b. Второй байт содержит длину файла, в нашем примере — 110 кластеров.
c. Следующие три байта означают, что файл начинается с кластера 312 555.
d. Последний байт имеет значение 0. Это означает, что файл не фрагментирован. Следовательно, нет никаких дополнительных записей Data runs.
Как программа восстанавливает данные.
Теперь у программы восстановления данных есть вся информация, необходимая для успешного восстановления удаленного файла. Она обращается к кластеру 312 555, прочитывает данные в следующих 110 кластерах и сохраняет их под именем Mу Prеsеntаtiоn.pрt