Как создать Hexdump файла или строки текста

Шестнадцатеричный дамп — это шестнадцатеричное представление данных. Вы можете использовать шестнадцатеричное при отладке программы или для обратного проектирования программы.

Например, многие форматы файлов имеют специальные шестнадцатеричные символы для обозначения их типа. Если вы пытаетесь прочитать файл с помощью программы и по какой-то причине она загружается неправильно, возможно, файл не соответствует ожидаемому формату.

Если вы хотите увидеть, как работает программа, и у вас нет исходного кода или части программного обеспечения, которая бы анализировала код, вы можете посмотреть на шестнадцатеричный дамп, чтобы попытаться выяснить, что происходит.

Что такое шестнадцатеричное?

Компьютеры думают в двоичном формате. На каждый символ, число и символ ссылаются двоичные или множественные двоичные значения.

Однако люди склонны мыслить десятично.

тысячиСотниДесяткиЕдиницы
111

Как люди, наши самые низкие числа называются единицами и представляют числа от 0 до 9. Когда мы получаем 10, мы сбрасываем столбец единиц обратно в 0 и добавляем 1 к столбцу десятков (10). 

1286432168421
111

В двоичном коде наименьшее число представляет только 0 и 1. Когда мы преодолеваем 1, мы помещаем 1 в столбец 2 и 0 в столбец 1. Когда вы хотите представить 4, вы помещаете 1 в столбец 4 и сбрасываете столбцы 2 и 1.

Следовательно, для представления 15 у вас будет 1111, что означает 1 восемь, 1 четыре, 1 два и 1 один. (8 + 4 + 2 + 1 = 15).

Если мы просмотрим файл данных в двоичном формате, он будет абсолютно огромным и практически невозможным для понимания.

Следующий шаг от двоичного кода восьмеричный, который использует 8 в качестве основного числа.

241681
11

В восьмеричной системе первый столбец имеет значение от 0 до 7, второй столбец — от 8 до 15, третий столбец — от 16 до 23 и четвертый столбец — от 24 до 31 и так далее. Хотя обычно его легче читать, чем двоичный, большинство людей предпочитают использовать шестнадцатеричное.

Шестнадцатеричный использует 16 в качестве базового числа. Вот где это сбивает с толку, потому что мы, люди, думаем о числах от 0 до 9. Итак, что же используется для 10, 11, 12, 13, 14, 15? Ответ письма.

  • 0 = 0
  • 1 = 1
  • 2 = 2
  • 3 = 3
  • 4 = 4
  • 5 = 5
  • 6 = 6
  • 7 = 7
  • 8 = 8
  • 9 = 9
  • 10 = А
  • 11 = B
  • 12 = С
  • 13 = D
  • 14 = E
  • 15 = F

Поэтому значение 100 представляется как 64. Вам понадобится 6 из столбца 16 с, который поднимает 96, а затем 4 в столбце единиц, получая 100.

Все символы в файле будут обозначены шестнадцатеричным значением. Что означают эти значения, зависит от формата самого файла. Формат файла обозначается шестнадцатеричными значениями, которые обычно хранятся в начале файла.

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

Как создать шестнадцатеричный дамп с помощью Linux

Чтобы создать шестнадцатеричный дамп с помощью Linux, используйте команду hexdump.

Чтобы отобразить файл как шестнадцатеричный для терминала (стандартный вывод), выполните следующую команду:

шестнадцатеричное имя файла

Например

hexdump image.png

Выход по умолчанию будет отображать номер строки (в шестнадцатеричном формате), а затем 8 наборов по 4 шестнадцатеричных значения в строке.

Например:

00000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244

Вы можете поставить разные переключатели для изменения выхода по умолчанию. Например, указание переключателя минус b приведет к смещению из 8 цифр, за которым последуют 16 трех столбцов, заполненных нулями, байтов входных данных в восьмеричном формате.

hexdump -b image.png

Поэтому приведенный выше пример теперь будет представлен следующим образом:

00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122

Вышеуказанный формат известен как однобайтовое восьмеричное отображение.

Другой способ просмотра файла — однобайтовое отображение символов с помощью клавиши минус с.

hexdump -c image.png

Это снова отображает смещение, но на этот раз следуют шестнадцать разделенных пробелами трех столбцов, заполненных пробелами символов входных данных на строку.

Другие опции включают в себя каноническое отображение hex + ascii, которое может отображаться с помощью переключателя минус С, и двухбайтовое десятичное отображение, которое может отображаться с помощью переключателя минус d. Переключатель минус o может использоваться для отображения двухбайтового восьмеричного отображения. Наконец, переключатель minux x может использоваться для отображения двухбайтового шестнадцатеричного отображения.

hexdump -C image.png
hexdump -d image.png
hexdump -o image.png
hexdump -x image.png

Если ни один из вышеперечисленных форматов не соответствует вашим потребностям, используйте переключатель минус е, чтобы указать формат.

Если вы знаете, что файл данных очень длинный и вы просто хотите увидеть первые несколько символов, чтобы определить его тип, вы можете использовать ключ -n, чтобы указать, какой объем файла отображать в шестнадцатеричном формате.

hexdump -n100 image.png

Приведенная выше команда отображает первые сто байтов.

Если вы хотите пропустить часть файла, вы можете использовать переключатель минус s, чтобы установить смещение для начала.

hexdump -s10 image.png

Если вы не указали имя файла, текст читается со стандартного ввода. 

Просто введите следующую команду:

шестнадцатеричного

Затем введите текст в стандартный ввод и завершите вводом quit. Гекс будет отображаться на стандартный вывод.

Резюме

Утилита hexdump, очевидно, является довольно мощным инструментом, и вам обязательно следует прочитать страницу руководства, чтобы полностью освоить все функции.

Вам также понадобится хорошее понимание того, что вы ищете, когда читаете вывод.

Для просмотра страницы руководства выполните следующую команду:

человек hexdump
Ссылка на основную публикацию