Сигнатура файла
Сигнатура — (лат. signature обозначать, указывать). Информатика Сигнатура функции характеристическая часть определения функции в программировании. Сигнатура атаки характеристические особенности компьютерного вируса. Сигнатура… … Википедия
Сигнатура атаки — У этого термина существуют и другие значения, см. Сигнатура. Сигнатура атаки (вируса) характерные признаки атаки или вируса, используемые для их обнаружения. Большинство современных антивирусов, сканеров уязвимостей и систем обнаружения вторжений … Википедия
VHD (формат файла) — Virtual hard disk Расширение файла: .vhd Сигнатура файла: conectix Разработчик: Connectix / Microsoft Тип формата: Образ диска Может содержать: Образ диска виртуальной машины Virtual Hard Disk (VHD) это … Википедия
TIFF — Tagged Image File Format Расширение .tiff, .tif MIME image/tiff, image/tiff fx Разработан Microsoft и Aldus, сейчас Adobe Systems Опубликован 1986 Тип формата растровая графика Развит в … Википедия
Магическое число (программирование) — У этого термина существуют и другие значения, см. Магическое число. Понятие «Магическое число» в программировании имеет два значения: первое второе Содержание 1 Сигнатура данных 2 Плохая практик … Википедия
Волшебное число — Понятие «Магическое число» в программировании имеет два значения: Содержание 1 Сигнатура данных 2 Плохая практика программирования … Википедия
Магическое число (компьютер) — Понятие «Магическое число» в программировании имеет два значения: Содержание 1 Сигнатура данных 2 Плохая практика программирования … Википедия
Xiph Ogg — Ogg Расширение файла: .ogv, .oga, .ogx, .ogg Тип незарегистрирован), audio/ogg ( Сигнатура файла: OggS Разработчик: Тип формата: Мультимедиа контейнер Может содержать: Theora, FLAC, Ogg (читается «ог») открытый стандарт формата мультимедиа… … Википедия
Portable Executable — Переносимый исполняемый файл Расширение .exe, .dll, .ocx, .sys, .scr, .drv, .cpl Сигнатура MZ (опционально), PE Разработан Microsoft Тип формата двоичный, исполняемый, объектный … Википедия
.WAD — Doom WAD Расширение .wad Разработан id Software Тип формата данные .WAD (происходит от англ. Where’s All the Data; слово wad также имеет самостоятельное значение «комок ваты») архивный формат файлов, который использовался в… … Википедия
Что такое сигнатура файла
Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.
What can I do to prevent this in the future?
If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.
If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.
Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.
Cloudflare Ray ID: 71ab1f641d539b9e • Your IP : 82.102.23.104 • Performance & security by Cloudflare
Восстановление файлов по сигнатурам или “черновое” восстановление данных
Чтобы упростить понимание изложенной в этой статье информации, достаточно представить носитель (жесткий диск, флэшку или любой другой) как книгу с содержанием. То есть, на первых страницах этой книги есть оглавление, которое содержит в себе перечень всех разделов, подразделов и глав книги с указанием страниц, на которых они находятся. Идеология хранения цифровых данных точно такая же, только конкретная реализация зависит от файловой системы: NTFS, exFAT, HFS+, APFS и так далее. Содержание бумажной книги — аналог файловой системы цифрового носителя. Только в первом приближении, конечно. Если открыть любой исправный жесткий диск в проводнике Windows, мы увидим примерно такую картину:
Если развернуть любую из этих папок, то откроется ее содержимое: 
Все, что мы видим в проводнике – имена файлов и папок, их размеры, дата создания и изменения, все эти сведения и хранятся в файловой системе, которую мы договорились называть “оглавлением”. Физически файловая система – это область диска, выделенная для хранения этих данных, которые ещё называют “метаданными”, то есть “данными о данных”. Когда мы удаляем файл или папку с жесткого диска, в файловой системе (оглавлении нашей книги) удаляется соответствующая запись (или просто помечается как удаленная), сами же данные при этом остаются на диске, но то место, которое они занимали теперь считается незанятым, а значит, когда мы будем записывать новые файлы, эта область диска может быть ими перезаписана. Именно поэтому после случайного удаления никогда не следует ничего записывать на диск или флэшку, ведь чем больше информации вы запишете на диск после случайного удаления файлов, тем больше вероятность, что старые данные будут перезаписаны новыми, и тогда восстанавливать уже будет нечего.
- случайное форматирование с последующей записью;
- физическое повреждение жесткого диска или флэшки, когда область диска с файловой системой не читается;
- воздействие вирусов, а как же без них!
Конечно, при восстановлении данных чаще всего стараются реанимировать файловую систему целиком, чтобы нужные файлы снова оказались разложены по тем же каталогам, где они лежали до сбоя. Но это не всегда возможно и тогда прибегают к “последнему шансу”: восстановлению данных по сигнатурам.
Что такое сигнатура файла?
Как известно, данные в файлах хранятся в цифровом виде. Для того, чтобы отличить один тип файла от другого и придумана сигнатура, то есть подпись (разумеется, тоже цифровая). Она размещена в начале файла и является идентификатором типа файлов. Это проще показать, чем рассказать. Рассмотрим сигнатуру файла на примере распространенного формата для хранения фотографий jpeg. Если открыть любой файл jpeg в шестнадцатеричном редакторе, то мы увидим одну и ту же последовательность символов в одном и том же месте:
Последовательность FF D8 FF в начале первого сектора каждого файла — это и есть сигнатура: идентификатор файла, который означает, что это — именно jpeg файл.
Сигнатуры есть не у всех типов файлов: если, например, открыть в шестнадцатеричном редакторе текстовый файл (с расширением txt), то мы обнаружим, что там нет никакой сигнатуры: с самого первого байта начинается текст:

- avi (Audio Video Interleave video format): 52 49 46
- mp3 (MPEG-1 Layer 3 file): FF FB, FF F3, FF F2
- tiff (Tagged Image File Format): 49 49 2A 00
Как восстанавливают файлы по сигнатурам
Рассмотрим алгоритм восстановления данных на примере все того же формата jpeg — он наиболее удобен для понимания. Для примера смоделируем ситуацию случайного форматирования флэшки. Для начала я заполнил все сектора нашей подопытной флэшки нулями, чтобы гарантировать, что на ней не останется никаких данных от предыдущих файловых систем. Я сделал это “для чистоты эксперимента”, в реальной жизни все несколько сложнее, но об этом позже. Теперь все сектора флэшки содержат только нули, то есть на ней нет совсем никакой информации, включая файловую систему и даже таблица разделов отсутствует. Такая флэшка, если вставить ее в USB разъем компьютера, то операционная система предложит ее отформатировать:

А если открыть ее в оснастке “Управление дисками”, то мы увидим, что на ней нет файловой системы:

Компьютер воспринимает ее файловую систему как RAW, то есть “сырые данные”, а проще говоря, — их отсутствие в нашем случае. Теперь отформатируем флэшку в файловую систему NTFS и запишем на нее файлы jpeg:

Я создал на флэше одну папку с именем “Осень 2020” и записал в нее 129 файлов jpeg в среднем качестве: каждый файл занимает приблизительно 4-5 Мб дискового пространства. Если теперь еще раз отформатировать эту флэшку, то она будет отображаться в проводнике как пустой диск:

Мы смоделировали ситуацию случайного форматирования флэшки. Займемся восстановлением данных с нее. Вообще-то алгоритм восстановления данных по сигнатурам – самый простой из существующих, и он реализован в очень многих программах автоматического восстановления данных, в том числе бесплатных, но профессиональные лаборатории, конечно используют соответствующее их статусу оборудование и программное обеспечение. Мы воспользуемся программно-аппаратным комплексом PC3000 UDMA. Разумеется, функция поиска файлов по сигнатурам входит в его арсенал.
После создания задачи восстановления данных в комплексе PC-3000 мы увидим такую картину:

Во время последнего форматирования была создана новая файловая система NTFS, которая содержит служебные файлы, созданные ей самой. Эти файлы не отображаются в проводнике Windows, но они показаны в программе восстановления данных. Однако данных предыдущей файловой системы, конечно не видно. Проведем сканирование нашей флэшки поиском по сигнатурам:

Как видите, найдены все файлы, которые были на флэшке до форматирования: 129 файлов с расширением jpeg. Как программа находит файлы по сигнатурам? Она просто сканирует всю флэшку, начиная с нулевого сектора и ищет в начале каждого сектора соответствующую шестнадцатеричную последовательность. В нашем случае – это сигнатура jpeg файла FF D8 FF . Найдя такую последовательность в начале сектора алгоритм считает, что все, что следует дальше – это jpeg файл. Но нужно еще определить, где он заканчивается. В случае jpeg это не трудно – все jpeg файлы всегда заканчиваются последовательностью FF D9 , в чем легко убедиться, если открыть такой файл в шестнадцатеричном виде и посмотреть на два его последних байта:
Такую последовательность программа считает окончанием текущего файла. Осталось только сохранить в памяти смещение, по которому находится начало файла и его размер и можно двигаться дальше в поисках следующего. Итак, все файлы найдены и теперь их можно сохранить на диск (разумеется не на тот же, с которого мы восстанавливаем данные). После сохранения, зайдя в папку с восстановленными файлами, мы видим, что восстановление прошло корректно:

Но здесь мы обнаружим одну особенность: файлы имеют другие названия, а главное они все сложены в одну папку. Почему? Потому, что информация об именах файлов, каталогах в которых они хранились (и множество других атрибутов файлов), хранится только в файловой системе. А при поиске по сигнатурам эту информацию просто негде взять. Это один из существенных минусов способа чернового восстановления данных, но не единственный. Об остальных позже.
Стоит отметить, что jpeg – это, пожалуй, один из самых простых форматов для восстановления по сигнатурам, именно поэтому я взял его в качестве примера. Алгоритм восстановления файлов других форматов сложнее и имеет в каждом случае свои особенности: например, многие форматы файлов не имеют признака окончания файла. Тогда для определения последнего сектора файла используется либо начало следующего файла, либо размер определяется по метаданным, которые содержатся в самом файле. Более сложные алгоритмы восстановления данных учитывают все эти нюансы, которые у каждого типа файлов свои, их описание выходит за рамки этой статьи.
Итак, восстановить данные по сигнатурам несложно, это умеют делать многие программы автоматического восстановления, но в некоторых случаях не помогает даже такой метод, а в некоторых случаях такой метод хоть и восстанавливает данные, но без информации об их размещении он не имеет смысла. Рассмотрим эти случаи.
Когда восстановление по сигнатурам не поможет?
- удаленные файлы были перезаписаны новыми данными;
- файлы были фрагментированы на диске;
- данные на диске были зашифрованы;
- файлы восстановлены корректно, но без информации о структуре папок и именах файлов, эти данные бессмысленны;
Удаленные файлы были перезаписаны новыми данными
Тут все просто. И проблема, конечно, не в алгоритме восстановления файлов, а в том, что нужных данных уже просто нет на диске – они перезаписаны новой информацией. В этом случае не поможет уже никто, что бы там не утверждали конспирологи и параноики. Впрочем, на эту тему мы еще напишем статью. Когда она будет готова, здесь появится ссылка.
Файлы были фрагментированы на диске
Что значит “фрагментированы”? Такая ситуация возникает, когда диском или флэшкой активно пользуются (то есть почти всегда): записывают какие-то данные, потом удаляют ненужную или устаревшую информацию, затем снова записывают новые данные и так далее. В этом случае дисковое пространство становиться похоже на лоскутное одеяло: сначала идет часть с данными, потом пробелы, потом снова данные, снова пробелы из свободного пространства и так далее до конца диска. И если на диск нужно записать новый файл достаточно большого объема, то файловая система ищет на диске большую свободную область, и если весь файл туда не помещается, то записывает туда начало файла, затем дописывает оставшуюся часть (или части) в другую область диска. В этом случае один файл может быть разбит на несколько разных фрагментов, а информация о том, где какой фрагмент находится, хранится опять же в файловой системе (помните про оглавление книги), только теперь уже одному файлу соответствует не одна строчка в нашем оглавлении, а несколько, в зависимости от количества фрагментов, на которые он был разбит. И если этих записей больше нет в файловой системе, то никакой поиск не поможет восстановить файл целиком: ведь по сигнатуре мы можем определить только начало файла, а вот где находится его продолжение алгоритм уже не сумеет определить: эта информация хранится только в самой файловой системе и нигде больше ее нет. Поэтому восстановление файлов по сигнатурам не сработает в случае с фрагментированными файлами. Такие фалы либо вообще не будут открываться, либо будут “битыми” (поврежденными). Вот как выглядит такой “битый”, частично восстановленный файл, на примере все того-же jpeg:

Найдено только начало изображения, где находится его вторая половина — неизвестно.
Данные на диске были зашифрованы
Здесь тоже все понятно: зашифрованные файлы с точки зрения любой внешней программы восстановления выглядят как бессмысленная “каша”, найти в ней какие-то разумные последовательности, в том числе сигнатуры файлов попросту невозможно. Вообще-то именно в этом и состоит смысл шифрования, — было бы странно если бы было иначе. А это значит, что восстановить зашифрованные данные можно только имея ключ, которым они были зашифрованы. Впрочем, тема шифрования, как и тема восстановления зашифрованных данных слишком обширна и не так однозначна, как может показаться на первый взгляд. Мы обязательно поднимем ее позже. Следите за новостями.
Требуется полноценное восстановление файловой системы
Часто бывает, что для получения доступа к данным недостаточно извлечь сами файлы, требуется еще и восстановление имен файлов и папок, в которых они были разложены. Например, это необходимо, если сами файлы были частью какого-то структурированного набора данных: базы 1С, коллекцией музыкальных сэмплов, и т.п. В этом случае требуется полноценное восстановление файловой системы со всей структурой папок, иначе программа не заработает, а сами данные будут бессмысленны для пользователя.
Резюмируя, можно сказать, что рассмотренный в этой статье метод восстановления данных по сигнатурам хорошо подходит для восстановления фотографий, а также небольших по объему медиа файлов или документов Office, но только тогда, когда они не фрагментированы и информация об их размещении не важна. Во всех остальных случаях метод чернового восстановления не дает качественного результата.
Ну а у меня на сегодня все. Берегите себя и свои данные! Автор: Вадим Шестернин aka WAIK. Лаборатория восстановления данных Advanced Group, Санкт-Петербург 11.09.2020.