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

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

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

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

Перейти к просмотру
Восстановление файлов карты памяти фотоаппарата, телефона, планшета, видеокамеры, регистратора 📁🔥⚕️

Восстановление файлов карты памяти фотоаппарата, телефона, планшета, видеокамеры, регистратора 📁🔥⚕️

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

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

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

Структура данных FAT

Рис.1 Физическая структура файловой системы FAT.

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

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

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

При анализе файловой системы важно корректно идентифицировать все три физические области. Начало зарезервированной области – всегда в нулевом секторе файловой системы. Размер этой области указывается в загрузочном секторе, и для систем FAT12 и FAT16 составляет ровно один сектор. В FAT32 зарезервированная область может занимать несколько секторов.

Область FAT следует сразу за зарезервированной областью. Область FAT содержит одну или несколько структур FAT, а размер этой области вычисляется умножением количества структур FAT на размер каждой структуры. Эти значения хранятся в загрузочном секторе (зарезервированная область).

Восстановление файлов

Перейти к просмотру
Как восстановить Cr2, Raw, Nef, CRW фотографии после удаления, форматирования, очистки карты 📷⚕️

Как восстановить Cr2, Raw, Nef, CRW фотографии после удаления, форматирования, очистки карты 📷⚕️

Итак, мы вплотную подошли к вопросу о восстановлении диска FAT. Как мы помним, при удалении файла соответствующая ему запись в файловой системе помечается как удалённая, а занимаемые им кластеры, соответственно, получают статус свободных (не выделенных).

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

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

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

Сценарии восстановления FAT

Рис.2 Сценарии восстановления файла.

На рисунке 2 описаны три различных сценария восстановления файла на примере шести кластеров файловой системы. Размер файла – 7094 байт, а размер кластера — 2048 байт. Это означает, что для хранения данного файла изначально были выделены четыре кластера. Нам также известен адрес начального кластера файла – кластер 56. Голубым цветом обозначены кластеры, в которых хранилось содержимое удалённого файла в каждом сценарии.

  • В сценарии 2.А файл занимает последовательно четыре кластера. В этом случае файл будет корректно восстановлен как первым, так и вторым методом: оба алгоритма корректно считают кластеры 56-59.
  • В сценарии 2.В файл был фрагментирован и записан в виде трёх фрагментов. Кластеры 57 и 60 на момент восстановления уже выделены другому файлу. В этом сценарии первый метод точно так же, как и в предыдущем случае, восстанавливает кластеры 56-59, что приводит к очевидной ошибке: файл будет восстановлен некорректно. Второй метод корректно восстановит секторы 56, 58, 59 и 61.
  • Наконец, в сценарии 2.С мы видим случай, при котором файлу выделены те же фрагменты, что и в прошлом сценарии, но кластеры 57 и 60 на момент восстановления не были заняты другим файлом. В этом сценарии оба метода ошибочно восстановят кластеры 56-59.

Как видим, второй метод даёт большую вероятность корректного восстановления файла по сравнению с первым. Именно этот метод был использован в продуктах Hetman Software.

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

Перейти к просмотру
Флешка не работает с автомагнитолой, телевизором, TV приставкой, камерой, видеорегистратором 🛠️👨‍💻🤔

Флешка не работает с автомагнитолой, телевизором, TV приставкой, камерой, видеорегистратором 🛠️👨‍💻🤔

Заключение

Как мы увидели, файловая система FAT устроена достаточно просто, поэтому она часто используется в картах памяти CompactFlash, Memory Stick, xD-Picture Card. При этом гарантированно восстановить файл, удалённый с диска, размеченного в данной файловой системе, получается не всегда.

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

Michael Miroshnichenko

Автор: , Технический писатель

Мирошниченко Михаил – одни из ведущих программистов в Hetman Software. Опираясь на пятнадцатилетний опыт разработки программного обеспечения он делится своими знаниями с читателями нашего блога. По мимо программирования Михаил является экспертом в области восстановления данных, файловых систем, устройств хранения данных, RAID массивов.

Andrey Mareev

Редактор: , Технический писатель

В далеком 2005 году, я получил диплом по специальности «Прикладная математика» в Восточноукраинском национальном университете. А уже в 2006 году, я создал свой первый проект по восстановлению данных. С 2012 года, начал работать в компании «Hetman Software», отвечая за раскрутку сайта, продвижение программного обеспечения компании, и как специалист по работе с клиентами.

Рекомендуем для вас

Вас приветствует ассистент Hetman Software, созданный на основе искусственного интеллекта.
Начать Чат