Часть II • Защитные операции с использованием bash
Для.преобразования.шестнадцатеричного.кода.в.ASCII.используйте.команду.
xxd
.
с.параметром.
-r
:
$ printf 0x41 | xxd –r
A
Чтобы.преобразовать.из.ASCII.в.двоичный.код,.вы.можете.передать.символ.в.
xxd
.
и.использовать.параметр.
-b
:
$ printf 'A' | xxd –b
00000000: 01000001
В показанных примерах вместо команды echo умышленно используется команда
printf. Это объясняется тем, что команда echo автоматически добавляет в вывод
лишний символ. Его можно увидеть здесь:
$ echo 'A' | xxd
00000000: 410a
Далее.рассмотрим.команду.
xxd
.и.способы.ее.использования.для.анализа.файла..
Для.примера.проанализируем.исполняемый.файл.
Анализ с помощью xxd
Для.изучения.функциональности.команды.
xxd
.возьмем.исполняемый.файл.
helloworld
..
Исходный.код.показан.в.примере.11.1..Файл.
helloworld
.компилируется.для.Linux.
в.Executable.and.Linkable.Format.(ELF).—.формат.исполняемых.и.компонуемых.моду-
лей..Компиляция.производится.с.помощью.компилятора.GNU.C.Compiler.(GCC).
Пример 11.1. helloworld.c
#include int main()
{
printf("Hello World!\n");
return 0;
}
Команда.
xxd
.может.использоваться.для.проверки.любой.части.исполняемого.
файла..В.качестве.примера.можно.посмотреть.магическое.число.файла,.которое.
начинается.с.позиции.0x00.и.имеет.размер.4.байта..Чтобы.выбрать.начальную.
позицию,.используйте.параметр.
-s
.(если.формат.файла.десятичный)..Для.опре-