Лучшие статьи и кейсы стартапов
Включить уведомления
Дадим сигнал, когда появится
что-то суперстоящее.
Спасибо, не надо
Вопросы Проекты Вакансии
Решения для восстановления даных
Рекомендуем
Продвинуть свой проект
Лучшие проекты за неделю
39
Битрикс24

Битрикс24

www.bitrix24.ru

30
Отследить-посылку

Отследить-посылку

отследить-посылку.рф

13
WebResidentTeam

WebResidentTeam

webresident.agency

12
Логомашина

Логомашина

logomachine.ru

11
Devicerra

Devicerra

devicerra.com

11
Flowlu

Flowlu

flowlu.ru

10
GIFTD

GIFTD

giftd.tech

9
Aword

Aword

Приложение для изучения английских слов

9
ADN Digital Studio

ADN Digital Studio

adn.agency

9
Eczo.bike

Eczo.bike

www.eczo.bike

Показать следующие
Рейтинг проектов
Подписывайтесь на Спарк во ВКонтакте

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

227 0 В избранное Сохранено
Авторизуйтесь
Вход с паролем
Существует множество файловых систем. Но FAT, одна из самых старых и самых простых файловых систем, по-прежнему широко используется. В FAT32 форматируются практически все карты памяти, используемые в цифровых фотоаппаратах.

b_55812f879a63f.jpg

FAT используется в большинстве портативных аудиоплееров и навигаторов. Даже мобильные телефоны и планшеты под управлением Android используют карты памяти (к примеру, miniSD, microSD), отформатированные в FAT32.

Да, FAT обладает рядом ограничений, как на максимальный объём раздела, так и на максимальный размер файла (в частности, фильмы в HD качестве бывает невозможно разместить одним файлом на разделе, отформатированном в FAT). Да, эта файловая система достаточно примитивна и не обладает встроенными средствами контроля целостности информации, встроенным сжатием и шифрованием, а также разделением прав доступа. Зато у FAT есть свои преимущества: компактность (под нужды файловой системы отводится совсем немного места), простота реализации и низкая ресурсоёмкость. Все эти достоинства и обусловили популярность файловой системы FAT среди разработчиков мобильных устройств.

Файловая система FAT: а что внутри?

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

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

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

К сожалению, такой простой подход возможен не всегда. Если файл был удалён какое-то время назад, или если записи в файловой системе были стёрты или перезаписаны, программе придётся сканировать всю поверхность диска с помощью алгоритмов сигнатурного поиска. Эти алгоритмы работают по принципу антивируса, идентифицируя файлы по известным сигнатурам. У такого подхода есть ряд ограничений: низкая скорость работы, ограниченное количество поддерживаемых форматов и невозможность полноценного восстановления фрагментированных файлов. Тем не менее, на практике эти алгоритмы прекрасно работают, ведь наиболее ценные файлы (документы, фотографии и т.п.) часто бывают небольшого размера и практически не фрагментируются.

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

Данные файловой системы

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

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

В поисках файловой системы

partitions.png

Рис.1 Жесткий диск разбит на разделы.

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

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

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

Для поиска файловой системы будем исходить из предположения, что в каждом разделе диска находилась файловая система. Как правило, файловые системы можно идентифицировать по некоторой постоянной сигнатуре. Например, файловую систему FAT можно идентифицировать по значениям, записанным в байты 510 и 511 первого сектора. Если значения по этим адресам – 0x55 и 0хАА соответственно, то можно приступить к дополнительной проверке.

Дополнительные проверки позволяют отличить случайно встреченную последовательность данных от истинной сигнатуры файловой системы. Проверяется, например, диапазон значений, допустимых для некоторых полей структуры данных. Одно из полей файловой системы FAT определяет количество секторов в кластере. Его значение всегда представляет собой степень двойки из последовательности: 1, 2, 4, 8, 16, 32, 64 или 128. Если по данному адресу содержится любое другое значение, то найденная нами структура не принадлежит файловой системе FAT.

В статье «Алгоритм восстановления файла на FAT диске» мы рассмотрим поиск содержимого удаленного файла на конкретном примере.

Статья взята с сайта hetmanrecovery.com

0
Комментариев еще не оставлено
Выбрать файл
Читайте далее
Загружаем…
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать