stringtranslate.com

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

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

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

Некоторые распространенные имена для этой программной функции: hexdump, hd, odи xxdпросто dumpили даже D.

Образцы

Пример текстового файла:

0123456789ABCDEF/* ********************************************** */Стол с ТАБами (09)1 2 33,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 * 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 09 33 31 34 09 36 32 38 09 0000070 39 2e 34 32 0a 0000075                                                                                                       

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

В дополнительном столбце показан соответствующий перевод символов ASCIIhexdump -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 | **************** | * 00000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 | ** */..Таблица с | 00000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 | h TAB (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 в файле, который, как ожидается, будет использовать несколько пробелов.

Эта -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 | **************** | 00000030 | **************** | 00000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 | ** */..Таблица с | 00000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 | h TAB (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                                                                                                                             

од

Команду POSIX [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 2а 2а 0000040 2а 2а 2а 2а 2а 2а 2а 2а 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 0 а 09 31 09 09 0000140 32 09 09 33 0а 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 ABCDEF 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 460000020 \n / * * * * * * * * * * * * * 0а 2ж 2а 20 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а0000040 * * * * * * * * * * * * * * * * 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а 2а0000100 * * * / \n \t Таблица 2а 2а 20 2а 2е 0а 09 54 61 62 6в 65 20 77 69 740000120 ч TAB s ( 0 9 ) \n \t 1 \t \t 68 20 54 41 42 73 20 28 30 39 29 0а 09 31 09 090000140 2 \t \t 3 \n \t 3 . 1 4 \t 6 . 2 8 \т 32 09 09 33 0а 09 33 2е 31 34 09 36 2е 32 38 090000160 9 . 4 2 \ п  39 2е 34 32 0а 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 Википедия, ф 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 ** ** ** ** ** ** ** ** ** ** ** редактировать                                                                    

Смотрите также

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

  1. ^ Либераторе, Марк (весна 2017 г.). «02: шестнадцатеричный дамп». КОМПСИ 365/590F . Цифровая криминалистика. Архивировано из оригинала 29 октября 2023 г. Проверено 05 сентября 2022 г.
  2. ^ "ПОСИКС" . Проверено 29 октября 2023 г.
  3. ^ ab Руководство по операционной системе CP/M (PDF) (3-е изд.). Пасифик Гроув, Калифорния, США: Цифровые исследования . Сентябрь 1983 г., стр. 1–41, 4–5, 5–40–5–46. Архивировано (PDF) из оригинала 1 апреля 2023 г. Проверено 29 октября 2023 г.

Внешние ссылки