что такое сигнатура файла
Восстановление файлов по сигнатурам или “черновое” восстановление данных
Как данные хранятся на диске?
Если развернуть любую из этих папок, то откроется ее содержимое:
Все, что мы видим в проводнике – имена файлов и папок, их размеры, дата создания и изменения, все эти сведения и хранятся в файловой системе, которую мы договорились называть “оглавлением”. Физически файловая система – это область диска, выделенная для хранения этих данных, которые ещё называют “метаданными”, то есть “данными о данных”. Когда мы удаляем файл или папку с жесткого диска, в файловой системе (оглавлении нашей книги) удаляется соответствующая запись (или просто помечается как удаленная), сами же данные при этом остаются на диске, но то место, которое они занимали теперь считается незанятым, а значит, когда мы будем записывать новые файлы, эта область диска может быть ими перезаписана. Именно поэтому после случайного удаления никогда не следует ничего записывать на диск или флэшку, ведь чем больше информации вы запишете на диск после случайного удаления файлов, тем больше вероятность, что старые данные будут перезаписаны новыми, и тогда восстанавливать уже будет нечего.
Конечно, при восстановлении данных чаще всего стараются реанимировать файловую систему целиком, чтобы нужные файлы снова оказались разложены по тем же каталогам, где они лежали до сбоя. Но это не всегда возможно и тогда прибегают к “последнему шансу”: восстановлению данных по сигнатурам.
Что такое сигнатура файла?
Как известно, данные в файлах хранятся в цифровом виде. Для того, чтобы отличить один тип файла от другого и придумана сигнатура, то есть подпись (разумеется, тоже цифровая). Она размещена в начале файла и является идентификатором типа файлов. Это проще показать, чем рассказать. Рассмотрим сигнатуру файла на примере распространенного формата для хранения фотографий jpeg. Если открыть любой файл jpeg в шестнадцатеричном редакторе, то мы увидим одну и ту же последовательность символов в одном и том же месте:
Сигнатуры есть не у всех типов файлов: если, например, открыть в шестнадцатеричном редакторе текстовый файл (с расширением txt), то мы обнаружим, что там нет никакой сигнатуры: с самого первого байта начинается текст:
Как восстанавливают файлы по сигнатурам
А если открыть ее в оснастке “Управление дисками”, то мы увидим, что на ней нет файловой системы:
Я создал на флэше одну папку с именем “Осень 2020” и записал в нее 129 файлов jpeg в среднем качестве: каждый файл занимает приблизительно 4-5 Мб дискового пространства. Если теперь еще раз отформатировать эту флэшку, то она будет отображаться в проводнике как пустой диск:
Мы смоделировали ситуацию случайного форматирования флэшки. Займемся восстановлением данных с нее. Вообще-то алгоритм восстановления данных по сигнатурам – самый простой из существующих, и он реализован в очень многих программах автоматического восстановления данных, в том числе бесплатных, но профессиональные лаборатории, конечно используют соответствующее их статусу оборудование и программное обеспечение. Мы воспользуемся программно-аппаратным комплексом PC3000 UDMA. Разумеется, функция поиска файлов по сигнатурам входит в его арсенал.
После создания задачи восстановления данных в комплексе PC-3000 мы увидим такую картину:
Во время последнего форматирования была создана новая файловая система NTFS, которая содержит служебные файлы, созданные ей самой. Эти файлы не отображаются в проводнике Windows, но они показаны в программе восстановления данных. Однако данных предыдущей файловой системы, конечно не видно. Проведем сканирование нашей флэшки поиском по сигнатурам:
Такую последовательность программа считает окончанием текущего файла. Осталось только сохранить в памяти смещение, по которому находится начало файла и его размер и можно двигаться дальше в поисках следующего. Итак, все файлы найдены и теперь их можно сохранить на диск (разумеется не на тот же, с которого мы восстанавливаем данные). После сохранения, зайдя в папку с восстановленными файлами, мы видим, что восстановление прошло корректно:
Но здесь мы обнаружим одну особенность: файлы имеют другие названия, а главное они все сложены в одну папку. Почему? Потому, что информация об именах файлов, каталогах в которых они хранились (и множество других атрибутов файлов), хранится только в файловой системе. А при поиске по сигнатурам эту информацию просто негде взять. Это один из существенных минусов способа чернового восстановления данных, но не единственный. Об остальных позже.
Стоит отметить, что jpeg – это, пожалуй, один из самых простых форматов для восстановления по сигнатурам, именно поэтому я взял его в качестве примера. Алгоритм восстановления файлов других форматов сложнее и имеет в каждом случае свои особенности: например, многие форматы файлов не имеют признака окончания файла. Тогда для определения последнего сектора файла используется либо начало следующего файла, либо размер определяется по метаданным, которые содержатся в самом файле. Более сложные алгоритмы восстановления данных учитывают все эти нюансы, которые у каждого типа файлов свои, их описание выходит за рамки этой статьи.
Итак, восстановить данные по сигнатурам несложно, это умеют делать многие программы автоматического восстановления, но в некоторых случаях не помогает даже такой метод, а в некоторых случаях такой метод хоть и восстанавливает данные, но без информации об их размещении он не имеет смысла. Рассмотрим эти случаи.
Когда восстановление по сигнатурам не поможет?
Удаленные файлы были перезаписаны новыми данными
Тут все просто. И проблема, конечно, не в алгоритме восстановления файлов, а в том, что нужных данных уже просто нет на диске – они перезаписаны новой информацией. В этом случае не поможет уже никто, что бы там не утверждали конспирологи и параноики. Впрочем, на эту тему мы еще напишем статью. Когда она будет готова, здесь появится ссылка.
Файлы были фрагментированы на диске
Что значит “фрагментированы”? Такая ситуация возникает, когда диском или флэшкой активно пользуются (то есть почти всегда): записывают какие-то данные, потом удаляют ненужную или устаревшую информацию, затем снова записывают новые данные и так далее. В этом случае дисковое пространство становиться похоже на лоскутное одеяло: сначала идет часть с данными, потом пробелы, потом снова данные, снова пробелы из свободного пространства и так далее до конца диска. И если на диск нужно записать новый файл достаточно большого объема, то файловая система ищет на диске большую свободную область, и если весь файл туда не помещается, то записывает туда начало файла, затем дописывает оставшуюся часть (или части) в другую область диска. В этом случае один файл может быть разбит на несколько разных фрагментов, а информация о том, где какой фрагмент находится, хранится опять же в файловой системе (помните про оглавление книги), только теперь уже одному файлу соответствует не одна строчка в нашем оглавлении, а несколько, в зависимости от количества фрагментов, на которые он был разбит. И если этих записей больше нет в файловой системе, то никакой поиск не поможет восстановить файл целиком: ведь по сигнатуре мы можем определить только начало файла, а вот где находится его продолжение алгоритм уже не сумеет определить: эта информация хранится только в самой файловой системе и нигде больше ее нет. Поэтому восстановление файлов по сигнатурам не сработает в случае с фрагментированными файлами. Такие фалы либо вообще не будут открываться, либо будут “битыми” (поврежденными). Вот как выглядит такой “битый”, частично восстановленный файл, на примере все того-же jpeg:
Данные на диске были зашифрованы
Требуется полноценное восстановление файловой системы
Часто бывает, что для получения доступа к данным недостаточно извлечь сами файлы, требуется еще и восстановление имен файлов и папок, в которых они были разложены. Например, это необходимо, если сами файлы были частью какого-то структурированного набора данных: базы 1С, коллекцией музыкальных сэмплов, и т.п. В этом случае требуется полноценное восстановление файловой системы со всей структурой папок, иначе программа не заработает, а сами данные будут бессмысленны для пользователя.
Резюмируя, можно сказать, что рассмотренный в этой статье метод восстановления данных по сигнатурам хорошо подходит для восстановления фотографий, а также небольших по объему медиа файлов или документов Office, но только тогда, когда они не фрагментированы и информация об их размещении не важна. Во всех остальных случаях метод чернового восстановления не дает качественного результата.
Ну а у меня на сегодня все. Берегите себя и свои данные! Автор: Вадим Шестернин aka WAIK. Лаборатория восстановления данных Advanced Group, Санкт-Петербург 11.09.2020.
Список сигнатур файлов
Из Википедии — свободной энциклопедии
Это список сигнатур файлов, данных, используемых для идентификации или проверки содержимого файла. Эти сигнатуры также известны как магические числа.
Многие форматы файлов не предназначены для чтения как текст. Если такой файл будет просмотрен как текстовый файл, его содержимое будет невразумительно. Однако сигнатура файла может быть интерпретирована и показана как текст. В столбце ИСО 8859-1 указано, как расшифровывается сигнатура файла стандартной для UNIX-подобных операционных систем утилитой file при языковой кодировке ИСО 8859-1.
Расширение файла | Описание | Смещение | ISO 8859-1 | Шестнадцатиричная сигнатура | ||
---|---|---|---|---|---|---|
rpm | RedHat Package Manager (RPM) package [1] | 0 | ||||
bin | Amazon Kindle Update Package [2] | 0 | ||||
PIC | IBM Storyboard bitmap file Windows Program Information File | 0 | ||||
PDB | PalmPilot Database/Document File | 11 | ||||
DBA | Palm Desktop Calendar Archive | 0 | ||||
DBA | Palm Desktop To Do Archive | 0 | ||||
TDA | Palm Desktop Calendar Archive | 0 | ||||
Palm Desktop Data File (Access format) | 0 | |||||
ico | Computer icon encoded in ICO file format [3] | 0 | ||||
3gp | 3rd Generation Partnership Project 3GPP and 3GPP2 multimedia files | 4 | ||||
z | compressed file (often tar zip) | Compressed file (often tar zip) | 0 | |||
bac | File or tape containing a backup done with AmiBack on an Amiga. It typically is paired with an index file (idx) with the table of contents. | 0 | ||||
bz2 | Compressed file using Bzip2 algorithm | 0 | ||||
gif | Image file encoded in the Graphics Interchange Format (GIF) [4] | 0 | ||||
tif | Tagged Image File Format | 0 | (little endian format) (big endian format) | |||
cr2 | Canon RAW Format Version 2 [5] Canon’s RAW format is based on the TIFF file format [6] | 0 | ||||
cin | Kodak Cineon image | 0 | ||||
Compressed file using Rob Northen Compression (version 1 and 2) algorithm | 0 | |||||
dpx | SMPTE DPX image | 0 | (big endian format) (little endian format) | |||
exr | OpenEXR image | 0 | ||||
bpg | Better Portable Graphics format [7] | 0 | ||||
jpg | JPEG raw or in the JFIF or Exif file format | 0 | ||||
ilbm | IFF 8-Bit Sampled Voice | 0 | Amiga Contiguous Bitmap | 0 | IFF Simple Musical Score | 0 |
iff | Amiga Fantavision Movie | 0 | Audio Interchange File Format | 0 | ||
idx | Index file to a file or tape containing a backup done with AmiBack on an Amiga. | 0 | ||||
lz | lzip compressed file | 0 | ||||
exe | DOS MZ executable file format and its descendants (including NE and PE) | 0 | ||||
zip | zip file format and formats based on it, such as JAR, ODF, OOXML | 0 | (empty archive) (spanned archive) | |||
rar | RAR archive version 1.50 onwards [8] | 0 | ||||
rar | RAR archive version 5.0 onwards [9] | 0 | ||||
elf | Executable and Linkable Format | 0 | ||||
png | Image encoded in the Portable Network Graphics format [10] | 0 | ||||
class | Java class file, Mach-O Fat Binary | 0 | ||||
UTF-8 encoded Unicode byte order mark, commonly seen in text files. | 0 | |||||
Mach-O binary (32-bit) | 0 | |||||
Mach-O binary (64-bit) | 0 | |||||
Mach-O binary (reverse byte ordering scheme, 32-bit) [11] | 0 | |||||
Mach-O binary (reverse byte ordering scheme, 64-bit) | 0 | |||||
Byte-order mark for text file encoded in little-endian 16-bit Unicode Transfer Format | 0 | |||||
Byte-order mark for text file encoded in little-endian 32-bit Unicode Transfer Format | 0 | |||||
ps | PostScript document | 0 | ||||
PDF document | 0 | |||||
asf | Advanced Systems Format [12] | 0 | ||||
System Deployment Image, a disk image format used by Microsoft | 0 | |||||
ogg | Ogg, an open source media container format | 0 | ||||
psd | Photoshop Document file, Adobe Photoshop’s native file format | 0 | ||||
wav | Waveform Audio File Format | 0 | ||||
avi | Audio Video Interleave video format | 0 | ||||
mp3 | MPEG-1 Layer 3 file without an ID3 tag or with an ID3v1 tag (which’s appended at the end of the file) | 0 | ||||
mp3 | MP3 file with an ID3v2 container | 0 | ||||
bmp | BMP file, a bitmap format used mostly in the Windows world | 0 | ||||
iso | ISO9660 CD/DVD image file [13] | 0x8001 | ||||
fits | Flexible Image Transport System (FITS) [14] | 0 | ||||
flac | Free Lossless Audio Codec [15] | 0 | ||||
mid | MIDI sound file [16] | 0 | ||||
doc See also USMT 3.0 (Win XP) [27] and USMT 4.0 (Win 7) [28] User Guides | 0 | |||||
nes | Nintendo Entertainment System ROM file [29] | 0 | ||||
tar | tar archive [30] | 0x101 | ||||
tox | Open source portable voxel file [31] | 0 | ||||
MLV | Magic Lantern Video file [32] | 0 | ||||
Windows Update Binary Delta Compression [33] | 0 | |||||
7z | 7-Zip File Format | 0 | ||||
gz | [rfc:1952 GZIP] | 0 | ||||
lz4 | LZ4 Frame Format [34] Remark: LZ4 block format does not offer any magic bytes. [35] | 0 | ||||
cab | Microsoft Cabinet file | 0 | ||||
Various. (Replacing the last character of the original file extension with an underscore, e.g. setup.exe becomes setup.ex_) | Microsoft compressed file in Quantum format, used prior to Windows XP. File can be decompressed using Extract.exe or Expand.exe distributed with earlier versions of Windows. | 0 | ||||
flif | Free Lossless Image Format | 0 | ||||
mkv | Matroska media container, including WebM | 0 | ||||
stg | «SEAN : Session Analysis» Training file. Also used in compatible software «Rpw : Rowperfect for Windows» and «RP3W : ROWPERFECT3 for Windows». | 0 | ||||
djvu The following byte is either 55 ( U ) for single-page or 4D ( M ) for multi-page documents. | ||||||
deb | linux deb file | 0 | !. | |||
webp | Google WebP image file | 0 | RIFF…. | |||
U-Boot / uImage. Das U-Boot Universal Boot Loader. [38] | 0 | |||||
rtf | Rich Text Format | 0 | ||||
Microsoft Tape Format | 0 | |||||
ts | MPEG Transport Stream (MPEG-2 Part 1) | 0 | MPEG Program Stream (MPEG-1 Part 1 (essentially identical) and MPEG-2 Part 1) | 0 | ||
mpg MPEG Program Stream MPEG Transport Stream MPEG-1 video and MPEG-2 video (MPEG-1 Part 2 and MPEG-2 Part 2) No Compression (no preset dictionary) Best speed (no preset dictionary) Default Compression (no preset dictionary) Best Compression (no preset dictionary) No Compression (with preset dictionary) Best speed (with preset dictionary) Default Compression (with preset dictionary) Три заблуждения, связанных с антивирусами: сигнатуры, вирусы и лечениеПоговорим о нескольких понятиях, которые зачастую понимаются ошибочно: какие бывают сигнатуры, что на самом деле такое вирусы и как работает лечение системы антивирусом. Мы много и часто рассказываем о правилах поведения (а может, даже и выживания) в Интернете, да и в цифровом мире в целом. Очень надеемся, что делаем это все не зря, — что люди учатся и потом учат своих близких. Это правда очень важно. Однако во всех этих рассказах встречается немало специфических терминов, которые кто-то может не знать или понимать неверно. Сегодня мы поговорим о трех самых распространенных заблуждениях, связанных с антивирусами, и попробуем объяснить, почему мы называем определенные вещи так, а не иначе. Заблуждение первое: сигнатуры — это что-то устаревшееТак исторически сложилось, что антивирусные базы в разговоре и даже статьях часто называют сигнатурами. В действительности же классические сигнатуры, пожалуй, ни один антивирус не использует уже лет 20. Проблема возникла из-за того, что с самого начала — а это восьмидесятые годы — понятие «сигнатуры» не было определено четко. Например, отдельной статьи про них в «Википедии» нет даже сейчас, а в статье про вредоносные программы понятие «сигнатуры» используется без определения — как нечто всем известное. Давайте же это определение дадим. Классическая вирусная сигнатура — это непрерывная последовательность байтов, характерная для той или иной вредоносной программы. То есть она содержится в этом вредоносном файле и не содержится в чистых файлах. Например, характерная последовательность байтов может быть такой Проблема в том, что сегодня с помощью таких классических сигнатур определить вредоносный файл достаточно проблематично — их создатели используют различные техники для того, чтобы запутать следы. Поэтому современные антивирусы используют значительно более продвинутые методы. И хотя в антивирусных базах примитивных записей по-прежнему много (больше половины), но есть еще и очень много умных записей. Все это продолжают по старинке называть сигнатурами. И ладно бы просто называли — в общем-то, ничего страшного. Но это название зачастую используется уничижительно: мол, сигнатуры — устаревшие технологии. А на самом деле в этих «устаревших сигнатурах» порой какое-нибудь «разбиение пространства исполняемых файлов на кластеры в результате работы нейронной сети», которое никто и словами-то доступно не может описать. В идеале стоило бы отказаться от использования самого термина «сигнатура» в смысле «любая запись в антивирусной базе». Но уж слишком прочно это слово вошло в обиход, да и альтернативного термина пока не придумали, так что все продолжают по привычке пользоваться им. Поэтому важно иметь в виду, что само по себе слово «сигнатура» на самом деле не говорит ничего о продвинутости или примитивности. Антивирусная запись — это запись, а стоящая за ней технология может быть как классической, простенькой, так и суперсовременной и навороченной, нацеленной на детектирование самых запутанных и высокотехнологичных вредоносных файлов или даже целых семейств вредоносов. Заблуждение второе: вирусы — это любые вредоносные программыВы наверняка отмечали, что вирусные аналитики нашей компании избегают употребления слова «вирус», предпочитая ему странноватые слова вроде «вредонос» или «зловред», а между собой часто говорят «малвара». Делаем мы это вовсе не из суеверия или профессионального пафоса. Дело в том, что «Virus» — это вполне конкретная разновидность вредоноса, отличающегося очень специфическим поведением: это зловред, который заражает собой другие, чистые файлы. Вирусные аналитики также используют для этого типа вредоносных программ термин «инфекторы». Инфекторы в вирусной лаборатории пользуются особым статусом. Во-первых, их чуть сложнее распознать — с виду файл чистый, а на самом деле в нем инфекция. Во-вторых, они требуют особого подхода: почти всегда для них нужна специальная процедура лечения и, как правило, еще и особая процедура детектирования. Поэтому инфекторами занимаются люди, специализирующиеся именно на этом типе угроз. Классификация вредоносных программ И вот для того, чтобы не путать «вирус» в обывательском смысле с вполне определенной категорией зловредов, вирусные аналитики, в том числе и в разговоре с прессой, употребляют слова «вредонос» или «зловред», когда речь идет о вредоносных программах в целом. И раз уж мы заговорили о правильных терминах, то вот еще несколько. «Червь» — это вредонос, способный к самостоятельному распространению за пределы одного устройства. А «малвара» (malware), если следовать точной классификации, не включает в себя «адвару» (adware) — грубое рекламное ПО — и «рисквару» (riskware) — легальное ПО, которое может нанести вред пользователю, если установлено не им, а злоумышленниками. Заблуждение третье: антивирус не умеет лечитьМне встречалось такое заблуждение, будто антивирус сканирует и детектирует, а если что-то найдет, то потом надо скачивать специальную лечащую утилиту и использовать уже ее. Отдельные утилиты для особо популярных зловредов у нас действительно есть — например, специализированные утилиты, позволяющие бесплатно расшифровать файлы, зашифрованные вымогателями. Но и антивирус справляется с лечением ничуть не хуже. А в подавляющем большинстве случаев — даже лучше, за счет драйверов в системе и других технологий, которые в утилиту не запихнешь. Лечение заключается в следующем. В 1% случаев, когда пользователю антивируса «посчастливилось» натолкнуться именно на вирус — инфектор (причем, скорее всего, еще до установки антивируса, иначе бы зловред просто не запустился), антивирус действительно будет перебирать все зараженные файлы на компьютере и производить процедуру дезинфекции — восстанавливать оригинал. Кстати, то же самое антивирус будет делать, если потребуется расшифровать файлы, зашифрованные вымогателем-шифровальщиком — зловредом класса Trojan-Ransom. А в остальных 99% случаев, когда зловред ничего не инфицирует, а просто делает (или собирается делать) свое черное дело, лечение действительно состоит в банальном удалении файла зловреда. Просто потому, что заражения других файлов нет, так что и лечить их не требуется. Уничтожаем файл — и система здорова. В большинстве случаев лечение как таковое не требуется, достаточно просто удалить вредоносный файл Но тут есть одно исключение — если зловред уже работает в системе (а не просто лежит на диске), то антивирус переходит в состояние «Лечение активного заражения», чтобы все сделать надежно и до конца, без рецидивов. Вот здесь можно прочитать полное описание данной врачебной процедуры. Кстати, ситуация такая возникает обычно по двум причинам: ЗаключениеНа сегодня все. Надеюсь, теперь вы:
|