Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике: https://hetmanrecovery.com/ru/recovery_news/fat-file-system-analisis.htm
Читайте об особенностях восстановления данных с носителя отформатированного в FAT. Существует множество файловых систем: FAT, NTFS, HFS и множество других. Но FAT, одна из самых старых и самых простых файловых систем, по-прежнему широко используется. В FAT32 форматируются практически все карты памяти, используемые в цифровых фотоаппаратах.
Файловая система FAT
FAT используется в большинстве портативных аудиоплееров и навигаторов. Даже мобильные телефоны и планшеты под управлением Android используют карты памяти (к примеру, miniSD, microSD), отформатированные в FAT32.
Да, FAT обладает рядом ограничений, как на максимальный объём раздела, так и на максимальный размер файла (в частности, фильмы в HD качестве бывает невозможно разместить одним файлом на разделе, отформатированном в FAT). Да, эта файловая система достаточно примитивна и не обладает встроенными средствами контроля целостности информации, встроенным сжатием и шифрованием, а также разделением прав доступа. Зато у FAT есть свои преимущества: компактность (под нужды файловой системы отводится совсем немного места), простота реализации и низкая ресурсоёмкость. Все эти достоинства и обусловили популярность файловой системы FAT среди разработчиков мобильных устройств.
Файловая система FAT: а что внутри?
Раз файловая система FAT настолько популярна, то востребованы и инструменты для восстановления данных с дисков, отформатированных с использованием этой файловой системы. В этой статье мы расскажем о внутреннем устройстве файловой системы в контексте алгоритмов, использованных в программах для восстановления FAT раздела.
Для начала стоит рассказать о том, почему восстановление удалённых файлов вообще возможно. Дело в том, что при удалении файла операционная система не стирает и не перезаписывает его содержимого: это было бы неоправданно долго. Вместо этого система просто делает пометку в соответствующей записи файловой системы, освобождая, таким образом, занятые удалённым файлом сектора на диске для использования другими программами.
Этот-то механизм и позволяет специализированным программам восстанавливать содержимое файлов. Достаточно считать записи файловой системы, идентифицировать записи, соответствующие удалённым файлам, и восстановить точные физические адреса этих файлов по данным, взятым опять же из файловой системы. Дальнейшее – дело техники.
К сожалению, такой простой подход возможен не всегда. Если файл был удалён какое-то время назад, или если записи в файловой системе были стёрты или перезаписаны, программе придётся сканировать всю поверхность диска с помощью алгоритмов сигнатурного поиска. Эти алгоритмы работают по принципу антивируса, идентифицируя файлы по известным сигнатурам. У такого подхода есть ряд ограничений: низкая скорость работы, ограниченное количество поддерживаемых форматов и невозможность полноценного восстановления фрагментированных файлов. Тем не менее, на практике эти алгоритмы прекрасно работают, ведь наиболее ценные файлы (документы, фотографии и т.п.) часто бывают небольшого размера и практически не фрагментируются.
Если же требуется восстановить фрагментированный файл, программе приходится комбинировать данные сигнатурного поиска и информацию, полученную из файловой системы – например, для того, чтобы исключить из рассмотрения сектора диска, заведомо занятые другими файлами.
Данные файловой системы
Итак, предположим, что нам нужно восстановить достаточно большой файл, который записан на диске в виде множества фрагментов. С помощью сигнатурного поиска мы сможем найти начало файла, проанализировать заголовок и определить его длину. Но если мы попытаемся сохранить данные, записанные на диске последовательно после заголовка нужного файла, то успешно восстановится только его начало – самый первый сектор. Остальные секторы могут принадлежать другим файлам. Соответственно, наша задача – использовать данные из файловой системы для того, чтобы точно определить: в какой последовательности и в какие именно секторы на диске записаны данные этого файла.
Для того чтобы ориентироваться в записанной на диск информации, Windows создает запись в файловой системе. В этой записи хранится информация, указывающая на то, какие именно секторы на диске (и в какой именно последовательности) содержат данные конкретного файла.
В поисках файловой системы
Рис.1 Жесткий диск разбит на разделы.
Для того чтобы использовать данные из файловой системы, саму файловую систему требуется найти. Прежде, чем говорить о файловой системе, нужно кратко описать систему разделов Windows.
Диски в Windows описываются системой разделов, которая содержит одну или несколько таблиц. Каждая таблица описывает один раздел. В записи указывается физический адрес начального сектора раздела и его конечный сектор (или длина). Помимо этого указывается также и тип раздела.
Для того чтобы найти файловую систему, программа проанализирует таблицу разделов Windows, если таковая сохранилась. Но что, если таблицы разделов не существует или в ней содержится неактуальная информация (например, нужный нам раздел был удалён, а на его месте был создан другой раздел)? В этом случае программа прибегнет к сканированию диска с целью поиска файловой системы.
Раздел Начало Конец Тип
System (С:) 0 199 NTFS
Archive (D:) 200 399 FAT
Work (E:) 400 599 FAT
Таб.1 Таблица с информацией о начале, конце и типе каждого раздела.
Для поиска файловой системы будем исходить из предположения, что в каждом разделе диска находилась файловая система. Как правило, файловые системы можно идентифицировать по некоторой постоянной сигнатуре. Например, файловую систему FAT можно идентифицировать по значениям, записанным в байты 510 и 511 первого сектора. Если значения по этим адресам – 0x55 и 0хАА соответственно, то можно приступить к дополнительной проверке.
Дополнительные проверки позволяют отличить случайно встреченную последовательность данных от истинной сигнатуры файловой системы. Проверяется, например, диапазон значений, допустимых для некоторых полей структуры данных. Одно из полей файловой системы FAT определяет количество секторов в кластере. Его значение всегда представляет собой степень двойки из последовательности: 1, 2, 4, 8, 16, 32, 64 или 128. Если по данному адресу содержится любое другое значение, то найденная нами структура не принадлежит файловой системе FAT.
В статье «Алгоритм восстановления файла на диске FAT» мы рассмотрим поиск содержимого удаленного файла на конкретном примере.
Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике: https://hetmanrecovery.com/ru/recovery_news/fat-file-system-analisis.htm
В этой статье я хотел бы рассказать об алгоритме, который мы использовали при создании программы для восстановления данных Hetman Partition Recovery.
Windows система разделов содержит одну или несколько таблиц, при этом каждая запись таблицы описывает один раздел. В данных записи обычно указывается начальный сектор раздела, конечный сектор раздела (или длина) и тип раздела.
Для поиска файловой системы наша программа исходит из предположения, что в каждом разделе находилась файловая система. Многие файловые системы начинаются со структуры данных с постоянной сигнатурой. Например, файловая система FAT содержит значения 0x55 и 0хАА в байтах 510 и 511 первого сектора. Программа восстановления ищет сигнатуры и определяет по ним возможное начало раздела. При обнаружении сигнатуры часто выполняются дополнительные проверки с диапазонами значений, допустимых для некоторых полей структуры данных. Например, одно из полей файловой системы FAT определяет количество секторов в кластере; значение поля представляет собой степень 2 (например, 1, 2, 4, 8, 16, 32, 64 или 128). Любое другое значение свидетельствует о том, что сектор не является частью загрузочного сектора файловой системы FAT, хотя он и заканчивается сигнатурой 0х55АА.
Как найти файл в FAT таблице
Основная концепция файловой системы FAT заключается в том, что каждому файлу и каталогу выделяется структура данных, называемая записью каталога. В этой структуре хранится имя файла, его размер, начальный адрес содержимого файла и другие метаданные. Содержимое файлов и каталогов хранится в блоках данных, называемых кластерами. Если файлу или каталогу выделяется более одного кластера, остальные кластеры находятся при помощи структуры данных, называемой FAT. Структура FAT используется как для идентификации следующих кластеров в файлах, так и для определения состояния выделения кластеров.
Файловая система FAT делится на три физические области. Первая область называется зарезервированной, в ней хранятся данные из категории файловой системы. В FAT12 и FAT16 зарезервированная область занимает всего 1 сектор, но формально ее размер определяется в загрузочном секторе. Вторая область FAT — содержит основные и резервные структуры FAT. Она начинается в секторе, следующем за зарезервированной областью, а ее размер определяется количеством и размером структур FAT. Третья область — область данных содержит кластеры, выделяемые для хранения файлов и содержимого каталогов.
Одной из первых задач при анализе файловой системы FAT должна стать идентификация трех физических областей. Зарезервированная область начинается в секторе 0 файловой системы, а ее размер указан в загрузочном секторе. В FAT 12/16 она обычно занимает всего 1 сектор, а в FAT32 для нее резервируются несколько секторов.
Область FAT содержит одну или несколько структур FAT и начинается в секторе, следующем за зарезервированной областью. Ее размер вычисляется умножением количества структур FAT на размер одной структуры; оба значения хранятся в загрузочном секторе (зарезервированная область).
Восстановление файлов
При удалении файла в Windows его запись каталога помечается как неиспользуемая, а записи кластеров в FAT обнуляются (рис. 9.18). Начало и размер файла известны, но информация об остальных кластерах файла отсутствует.
Можно попытаться восстановить содержимое файла, прочитав данные из известного начального кластера. Что касается выбора остальных кластеров, у программы восстановления есть два метода: читать объем данных, соответствующий размеру файла, не обращая внимания на состояние выделения, или же читать данные только из свободных кластеров.
В случае, если файлы фрагментированы и файловая система повреждена или уничтожена (например, после форматирования диска), инструменты восстановления данных используют алгоритмы поиска по сигнатурам, считывающие все данные с поверхности жёсткого диска с целью обнаружения известных типов файлов.
И здесь кроется основная сложность. Алгоритмы сигнатурного поиска в своей работе зависят от структур заголовков файлов, проанализировав которые, возможно определить размер файла. Обладая информацией о местоположении заголовка и зная точный размер файла, программы вычисляют сектора на диске, которые, по их мнению, содержат данные файла. Как вы понимаете, корректно работать эти алгоритмы будут только в условиях, когда весь файл целиком хранится в виде одного непрерывного фрагмента. Если же файл был сохранён в виде множества разрозненных фрагментов, восстановить его в отсутствие записи в файловой системе будет чрезвычайно тяжело, практически невозможно.
Но и для таких случаев существуют специальные методы, которыми пользуются спецслужбы и криминалисты, позволяющие восстановить содержимое некоторых типов файлов буквально по кусочкам. Их работа похожа на сбор пазла: различные фрагменты данных пробуются в разных местах файла, после чего с помощью эвристических алгоритмов файл анализируется на целостность. Нужно ли говорить, что работа таких алгоритмов чрезвычайно ресурсоёмка, но при этом настолько медленна и ненадёжна, что использовать их вне стен криминалистических лабораторий просто невыгодно.
Автор: cigulev
Источник
АрхивСистема
При восстановлении данных на жестком диске бывает непросто понять, что содержится в выбранном наугад секторе. Зная характерные признаки FAT, загрузочных записей и каталогов, вы можете отличить их от обычных файлов.
При восстановлении данных на жестком диске бывает непросто понять, что содержится в выбранном наугад секторе. Зная характерные признаки FAT, загрузочных записей и каталогов, вы можете отличить их от обычных файлов.
Таблица FAT. Если диск не слишком фрагментирован, то номер следующего кластера в таблице FAT на единицу больше номера предыдущего. Это и есть характерный признак, по которому можно обнаружить FAT. Скриншот показывает таблицу с номерами кластеров 18 0A 2D, 18 0A 2E, 18 0A 2F, 18 0A 30 и так далее. Если FAT показана в текстовом виде, то кое-где попадаются буквы A, B, C, D или цифры 0, 1, 2, 3, 4 (в FAT32 они расположены через каждые 4 символа, так как элемент FAT занимает 4 байта).
Таблица FAT32
Каталог (Directory). Каталог в файловой системе FAT содержит короткие имена файлов, записанные заглавными буквами, а также длинные имена в кодировке Unicode.
Каталог с короткими и длинными именами файлов
На скриншоте заметны короткие имена файлов Progra~1, Docume~1 и длинные Program files, Documents and Settings (последнее имя файла оказалось разбитым на два элемента каталога). Каждый элемент каталога занимает 32 байта, то есть две строчки в шестнадцатеричном редакторе. Выбрав View > As Directory в меню Norton Disk Editor, вы увидите тот же каталог в наглядном представлении.
Загрузочная запись (Boot Record). Загрузочная запись всегда заканчивается двумя символами с кодами 55 AA. Первые ее символы для операционных систем Windows 9x/XP равны EB 58 90, затем идет строка MSWIN4.1. В загрузочной записи можно найти метку диска, тип файловой системы (FAT12, FAT16, FAT32 или NTFS), а также сообщения об ошибках. Например, на диске Windows 9x вы прочтете “Invalid system disk”, “Disk I/O error”, “Replace the disk, and then press any key”, а в Windows XP – “NTLDR is missing”, “Disk error”, “Press any key to restart”.
Загрузочная запись (выделены текстовые строки)
Если выбрать View > As Boot Record (32), должны появиться правдоподобные данные: параметр Bytes per Sector всегда равняется 512, Number of FATs = 2, Sectors per Track = 63, File System Ver (major и minor) = 0, а в Volume Label будет указана метка диска.
Таблица разделов (Partition Table или Master Boot Record, MBR). Как и загрузочная запись, таблица разделов заканчивается байтами 55 AA. Именно поэтому в Norton Disk Editor команда поиска (Tools > Find Object > Partition / Boot) не различает их. Напомним, что таблица разделов расположена в самом первом секторе физического диска, а загрузочная запись – в начале логического диска (раздела). Таблица разделов указывает число, размер логических дисков и тип файловой системы на каждом них, а загрузочная запись – параметры только одного логического диска.
MBR в Windows 9x/XP содержит строки “Invalid partition table”, “Error loading operating system”, “Missing operating system”. При выборе View > As Partition Table должна быть показана таблица с реально существующими разделами данного жесткого диска.
Файловая система FAT получила своё название от своего основного компонента: таблицы размещения файлов. Эта файловая система существует с 1980-х годов. Microsoft продвигала его через свои операционные системы DOS и Windows.
Содержание
- Как работает файловая система FAT?
- Как мне восстановить утерянные данные?
- Как восстановить данные с помощью Disk Drill?
- FAT Быстрое и глубокое сканирование
- Как сузить поиск файлов?
- Как предотвратить потерю данных?
- Как создать резервную копию с помощью Disk Drill?
Как работает файловая система FAT?
Первоначально, используя 8 бит на запись, он превратился в версии FAT12, FAT16 и FAT32, каждая из которых использует 12, 16 и 32 бит соответственно. Обычно Microsoft не делает различий между старыми версиями и называет их FAT.
Основным элементом этой файловой системы является таблица размещения файлов (FAT), которая выделяется во время форматирования. Система FAT делит дисковое пространство на кластеры. Таблица FAT содержит записи для каждого кластера. Для используемых кластеров каждая запись содержит номер следующего кластера или маркер конца файла. В противном случае он различает неиспользуемые и зарезервированные кластеры. Зарезервированы — это специальные кластеры, используемые операционной системой.
Каталоги описаны в той же таблице. В случае корневого каталога таблица FAT содержит номер первого кластера каждого файла в этом каталоге. Используя его, операционная система может строить цепочку кластеров до тех пор, пока не достигнет маркера конца файла. Аналогичным образом обрабатываются подкаталоги.
Файловая система FAT32 имеет ограничение на максимальный размер файла в 4G, которое связано с длиной записи в таблице каталогов.
В целом архитектура файловой системы FAT проста, эффективна и прошла проверку временем. Он по-прежнему используется, являясь файловой системой по умолчанию на многих съёмных устройствах хранения, таких как USB-накопители, флэш-карты и карты твердотельной памяти и многие другие.
В основном это учитывают все операционные системы. Компьютеры Apple, использующие операционную систему MacOS X, поддерживают её на томах, отличных от загрузочного диска. Таким образом, FAT является наиболее распространённой архитектурой файловой системы.
Как мне восстановить утерянные данные?
Удаление файла в файловой системе FAT просто означает его удаление из таблицы FAT. Данные остаются нетронутыми до тех пор, пока кластеры не будут перезаписаны другим файлом. В результате удалённые данные можно восстановить с помощью некоторого программного обеспечения для восстановления FAT, такого как Disk Drill, до того, как пространство хранения снова будет использовано.
Disk Drill доступен для компьютеров под управлением Windows и Mac. Базовая версия доступна для бесплатной загрузки. Полная версия является коммерческой.
Как восстановить данные с помощью Disk Drill?
Disk Drill можно эффективно использовать для восстановления потерянных файлов с устройства хранения с помощью файловой системы FAT. Есть два варианта, которые доступны через меню:
- Быстрое сканирование.
- Глубокий анализ.
Сначала можно попробовать быстрое сканирование, например, после недавнего удаления. Глубокое сканирование предлагает возможность поиска старых потерянных файлов.
Восстановление данных бесплатно.
Ваш помощник для восстановления удалённых файлов.
Скачать бесплатно
FAT Быстрое и глубокое сканирование
После выбора быстрого или глубокого сканирования Disk Drill продолжит процесс восстановления данных fat 32. Результаты представлены вместе с меню с опциями для выбора различных типов файлов. Кроме того, он может фильтровать по размеру и дате.
Fat 32 восстановление данных. Сканирование можно приостановить в любое время и продолжить позже (опция ПАУЗА). Сеанс также можно сохранить для дальнейшего использования (опция СОХРАНИТЬ СЕССИЮ).
Как сузить поиск файлов?
Восстановление жирных данных с помощью Disk Drill можно сделать более эффективно, используя параметр «Настройки». Эта опция позволяет сузить поиск, выбрав определённый тип файла.
Как предотвратить потерю данных?
Потерю данных можно легко предотвратить, используя опцию защиты и включив Recovery Vault.
Хранилище восстановления — это, по сути, ещё один слой, добавляемый в корзину. Это ещё одна линия защиты от потери данных.
В качестве альтернативы для Mac можно использовать Гарантированное восстановление (GR). Если этот параметр включён, он сохраняет копию любого файла, отправленного в указанную папку, например, в корзину.
Как создать резервную копию с помощью Disk Drill?
В меню «Дополнительно» Disk Drill имеет параметр «Резервное копирование в восстанавливаемый образ диска». Этот выбор обеспечивает резервное копирование данных в трёх различных форматах файлов: img, dmg и iso. Позднее файлы можно будет получить с помощью Disk Drill или любого другого приложения для создания изображений файлов.
Этот инструмент предназначен для управления файловыми системами FAT для изучения, извлечения, восстановления и экспертизы.
В настоящее время он поддерживает FAT12, FAT16 и FAT32.
Содержание
- Сборка и установка
- Исследование
- Список
- Чтение файла
- Восстановить после удаления
- Взлом
- Информация
- Резервное копирование и восстановление FAT
- Запись в FAT
- Сравнение и объединение FAT
Сборка и установка
Вы можете собрать fatcat таким образом:
# mkdir build # cd build # cmake .. # make
И после установить:
# make install
Исследование
Использование fatcat
Fatcat принимает image в качестве аргумента:
# fatcat disk.img [options]
Вы можете указать -O, что может быть полезно, если на блочном устройстве имеется несколько разделов:
# fatcat disk.img -O 1048576 [options]
Это fatcat, что начинать надо с 1048576-го байта.
Список
Вы можете изучить раздел FAT с помощью опции -l следующим образом:
# fatcat disk.img -l / Listing path / Cluster: 2 d 24/10/2013 12:06:00 some_directory/ c=4661 d 24/10/2013 12:06:02 other_directory/ c=4662 f 24/10/2013 12:06:40 picture.jpg c=4672 s=532480 (520K) f 24/10/2013 12:06:06 hello.txt c=4671 s=13 (13B)
Также вы можете указать путь, например -l / some /directory
Используя -L, вы можете указать номер кластера вместо пути
Если вы добавите -d, вы также увидите удаленные файлы
В листинге префикс f или d предназначен для строки, относящейся к файлу или каталогу
C = указывает номер кластера, s = указывает площаль в байтах.
Буква h в конце указывает, что файл должен быть скрыт.
Буква d в конце указывает, что файл был удален.
Чтение файла
Вы можете прочитать файл с использованием -r, файл будет записан на стандартный вывод:
# fatcat disk.img -r /hello.txt Hello world! # fatcat disk.img -r /picture.jpg > save.jpg
Используя -R, вы можете указать количество кластеров, которое подходит, если вы не предоставите параметр -s, чтобы указать размер файла для чтения.
Вы можете использовать -x для извлечения каталогов файловой системы FAT в каталог:
# fatcat disk.img -x output/
Если вы хотите извлечь из определенного кластера, предоставьте ему опцию -c.
Если вы предоставите -d для извлечения, также будут извлечены удаленные файлы.
Восстановить после удаления
Просмотр удаленных файлов и каталогов
Как объяснялось выше, списки файлов, с опцией -d:
# fatcat disk.img -l / -d f 24/10/2013 12:13:24 delete_me.txt c=5764 s=16 (16B) d
Вы можете изучить и найти файл или интересную удаленную директорию.
Извлечение удаленного файла
Чтобы получить удаленный файл, просто используйте -r для его чтения. Обратите внимание, что созданный файл будет читаться смежно из исходной системы FAT и может быть сломан.
Удаленный изъятый каталог
Чтобы получить удаленный каталог, обратите внимание на его номер кластера и извлеките его, как указано выше:
Если ваш удаленный кластер каталогов равен 71829
# fatcat disk.img -x output / -c 71829
Взлом
Вы можете использовать fatcat для взлома файловой системы FAT
Информация
Флаг -i предоставит вам много информации о файловой системе:
# fatcat disk.img -i
Он вернет вам данные заголовков, такие как размеры секторов, площаль, метки дисков и т. д.
Он прочитает таблицу FAT для оценки использования диска.
Таким образом, вы можете получить информацию о конкретном кластере, используя – @:
# fatcat disk.img -@ 1384
Это действие даст вам адрес кластера и значение следующего кластера в двух таблицах FAT.
Резервное копирование и восстановление FAT
Вы можете использовать -b для резервного копирования таблиц FAT:
# fatcat disk.img -b backup.fats
И используйте -p, чтобы записать его обратно:
# fatcat disk.img -p backup.fats
Запись в FAT
Вы можете писать в таблицы FAT с помощью -w и -v:
# fatcat disk.img -w 123 -v 124
Это действие будет писать 124 как значение следующего кластера 123.
Таким образом, вы можете выбрать таблицу с -t, 0 – обе таблицы, 1 – первая и 2 -вторая.
Сравнение и объединение FAT
Вы можете взглянуть на разницу двух FAT, используя -2:
Смотрим различия
# fatcat disk.img -2 Comparing the FATs FATs are exactly equals
Запись 123 в 500-м кластере только в FAT1
# $ fatcat disk.img -w 500 -v 123 -t 1 Writing next cluster of 500 from 0 to 123 Writing on FAT1
Смотрим различия
# $ fatcat disk.img -2 Comparing the FATs [000001f4] 1:0000007b 2:00000000 FATs differs It seems mergeable