Опубликован: 20.02.2007 | Уровень: специалист | Доступ: платный
Лекция 24:

Средства просмотра файлов и редакторы общего назначения

Рисунок 24.1 демонстрирует вывод Hexdump с использованием спецификации формата, заданной в файле hexdump.fmt.

Вывод инструмента hexdump для файла suspiciousfile.bin

Рис. 24.1. Вывод инструмента hexdump для файла suspiciousfile.bin

Спецификацию формата выходного файла инструмента Hexdump понять не просто. В целом, формат состоит из одной или более лексем. Каждая лексема является символом, который определяет либо то, как отображено смещение байта, либо выходной формат для содержимого файла. Кроме того, каждой лексеме можно присвоить дополнительную (не обязательную) спецификацию byte count (подсчет байтов) и iteration (итерация), в следующей форме.

<итерация>/<подсчет байтов> <лексема>

В дополнение к хорошо известным для программистов, работающих на языках C/C ++, операторам printf, лексемы могут содержать следующие параметры форматирования (этот текст можно найти также на справочной (man) странице в Hexdump ).

_a [dox] Отображает смещение, совокупное по входным файлам, следующего байта, который будет отображен. Добавленные в конец символы d, o, и x указывают основание отображаемого числа: десятичное, восьмеричное или шестнадцатеричное, соответственно.
_A [dox] Идентично конверсионной строке _a, за исключением того, что она выполняется только однажды, когда обрабатываются все входные данные.
_c Выводит символы в виде заданного по умолчанию набора символов. Непечатаемые символы отображаются в виде трех символов восьмеричным числом, дополненным нулем, за исключением тех символов, которые представляются стандартным обозначением с символом escape (см. выше): они отображаются строками из двух символов.
_p Выводит символы в виде заданного по умолчанию набора символов. Непечатаемые символы отображаются как одна точка ".".
_u Выводит символы US ASCII, за исключением того, что управляющие символы отображаются с помощью следующих названий, использующих нижний регистр. Символы большие, чем 0xff, в шестнадцатеричном формате отображаются как шестнадцатеричные строки.
% _c, % _p, % _u, %c Во внимание принимается только один байт.
%d, %i, %o, %u, %X, %x По умолчанию четыре байта, но поддерживаются также один, два и четыре байта.
%E, %e, %f, %G, %g Восемь байтов задано по умолчанию, поддерживается также учет четырех байтов.

Следовательно, файл hexdump.fmt, представленный ранее, интерпретируется следующим образом

linux# cat hexdump.fmt

"%12.12_ad " 16/1 "%02X "
"\t" 16/1 "%_p"
"\n"
  1. Первая лексема форматирует смещение байта. Она имеет длину 12 цифр и дополнена 12 нулями. Смещение байта отображено десятичным числом. Два дополнительных пробела появляются после смещения байта, перед тем как начинаются фактические данные файла.
  2. Вторая лексема повторена 16 раз, и 1 байт считан для каждой итерации. При выводе, он находится в двуцифровом шестнадцатеричном формате для каждой итерации. Поэтому каждая лексема представляет байт в правильно построенных столбцах.
  3. Вторая строка повторяет вывод тех же самых 16 прочитанных байтов, на сей раз, форматируя байты в читаемый ASCII-код (однако, для непечатаемого символа вставляется точка [.]). \t представляет вставку TAB (табулятор) перед выводимыми байтами. Если бы эта строка в файле формата была передвинута вверх на первую строку, то была бы считана новая последовательность, но мы не собирались это выполнять. Поэтому, эта лексема должна находиться на новой линии.
  4. Четвертая строка выводит символ начала строки.

Инструмент Hexdump является чрезвычайно мощной и эффективной утилитой, которая применяется для просмотра содержимого файлов при судебном расследовании. С небольшим знанием файлов форматирования утилиты Hexdump, аналитик может рассматривать данные любым нужным ему способом. Поэтому Hexdump необходим любому судебному следователю. К счастью, этот инструмент обычно устанавливается в базовой инсталляции большинства операционных систем Unix.

Hexedit

Хотя Hexdump является прекрасным инструментом для просмотра содержимого файлов, инструмент hexedit представляется собой лучшую альтернативу. hexedit позволяет пользователю редактировать файл и отображать его в формате, аналогичном hexdump.fmt. И что еще важнее, hexedit позволяет аналитику отыскивать шестнадцатеричные и/или ASCII-строки, то есть нечто, что нельзя выполнить, используя только утилиты Hexdump и grep (инструмент, который ищет соответствия заданному образцу, доступный в большинстве операционных систем Unix), потому что вывод может быть разбит переходом на новую строку.

Например, если вы ищете строку "utxZ" среди данных, изображенных на рис. 24.1, она была бы пропущена утилитой grep (стандартный инструмент поиска, просматривающий строку за строкой). Это происходит потому, что строка "utxZ" расположена на двух строках в выводе Hexdump. Однако с помощью hexedit, аналитик может легко найти эту строку в выводе ASCII-кода.

hexedit является эффективным судебным инструментом еще и потому, что он может открывать большие файлы (такого большого размера, как файлы поддержки операционной системы) без катастрофического замедления работы машины. Это происходит потому, что hexedit открывает входной файл по мере необходимости, по фрагменту за раз. Следовательно, при необходимости, с помощью hexedit можно производить поиск и анализировать целое устройство (типа жестких дисков на 80 Гб).

Инструмент hexedit можно исследовать, загрузив его со следующих сайтов: http://www.chez.com/prigaux/hexedit.html, http://merd.net/pixel/hexedit-1.2.2.bin.i386.dynamic.tgz и http://merd.net/pixel/hexedit-1.2.2.src.tgz.

Реализация

hexedit вызывается следующей командой.

forensic# hexedit suspiciousfile.bin

После открытия файла, отображается вывод, подобный представленному на следующей иллюстрации.


В выводе отсчет байтов смещения дается в левом столбце сверху вниз в шестнадцатеричном формате. Средний столбец показывает байты из файла suspiciousfile.bin в шестнадцатеричной записи. Крайний правый столбец содержит то же самое, что и средний столбец, но в ASCII-коде. Любые непечатаемые символы показаны точками (.).

Резюме наиболее часто используемых команд дано в таблице 24.1.

Таблица 24.1. Часто используемые ключевые команды
Ключевые команды Описание
< Идти в начало файла.
> Идти в конец файла.
СТРЕЛКА ВПРАВО Следующий символ.
СТРЕЛКА ВЛЕВО Предыдущий символ.
СТРЕЛКА "ВНИЗ" Следующая строка.
СТРЕЛКА "ВВЕРХ" Предыдущая строка.
HOME Начало строки.
END Конец строки.
PAGE UP Следующая страница.
PAGE DOWN Предыдущая страница.
F2 Сохранить.
F3 Загрузить файл.
F1 Справка.
CTRL-L Обновить.
CTRL-Z Приостановить.
CTRL-X Сохранить и выйти.
CTRL-C Выйти без сохранения.
TAB Переключатель hex/ASCII.
ENTER Идти дальше.
BACKSPACE Отменить предыдущий символ.
CTRL-U Отменить все.
CTRL-S Поиск вперед.
CTRL-R Поиск назад.
CTRL-SPACEBAR Установить метку.
CTRL-Y Вставить.
ESC-I Заполнить.
ESC-W Копировать.
ESC-Y Вставить в файл.
Сергей Хлюкин
Сергей Хлюкин
Россия, Москва, Московский Государственный Открытый Университет, 2007
Игорь Касаткин
Игорь Касаткин
Россия, Москва