Средства просмотра файлов и редакторы общего назначения
Последний важный аспект, касающийся vi, на который стоит обратить внимание - это его способность читать двоичные файлы. Хотя его вывод не так симпатичен, как вывод инструментов Hexdump или hexedit, он достаточно эффективен, если vi - единственный доступный инструмент.
vi-R suspiciousfile.bin
Ниже приведен соответствующий вывод.
В выводе рассматривается тот же самый файл, который анализировался в разделе, посвященном hexedit. Все содержимое в непечатаемом тексте выводится в шестнадцатеричной форме, используя формат \x##. Любой печатаемый ASCII-код можно просматривать на дисплее. Использование редактора vi для просмотра файла, который частично является текстом, а частично двоичным кодом (подобно этим ужасным отформатированным файлам DOS) очень полезно! Вот как выглядит нужная команда.
vi-R dosfile.txt
А вот соответствующий вывод.
Frhed
Frhed - это инструмент редактирования шестнадцатеричного кода в системе Windows. Это графический инструмент и он включает много функций, полезных для судебного анализа. Frhed можно загрузить с сайта http://homepages.tu-darmstadt.de/~rkibria/real_index.html*frhed.
Реализация
Вывод редактора Frhed подобен выводу hexedit, в том отношении, что смещение байтов находится в левом столбце (в шестнадцатеричной форме), содержимое представлено в среднем столбце, а перевод в ASCII-коды находится в правом столбце. Снимок экрана на рис. 24.2 представляет тот же самый файл suspiciousfile.bin, который загружался в предыдущих разделах; его можно увидеть, выбрав File/Open.
Для поиска содержимого файла нужно выбрать Edit/Find. В открывшемся диалоговом окне будет представлено множество опций для поиска. Чтобы искать строку шестнадцатеричного кода, кодировать байты нужно следующим способом:
<bh:#>
Символ # представляет критерии поиска байта в шестнадцатеричной форме. Чтобы сделать поиск образца размером больше одного байта, можно объединить несколько символов, подобно тому, как показано на следующей иллюстрации.
Щелкните на OK, и строка будет найдена и подсвечена. Чтобы продолжить поиск вперед, нажмите F3, или выберите Edit/Find Next; для поиска назад нажмите F4, или выберите Edit/Find Previous.
Чтобы произвести поиск в пределах столбца ASCII-кодов, введите критерии поиска без дополнительного форматирования. Для поиска в ASCII-кодах есть дополнительная опция: можно установить чувствительность поиска к регистру. Это означает, что если вы хотите искать UTXZ и выбираете опцию Match case (Учитывать регистр) в диалоговом окне Find, поиск не будет обнаруживать в содержимом строку utxZ.
Редактор Frhed может также экспортировать содержимое в ASCII-файл, подобный выводу инструмента Hexdump. Для этого выберите File/Export as Hexdump. Если вы хотите сделать дамп только части файла, диалоговое окно Export позволяет вам выбирать смещения начального и конечного байтов, предназначенных для вывода, как показано на следующей иллюстрации.
После того, как был сделан дамп данных в текстовый файл, вывод можно просматривать с помощью любой стандартной утилиты, предназначенной для просмотра текстов. После того, как вы экспортировали данные в виде Hexdump, можно открыть текстовый файл в Windows Notepad (Блокнот).
Одна из проблем просмотра файлов в шестнадцатеричных кодах заключается в понятиях Наименьшего значащего байтового кода (little endian - прямой порядок байтов) и Наибольшего значащего байтового кода (big endian - обратный порядок байтов), которые вступают в игру, когда файлы с одного типа архитектуры процессоров (например, процессоров Motorola) просматриваются на процессорах другого типа (например, процессоров Intel). Редактор Frhed может компенсировать это различие, если использовать ключи из меню, к которому можно обратиться, выбрав Options/Binary Mode (Двоичный режим). С помощью этого инструмента файлы с машин, имеющих различный порядок следования байтов, могут быть проанализированы и легко переставлены. На следующей иллюстрации показано диалоговое окно Binary Mode Setting, доступ к которому вы получаете через пункты меню Options/Binary Mode.
Для пользователей, которым трудно использовать непростые средства просмотра шестнадцатеричных кодов и переводить шестнадцатеричный формат в двоичный, есть полезная функция, доступная через пункты меню Edit/Manipulate Bits (Манипулирование битами), открывающие диалоговое окно Manipulate Bits. В этом диалоговом окне вы можете выбирать шестнадцатеричные значения, как ряд ключей включить/выключить или в виде флажков, где отмеченный флажок означает 1, а неотмеченный - ноль.
Возможно, одна из наиболее полезных функций инструмента Frhed, которая отсутствует во многих других редакторах, состоит в его способности открывать файл частично. Это позволяет судебному аналитику считывать для просмотра маленькие порции огромных файлов, типа образов, созданных утилитой dd (обсуждение dd см. в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования" ), не блокируя ресурсы всего компьютера. Чтобы открыть файл частично, выберите File/Open Partially. Затем программа запрашивает у пользователя смещение начального байта и длину сегмента, которую надо считать.
Xvi32
Редактор xvi32 - это еще один бесплатный инструмент, предназначенный для просмотра файлов Windows в шестнадцатеричном формате. Он похож на инструмент Frhed тем, что имеет графический интерфейс пользователя (GUI). Редактор xvi32 выглядит несколько ограниченным в своих функциональных возможностях, потому что не имеет опции частичного открытия файлов, которая есть у Frhed, но в остальном он хорошо с ним конкурирует.
Редактор xvi32 можно загрузить с сайта http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm.
Реализация
Щелкните дважды на значке xvi32 после того, как вы разархивируете дистрибутивы. Выберите File/Open, а затем выберите файл suspiciousfile.bin, чтобы открыть интерфейс xvi32 для редактирования файлов в шестнадцатеричном формате.
Поскольку аналитик обычно только рассматривает содержимое файлов, то в этом разделе будет описана только функция поиска. Здесь эту функцию использовать намного проще, чем в редакторе Frhed, поскольку для поиска байтов в шестнадцатеричном формате не применяется никакое кодирование. Для поиска строк, заданных в ASCII и шестнадцатеричном коде, в пределах содержимого файлов, выберите Search/Find, чтобы открыть диалоговое окно Find, показанное ниже.
Обратите внимание на опцию, помеченную как Joker Char Hex. Это шестнадцатеричное представление символа, который будет соответствовать любому символу. В данном примере, 0x2E представляет символ ".". Помещая символ "." в критерий поиска, мы сообщаем редактору xvi32, что в этом месте может стоять любой символ. Редактор xvi32 находит не только текстовые строки, но он может также находить строки, заданные в шестнадцатеричном формате.
Чтобы в редакторе xvi32 найти строку, заданную в шестнадцатеричном формате, выберите опцию Hex String в диалоговом окне Find и заполните критерии поиска. Если найдено соответствие, то оно подсвечивается в окне просмотра.