Skip to main content

Как создать шестнадцатеричный файл или строку текста

Перевод строки в Hex редакторе (Май 2024)

Перевод строки в Hex редакторе (Май 2024)
Anonim

Вступление

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

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

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

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

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

Однако люди склонны думать в десятичной форме.

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

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

1286432168421
10010001

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

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

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

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

241681
0110

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

Hexadecimal использует 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 = A
  • 11 = B
  • 12 = C
  • 13 = D
  • 14 = E
  • 15 = F

Следовательно, значение 100 представлено в 64. Вам понадобится 6 из столбца 16s, который вызывает 96, а затем 4 в столбце единиц, составляющем 100.

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

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

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

Для создания шестнадцатеричного дампа с использованием Linux используйте команду hexdump.

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

Имя файла hexdump

Например

hexdump image.png

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

Например:

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

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

hexdump -b image.png

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

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

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

Другой способ просмотра файла - однобайтный символ с помощью переключателя минус c.

hexdump -c image.png

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

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

hexdump -C image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

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

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

hexdump -n100 image.png

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

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

hexdump -s10 image.png

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

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

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

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

Резюме

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

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

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

мужчина hexdump