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

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

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

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

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

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

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




Тысячи Сотни Десятки Единицы измерения
1 0 1 1

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




128 64 32 16 8 4 2 1
1 0 0 1 0 0 0 1

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

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

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

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




24 16 8 1
0 1 1 0

В восьмеричной системе первый столбец имеет значение от 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 filename 

Например

 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, очевидно, является довольно мощным инструментом, и вам обязательно следует прочитать страницу руководства, чтобы полностью освоить все функции.

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

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

 man hexdump 

Оцените статью
Solutics.ru
Добавить комментарий