Шестнадцатеричный дамп
В вычислительной технике шестнадцатеричный дамп — это текстовое шестнадцатеричное представление (на экране или на бумаге) (часто, но не обязательно двоичных ) компьютерных данных из памяти , компьютерного файла или устройства хранения . Просмотр шестнадцатеричного дампа данных обычно выполняется в контексте отладки , обратного проектирования или цифровой криминалистики . [1] Интерактивные редакторы, которые обеспечивают аналогичное представление, но также манипулируют рассматриваемыми данными, называются шестнадцатеричными редакторами .
В шестнадцатеричном дампе каждый байт (8 бит ) представлен как двузначное шестнадцатеричное число. Шестнадцатеричные дампы обычно организуются в строки по 8 или 16 байт, иногда разделенные пробелами. шестнадцатеричный адрес памяти Некоторые шестнадцатеричные дампы имеют в начале .
Некоторые распространенные названия этой программной функции: hexdump
, hd
, od
, xxd
и просто dump
или даже D
.
Образцы
[ редактировать ]Пример текстового файла:
0123456789ABCDEF /* ********************************************** */ Table with TABs (09) 1 2 3 3.14 6.28 9.42
как отображается Unix hexdump
:
0000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46
0000010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a
0000020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a
*
0000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74
0000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09
0000060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09
0000070 39 2e 34 32 0a
0000075
Самый левый столбец — это шестнадцатеричное смещение (или адрес) значений следующих столбцов. Каждая строка отображает 16 байт, за исключением строки, содержащей один *. Символ * используется для обозначения того, что несколько раз одно и то же отображение было опущено. Последняя строка отображает количество байт, взятых из ввода.
В дополнительном столбце показан соответствующий ASCII с перевод символов hexdump -C
или hd
:
00000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 |0123456789ABCDEF|
00000010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |./* ************|
00000020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************|
*
00000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 |** */..Table wit|
00000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 |h TABs (09)..1..|
00000060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09 |2..3..3.14.6.28.|
00000070 39 2e 34 32 0a |9.42.|
00000075
Это полезно при попытке найти символы TAB в файле, который, как ожидается, будет использовать несколько пробелов.
The -v
опция заставляет шестнадцатеричный дамп подробно отображать все данные:
00000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 |0123456789ABCDEF|
00000010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |./* ************|
00000020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************|
00000030 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************|
00000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 |** */..Table wit|
00000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 |h TABs (09)..1..|
00000060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09 |2..3..3.14.6.28.|
00000070 39 2e 34 32 0a |9.42.|
00000075
из
[ редактировать ]ПОСИКС [2] Команда может использоваться для отображения шестнадцатеричного дампа с опцией -tx.
# od -tx1 tableOfTabs.txt
0000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46
0000020 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a
0000040 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a
*
0000100 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74
0000120 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09
0000140 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09
0000160 39 2e 34 32 0a
0000165
Оценки символов можно добавить с помощью опции -c:
0000000 0 1 2 3 4 5 6 7 8 9 A B C D E F 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 0000020 \n / * * * * * * * * * * * * * 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0000040 * * * * * * * * * * * * * * * * 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0000100 * * * / \n \t T a b l e w i t 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 0000120 h T A B s ( 0 9 ) \n \t 1 \t \t 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 0000140 2 \t \t 3 \n \t 3 . 1 4 \t 6 . 2 8 \t 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09 0000160 9 . 4 2 \n 39 2e 34 32 0a 0000165
В этом выводе символы TAB отображаются как \t, а символы новой строки — как \n.
ДАМП, ДДТ и ОТЛАДКА
[ редактировать ]В 8-битной операционной системе CP/M, использовавшейся на первых персональных компьютерах, стандартная программа DUMP выводила файл по 16 байтов в строке с шестнадцатеричным смещением в начале строки и ASCII-эквивалентом каждого байта в конце. [3] : 1-41, 5-40–5-46 Байты, выходящие за пределы стандартного диапазона печатаемых символов ASCII (от 20 до 7E), будут отображаться как одна точка для визуального выравнивания. Этот же формат использовался для отображения памяти при вызове команды D в стандартном отладчике CP/M DDT . [3] : 4-5 Более поздние воплощения формата (например, в отладчике DOS DEBUG ) изменили пространство между 8-м и 9-м байтами на тире, не меняя общую ширину.
Это обозначение было сохранено в операционных системах, которые были прямо или косвенно производными от CP/M, включая DR-DOS , MS-DOS / PC DOS , OS/2 и Windows . В системах Linux команда hexcat также создает этот классический формат вывода. Основная причина создания этого формата заключается в том, что он умещает максимальный объем данных на стандартном экране или принтере шириной 80 символов, при этом его очень легко читать и просматривать визуально.
1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Wikipedia, the f
1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia
1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E that anyone can
1234:0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00 edit...........
Здесь самый левый столбец представляет адрес, по которому расположены байты, представленные следующими столбцами. CP/M и различные DOS системы работали в реальном режиме на x86 процессорах , где адреса состоят из двух частей (базовой и смещенной).
В приведенных выше примерах последние 00 — это несуществующие байты после конца файла. Некоторые инструменты дампа отображают другие символы, чтобы было ясно, что они находятся за пределами файла, обычно с использованием пробелов или звездочек, например:
1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Wikipedia, the f
1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia
1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E that anyone can
1234:0030: 20 65 64 69 74 edit
или
1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Wikipedia, the f
1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia
1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E that anyone can
1234:0030: 20 65 64 69 74 ** ** ** ** ** ** ** ** ** ** ** edit
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Либераторе, Марк (весна 2017 г.). «02: шестнадцатеричный дамп» . КОМПСИ 365/590F . Цифровая криминалистика. Архивировано из оригинала 29 октября 2023 г. Проверено 05 сентября 2022 г.
- ^ «ПОСИКС» . Проверено 29 октября 2023 г.
- ↑ Перейти обратно: Перейти обратно: а б Руководство по операционной системе CP/M (PDF) (3-е изд.). Пасифик Гроув, Калифорния, США: Цифровые исследования . Сентябрь 1983 г., стр. 1–41, 4–5, 5–40–5–46. Архивировано (PDF) из оригинала 1 апреля 2023 г. Проверено 29 октября 2023 г.
Внешние ссылки
[ редактировать ]- Как использовать утилиту Hexdump Unix . Подробные примеры.
- hdr Hexdump с цветными диапазонами для облегчения визуализации. Параметры пропуска данных, отображения битовых полей, определения сложного диапазона... перейдите по ссылке на «hdr_examples.pod».
- Шестнадцатеричная шпаргалка для поиска байтовых и полубайтовых битов.