Назад в библиотеку

ОСОБЕННОСТИ ПОИСКА УДАЛЕННЫХ ФАЙЛОВ И КАТАЛОГОВ В ФАЙЛОВОЙ СИСТЕМЕ NTFS

Автор: М. А. Седневец, С. В. Теплинский
Источник: Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ - 2017) : сборник материалов VIII Международной научно-технической конференции в рамках III Международного Научного форума Донецкой Народной Республики, 25 мая 2017г., г. Донецк / ГОУ ВПО "ДОННТУ", Фак. комп. наук и технологий ; редкол.: К.Н. Маренич и др. - Донецк : ДОННТУ, 2017. - С. 655–658.

Аннотация

Седневец М.А., Теплинский С.В. Особенности поиска удаленных файлов и каталогов в файловой системе NTFS. Выполнен анализ методики поиска файлов и каталогов пригодных для восстановления в файловой системе NTFS. Определены основные особенности поиска файлов и каталогов.

Постановка проблемы

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

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

Цель статьи

Провести анализ методики поиска удаленных файлов и каталогов в файловой системе NTFS. Разработать алгоритм поиска удаленных файлов и каталогов пригодных для дальнейшего восстановления.

Общие сведения

Файловая система NTFS была разработана компанией Microsoft для использования в новой на тот момент операционной системе Windows NT. NTFS должна была заменить устаревшую файловую систему FAT имеющую множество ограничений которые не позволяли на основе этой системы создать полноценно многопользовательскую и многозадачную ОС. [1]

Целью было разработать безопасную, надежную, расширяемую систему которая была бы способна не только полноценно заменить FAT но обладать рядом преимуществ. Как мы видим разработка была удачной на данный момент Windows одна из самых популярных операционных систем по всему миру.

Файлы

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

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

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

Файловая таблица MFT

Информация о фалах и каталогах содержится в главной файловой таблице MFT. Даная таблица содержит информацию обо всех файлах и каталогах. Каждому файлу или каталогу соответствует как минимум одна запись.

Формат записи MFT

Формально размер записи MFT содержится в одной из переменных в загрузочном секторе. Но на практике все версии Windows используют фиксированный размер в 1024 байта. Из которых заголовок расположенный в начале файла размером 42 байта и содержащий 12 полей. И 982 байта без четкой структуры который используются для хранения атрибутов.

Адреса записей MFT

В таблице MFT записи пронумерованы. Каждая запись имеет порядковый номер (16 разрядов). Номер автоматически увеличивается при добавлении новой записи.

Адрес файла формируется по такому принципу. Адрес записи в таблице объединяется с порядковым номером (старшие 16 бит) на выходе получаем уникальный базовый адрес файла (64- разряда)

Для обращения к записям используют порядковый номер который как очевидно уникален для каждой записи. Использования такого обращения имеет ряд преимуществ к примеру помогает выявить поврежденный файла рассмотрим небольшой пример. Если ошибка произошла в момент выделения структур данных для нового файла то по уникальному номеру возможно определить какому файлу принадлежит запись новому или предыдущему. Следовательно данный метод используют программы для восстановления данных.[2]

Атрибуты записей MFT

Как уже говорилось в NTFS в отличии от FAT нет жесткой структуры записей. Отдельная запись имеет минимальное структурирование. Иметься заголовок и место для хранения атрибутов. При этом атрибутом может являться что угодно от даты и времени до самого файла.

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

Алгоритм ручного восстановления c использованием Disk Editor и CHKDSK:

  1. Извлекаем из boot-сектора указатель на MFT
  2. Читаем из MFT первую запись (данная запись описывает $MFT)
  3. Находим атрибут $DATA располагающийся по смещению(80h)
  4. Декодируем список отрезков (data runs)
  5. Последовательно читаем все записи в MFT
  6. Анализируем содержимое атрибута $FILE_NAME(30h) (имя файла) в данном атрибуте также храниться ссылку на материнскую директорию
  7. Имена файлов хранятся по смещению EAh от начала сектора в начале которого расположена сигнатура FILE используя любой дисковый редактор с помощью функции поиска вводим имя восстанавливаемого файла в юникоде и ищем его.
  8. Когда искомое значение будем найдено проверяем находиться ли в начале сектора сигнатура FILE если-же она не найдена продолжаем поиск (Флаги: 00h – запись не используется или была удалена, 01h – запись используется и описывает каталог, 02h – запись используется и описывает директорию)
  9. Исправляем 00h на 01h и записываем изменения
  10. Вносим изменения в файл /$MFT: $BITMAP чтобы данная запись вновь использовалась
  11. Удаляем из /$BITMAP номера кластеров используемых восстановленным файлом
  12. Перестраиваем двоичное дерево индексов хранящие содержимое каталога

Последние три пункта удобнее выполнять с помощью CHKDSK [3]

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

Рисунок 1 Алгоритм поиска удаленных данных

Вывод

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

Список литературы

  1. https://ru.wikipedia.org/wiki/NTFS - свободная энциклопедия (NTFS)
  2. https://hetmanrecovery.com/ru/recovery_news/ntfs-file-system-analysis.htm - -Анализ структуры данных файловой системы NTFS Автор-Michael Miroshnichenko
  3. http://samag.ru/archive/article/414 - Восстановление NTFS – undelete своими руками Автор Крис Касперски.