Шестнадцатеричный дамп - Hex dump

Шестнадцатеричный дамп 318 байт Википедия фавикон

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

В шестнадцатеричном дампе каждый байт (8-биты ) представлен двузначным шестнадцатеричный номер. Шестнадцатеричные дампы обычно организованы в строки по 8 или 16 байтов, иногда разделенные пробелами. Некоторые шестнадцатеричные дампы имеют шестнадцатеричный адрес памяти в начале и / или контрольная сумма байт в конце каждой строки.

Хотя название подразумевает использование вывода с основанием 16, некоторые программы для вывода шестнадцатеричного дампа могут иметь параметры вывода с основанием 8 (восьмеричный) или основанием 10 (десятичный). Некоторые общие имена для этой программной функции: шестнадцатеричный дамп, HD, od, xxd и просто свалка или даже D.

Образцы

Пример частичного шестнадцатеричного дампа программы, созданный Unix программа шестнадцатеричный дамп:

 00105e0 e6b0 343b 9c74 0804 e7bc 0804 e7d5 0804 00105f0 e7e4 0804 e6b0 0804 e7f0 0804 e7ff 0804 0010600 e80b 0804 e81a 0804 e6b0 0804 e6b0 0804

Крайний левый столбец - это шестнадцатеричный адрес для 16-битных значений следующих столбцов. Каждая строка представляет 16 байтов (10 в шестнадцатеричном формате).

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

 00105e0 e6 b008 04e79e08 04e7bc 08 04 e7 d50804

Когда требуется явная последовательность байтов (например, для шестнадцатеричного дампа Машинный код программы или ПЗУ content) предпочитается побайтовое представление, обычно организованное в 16-байтовые строки с дополнительным разделителем между 8-байтовыми группами:

 00105e0 e6 b0 08 04 e7 9e 08 04-e7 bc 08 04 e7 d5 08 04 00105f0 e7 e4 08 04 e6 b0 08 04-e7 f0 08 04 e7 ff 08 04 0010600 e8 0b 08 04 e8 1a 08 04-e6 b0 08 04 e6 b0 08 04

Изредка также используется конденсированная форма без пробельные символы между значениями:

 00105e0 e6b00804e79e0804e7bc0804e7d50804 00105f0 e7e40804e6b00804e7f00804e7ff0804 0010600 e80b0804e81a0804e6b00804e6b00804

Отображение тех же байтов по умолчанию в Unix как двухбайтовых слова на современном x86 (прямой порядок байтов ) компьютер обычно выглядел бы так:

 00105e0 b0e6 0408 9ee7 0408 bce7 0408 d5e7 0408 00105f0 e4e7 0408 b0e6 0408 f0e7 0408 ffe7 0408 0010600 0be8 0408 1ae8 0408 b0e6 0408 b0e6 0408

Часто в дополнительном столбце отображается соответствующий ASCII перевод текста (например, hexdump -C или же HD):

00000000 57 69 6b 69 70 65 64 69  61 2c 20 74 68 65 20 66  Википедия, ж00000010 72 65 65 20 65 6e 63 79  63 6c 6f 70 65 64 69 61  энциклопедия ри00000020 20 74 68 61 74 20 61 6e  79 6f 6e 65 20 63 61 6e   что любой может00000030 20 65 64 69 74                                   редактировать00000036

Контрольная сумма

Когда шестнадцатеричные дампы предназначены для ручного ввода в компьютер, как это было в случае с печатными журнальными статьями домашний компьютер эпоха, а контрольная сумма байт (или два) будет добавлен в конце каждой строки, обычно рассчитывается как простое 256 по модулю суммы всех значений в строке или более сложный CRC. Эта контрольная сумма будет использоваться для определения того, правильно ли пользователи вошли в строку.

Разнообразные форматы файлов шестнадцатеричного дампа, включая S-запись, Intel HEX, и Tektronix расширенный HEX - иметь аналогичное значение контрольной суммы в конце каждой строки.

Сжатие повторяющихся строк

В программах Unix od и шестнадцатеричный дамп, отображаются не все строки вывода на дисплей, содержащие те же данные, что и предыдущая строка; вместо этого отображается строка, содержащая только одну звездочку. Например, блок из всех нулей печатается как:

 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0000030

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

 # шестнадцатеричный дамп / dev / sda (замените sda на собственное имя за устройство для сканирования)

Параметр -v вызывает шестнадцатеричный дамп и od для отображения всех входных данных явно:

 0000000 0000 0000 0000 0000 0000 0000 0000 0000 0000010 0000 0000 0000 0000 0000 0000 0000 0000 0000020 0000 0000 0000 0000 0000 0000 0000 0000

od и hexdump

В системах Unix / POSIX / GNU: «Утилиты od и hexdump выводят восьмеричные, шестнадцатеричные или иным образом закодированные байты из файла или потока. В зависимости от типа вашей системы одна или обе из этих двух утилит будут доступны - ранее BSD системы устарели od для hexdump, системы GNU наоборот. Две утилиты, однако, имеют одно и то же назначение, только немного разные переключатели ".[1]Однако, начиная с POSIX, в 2002 году и FreeBSD [2] и GNU [3] отменил это решение, и od и hexdump полностью поддерживаются.

DUMP, DDT и DEBUG

в CP / M 8-битная операционная система, используемая на ранних персональных компьютерах, стандартная СВАЛКА программа будет перечислять файл с 16 байтами в строке с шестнадцатеричным смещением в начале строки и эквивалентом ASCII каждого байта в конце.[4] Байты вне стандартного диапазона печатаемых символов ASCII (от 20 до 7E) будут отображаться как один период для визуального выравнивания. Этот же формат использовался для отображения памяти при вызове D команда в стандартном отладчике CP / M ДДТ.[5] Более поздние воплощения формата (например, в отладчике DOS ОТЛАЖИВАТЬ) заменил пробел между 8-м и 9-м байтами на тире без изменения общей ширины.

Это обозначение было сохранено в операционных системах, которые были прямо или косвенно производными от CP / M, включая DR-DOS, MS-DOS, OS / 2 и MS-Windows. В системах Linux команда hexcat также создает этот классический выходной формат. Основная причина создания этого формата заключается в том, что он умещает максимальный объем данных на стандартном 80-символьном экране или принтере, при этом его очень легко читать и просматривать визуально.

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  Википедия, ж1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61  энциклопедия ри1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E   что любой может1234:0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00   редактировать...........

Здесь крайний левый столбец представляет адрес, по которому расположены байты, представленные следующими столбцами. CP / M и различные системы DOS работали в реальный режим на x86 Процессоры, где адреса состоят из двух частей (базы и смещения).

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

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  Википедия, ж1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61  энциклопедия ри1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E   что любой может1234:0030: 20 65 64 69 74                                    редактировать

или же

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  Википедия, ж1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61  энциклопедия ри1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E   что любой может1234:0030: 20 65 64 69 74 ** ** ** ** ** ** ** ** ** ** **   редактировать

Рекомендации

внешняя ссылка