При восстановлении удаленных файлов Content-Aware анализ использует алгоритм поиска сигнатур в целях выявления файлов определенных типов. То есть стандартные подписи файлов используется для обнаружения собственно самих файлов, при этом их заголовки анализируются с целью определения длины файлов.
Однако не все так просто. Стройная работа алгоритма может осложняться в нескольких ситуациях, например, при работе с двоичным форматом файла с высокой стойкостью структуры и с текстовым форматом без структуры вообще.
Обнаружение JPEG изображений
JPEG файлы легко идентифицируются и легко анализируются. Формат хорошо документирован, поэтому разбор заголовка файла, как правило, проходит без проблем. Давайте посмотрим, например, на типичный файл JPEG.
JPEG файлы имеют характерную сигнатуру и хорошо структурированный формат, благодаря чему их достаточно легко обнаружить. Все файлы JPEG начинаются с производной в значении FFD8 и заканчиваются значением FFD9. В данном типе файлов эти подписи могут использоваться несколько раз, чтобы определить эскизы в различных размерах.
Например, Canon EOS 5D создает JPEG файлы следующей структуры.
FFD8 — начало файла FFD8 — первый предварительный просмотр эскизов
FFD9 — конец первого просмотра
FFD8 — второй предварительный просмотр эскизов
FFD9 — конец второго просмотра
FFD9 — конец файла
Как видите, простого обнаружения фиксированных подписей недостаточно. Программа должна проанализировать заголовок файла, учитывая и фактическую структуру файла. Если информация, хранящаяся в заголовке файла, не совпадает с его фактическим содержанием, полученный восстановленный файл может оказаться поврежденным. Поврежденные изображения могут быть восстановлены с помощью специализированного инструмента, такого как RS File Repair.
Обнаружение текстовых файлов
Формат текстовых файлов – полная противоположность графических форматов. Поскольку текстовые файлы вообще не имеют стойкой структуры, найти их достаточно трудно, зато восстановить – проще простого. Даже фрагментированные текстовые файлы могут быть восстановлены (при условии успешной идентификации) и объединены в один файл, если это необходимо. Никаких сложностей с заголовками файлов или с системными структурами не возникнет.
Иногда несмотря на то, что формальные заголовки файлов не доступны (например, для текста или HTML-файла), эти файлы все же могут быть восстановлены. В случае текстовых документов инструмент восстановления данных анализирует блоки данных, пытаясь выяснить, относятся ли блоки к содержимому текстового файла. Решение принимается на основе анализа набора символов файла. Если определенный блок данных содержит в основном ASCII символы из известного набора символов (например, западноевропейской или Unicode, или арабский и т.д.), блок считается принадлежащим текстовому файлу. Окончание такого текстового файла, как правило, определяется после появления определенного количества не-ASCII символов (двоичные данные).
Обнаружение XML и HTML документов
XML и HTML документы структурированы так же, как и текстовые файлы. Как правило, начинаются они одними, а заканчиваются другими тегами. Пока нет четкого механизма поиска двоичных сигнатур, XML и HTML документы могут быть обнаружены путем поиска отдельных тегов (например, открывающих тегов <html>, <body>, <?xml>, закрывающих тегов: </body>, </html> и т.д.). При этом их поиск должен производиться без учета регистра, чтобы могли быть обнаружены теги, написанные даже таким образом: <Body>. Само существование открывающих и закрывающих тегов позволяет точно определять начало и конец таких документов.