Что такое сигнатура файла
Список сигнатур файлов
Из Википедии — свободной энциклопедии
Это список сигнатур файлов, данных, используемых для идентификации или проверки содержимого файла. Эти сигнатуры также известны как магические числа.
Многие форматы файлов не предназначены для чтения как текст. Если такой файл будет просмотрен как текстовый файл, его содержимое будет невразумительно. Однако сигнатура файла может быть интерпретирована и показана как текст. В столбце ИСО 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) Восстановление файлов по сигнатурам или “черновое” восстановление данныхКак данные хранятся на диске? Все, что мы видим в проводнике – имена файлов и папок, их размеры, дата создания и изменения, все эти сведения и хранятся в файловой системе, которую мы договорились называть “оглавлением”. Физически файловая система – это область диска, выделенная для хранения этих данных, которые ещё называют “метаданными”, то есть “данными о данных”. Когда мы удаляем файл или папку с жесткого диска, в файловой системе (оглавлении нашей книги) удаляется соответствующая запись (или просто помечается как удаленная), сами же данные при этом остаются на диске, но то место, которое они занимали теперь считается незанятым, а значит, когда мы будем записывать новые файлы, эта область диска может быть ими перезаписана. Именно поэтому после случайного удаления никогда не следует ничего записывать на диск или флэшку, ведь чем больше информации вы запишете на диск после случайного удаления файлов, тем больше вероятность, что старые данные будут перезаписаны новыми, и тогда восстанавливать уже будет нечего. Конечно, при восстановлении данных чаще всего стараются реанимировать файловую систему целиком, чтобы нужные файлы снова оказались разложены по тем же каталогам, где они лежали до сбоя. Но это не всегда возможно и тогда прибегают к “последнему шансу”: восстановлению данных по сигнатурам. Что такое сигнатура файла?Как известно, данные в файлах хранятся в цифровом виде. Для того, чтобы отличить один тип файла от другого и придумана сигнатура, то есть подпись (разумеется, тоже цифровая). Она размещена в начале файла и является идентификатором типа файлов. Это проще показать, чем рассказать. Рассмотрим сигнатуру файла на примере распространенного формата для хранения фотографий 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. Методы обнаружения «склеенных» файловМногие могли слышать о таких файлах, как rarjpeg’и. Это особый вид файлов, представляющий собой склеенную вплотную jpeg-картинку и rar-архив. Он является прекрасным контейнером для скрытия факта передачи информации. Создать rarjpeg можно с помощью следующих команд: UNIX: cat image1.jpg archive.rar > image2.jpg Или же при наличии hex-редактора. Разумеется, для скрытия факта передачи информации можно использовать не только формат JPEG, но и многие другие. Каждый формат имеет свои особенности, благодаря которым он может подходить или нет для роли контейнера. Я опишу, как можно найти приклеенные файлы в наиболее популярных форматах или же указать на факт склейки. Методы детектирования склеенных файлов можно разделить на три группы: Есть ли жизнь после конца файла?Для нахождения ответа на этот вопрос, необходимо углубиться в спецификации формата, который является «родоначальником» склеенных файлов и понять его структуру. Любой JPEG начинается с сигнатуры 0xFF 0xD8. После этой сигнатуры находится служебная информация, опционально иконка изображения и, наконец, само сжатое изображение. В этом формате конец изображения отмечается двухбайтной сигнатурой 0xFF 0xD9. Первые восемь байт PNG-файла занимает следующая сигнатура: 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A. Сигнатура конца, которая заканчивает поток данных: 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82. Общая сигнатура для всех rar-архивов: 0x52 0x61 0x72 0x21 (Rar!). После неё идет информация о версии архива и прочие сопутствующие данные. Опытным путем было установлено, что архив заканчивается сигнатурой 0x0A, 0x25, 0x25, 0x45, 0x4F, 0x46. Таблица форматов и их сигнатур:
Алгоритм проверки на склейку в данных форматах предельно прост: GIF и PDF
PDF документ может иметь более одного EOF-маркера, например, из-за неправильной генерации документа. Количество конечных сигнатур в GIF-файле равно количеству кадров в нем. Исходя из особенностей этих форматов, можно улучшить алгоритм проверки наличия приклеенных файлов. Особенность ZIP-архивов заключается в наличие трех различных сигнатур:
Структура архива такова:
Больше всего интересна центральная директория, которая содержит метаданные о файлах в архиве. Центральная директория всегда начинается с сигнатуры 0x50 0x4b 0x01 0x02 и заканчивается сигнатурой 0x50 0x4b 0x05 0x06, после которых следует 18 байт метаданных. Что интересно, пустые архивы состоят только из конечной сигнатуры и 18 нулевых байт. После 18 байт следует область комментария к архиву, которая является идеальным контейнером для скрытия файла. Для проверки ZIP-архива необходимо найти конечную сигнатуру центральной директории, пропустить 18 байт и искать сигнатуры известных форматов в области комментария. Большой размер комментария также свидетельствует о факте склейки. Размер имеет значениеСтруктура AVI-файла следующая: каждый файл начинается с сигнатуры RIFF (0x52 0x49 0x46 0x46). На 8 байте идет уточняющая формат сигнатура AVI (0x41 0x56 0x49 0x20). Блок на смещении 4, состоящий из 4 байт, содержит начальный размер блока данных (порядок байт — little endian). Чтобы узнать номер блока, содержащего следующий размер, необходимо сложить размер заголовка (8 байт) и размер, полученный в блоке 4-8 байт. Таким образом вычисляется полный размер файла. Допускается, что вычисленный размер может быть меньше, чем реальный размер файла. После вычисленного размера файл будет содержать только нулевые байты (необходимо для выравнивания границы в 1 Кб). Пример вычисления размера:
Как и AVI, WAV-файл начинается с сигнатуры RIFF, однако, у этого файла сигнатура с 8 байта — WAVE (0x57 0x41 0x56 0x45). Размер файла вычисляется таким же образом, как и AVI. Реальный размер должен полностью совпадать с вычисленным. MP4 или MPEG-4 – формат медиаконтейнера, используемый для хранения видео- и аудиопотоков, также предусматривает хранение субтитров и изображений. Рассмотрим пример. Размер первого блока находится на нулевом смещении, и он равен 28 (00 00 00 1С, порядок байт Big Endian); он же указывает на смещение, где находится размер второго блока данных. На 28 смещении находим следующий размер блока равный 8 (00 00 00 08). Чтобы найти следующий размер блока, необходимо складывать размеры найденных предыдущих блоков. Таким образом, вычисляется размер файла:
Этот широко используемый формат является также контейнером MPEG-4. MOV использует проприетарный алгоритм сжатия данных, имеет похожую на MP4 структуру и используется в тех же целях — для хранения аудио и видеоданных, а также сопутствующих материалов. Метод проверки этой группы форматов на наличие «приклеенных» файлов заключается в вычислении размера по заданным выше правилам и сравнении его с размером проверяемого файла. Если текущий размер файла много меньше вычисленного, то это указывает на факт склейки. При проверке AVI-файлов допускается, что вычисленный размер может быть меньше размера файла из-за наличия добавленных нулей для выравнивания границы. В таком случае, необходимо проверять нули после вычисленного размера файла. Проверяем Compound File Binary FormatЭтот формат файла, разработанный в Microsoft, также известен под названием OLE (Object Linking and Embedding) или COM (Component Object Model). Файлы DOC, XLS, PPT принадлежат к группе CFB-форматов. CFB-файл состоит из 512-байтного заголовка и секторов одинаковой длины, хранящих потоки данных или служебную информацию. Каждый сектор имеет свой собственный неотрицательный номер, исключение составляют специальные номера: «-1» — нумерует свободный сектор, «-2» — нумерует сектор, замыкающий цепочку. Все цепочки секторов определены в FAT-таблице. Предположим, что злоумышленник модифицировал некий doc-файл и вклеил в его конец другой файл. Есть несколько различных способов его обнаружить или указать на аномалию в документе. Аномальный размер файлаКак было сказано выше, любой CFB-файл состоит из заголовка и секторов равной длины. Чтобы узнать размер сектора, необходимо считать двухбайтное число на 30 смещении от начала файла и возвести 2 в степень этого числа. Данное число должно быть равно или 9 (0x0009), или 12 (0x000C), соответственно, размер сектора файла равен 512 или 4096 байт. После нахождения сектора необходимо проверить следующее равенство: (FileSize — 512) mod SectorSize = 0 Если это равенство не выполняется, то можно указать на факт склейки файлов. Однако этот метод имеет существенный недостаток. Если злоумышленник знает размер сектора, то ему достаточно приклеить свой файл и ещё n байт, чтобы величина приклеенных данных была кратна размеру сектора. Неизвестный тип сектораЕсли злоумышленник знает о методе обхода предыдущей проверки, то данный метод может детектировать наличие секторов с неопределенными типами. FileSize = 512 + CountReal * SectorSize, где FileSize — размер файла, SectorSize — размер сектора, CountReal — количество секторов. Определим также следующие переменные: Очевидно, что при неравенстве CountClassified и CountReal можно сделать вывод о возможной склейке файлов.
|