- Как использовать команду hexdump в Linux?
- Hexdump в Linux
- Использование Hexdump
- Однобайтовый восьмеричный
- Отображение однобайтовых символов
- Канонический шестнадцатеричный + ASCII
- Двухбайтовый десятичный
- Двухбайтовый восьмеричный
- Двухбайтовый шестнадцатеричный
- Показать весь ввод
- Ограничить количество байтов
- Последняя мысль
- 10+ Practical “hexdump” Command Usage Examples in Linux
- Linux hexdump to ascii
- Примеры использования
- Исследование заголовка бинарного файла
- Исследование завершающей секции бинарного файла
- hexdump – Команда Linux – Команда Unix
- конспект
- Описание
- Форматы
Как использовать команду hexdump в Linux?
Главное меню » Linux » Как использовать команду hexdump в Linux?
Вот пример из реальной жизни, где может быть полезен hexdump. Если вы работаете с двоичными данными, это будет очень сложно понять. Для удобства вы можете быстро преобразовать двоичные данные в шестнадцатеричные или десятичные.
В этом руководстве вы узнаете, как использовать команду hexdump в Linux.
Hexdump в Linux
Hexdump – это простая, но полезная программа, написанная на языке C. Вот почему профессиональные программисты на C могут легко использовать его. Однако, даже если у вас нет опыта программирования на C, вы все равно можете использовать hexdump для своих целей.
Hexdump предустановлен в любом дистрибутиве Linux. В этой статье мы будем использовать Ubuntu в демонстрационных целях.
Использование Hexdump
Для демонстрации использования hexdump я создал образец текстового файла dummy.txt.
Мы передадим этот файл в hexdump, чтобы преобразовать его содержимое в различные форматы вывода.
Однобайтовый восьмеричный
Следующая команда hexdump распечатает входные данные в шестнадцатеричном формате. В выводе каждая строка содержит 16 байтов входных данных, разделенных пробелами, каждый из которых имеет 3 столбца и заполнен нулями в восьмеричном формате.
Отображение однобайтовых символов
Следующая команда hexdump отобразит входные данные в шестнадцатеричном формате. В выводе каждая строка содержит 16 символов входных данных, разделенных пробелами, каждый из которых имеет 3 столбца и заполнен пробелами.
Канонический шестнадцатеричный + ASCII
Следующая команда hexdump отобразит входные данные в шестнадцатеричном формате. В выводе каждая строка содержит 16 шестнадцатеричных байтов, разделенных пробелами, по 2 столбца в каждом. Следующее содержимое будет теми же байтами в формате % _p , заключенными в «|» символы.
Двухбайтовый десятичный
Следующая команда hexdump отобразит входные данные в шестнадцатеричном формате. В выводе каждая строка содержит 8 разделенных пробелом двухбайтовых блоков входных данных, каждая из которых имеет 5 столбцов и заполнена нулями в десятичном формате без знака.
Двухбайтовый восьмеричный
Следующая команда hexdump распечатает входные данные в шестнадцатеричном формате. В выводе каждая строка содержит 8 разделенных пробелами 2 байта входных данных, каждый из которых содержит 6 столбцов и заполнен нулями в восьмеричном формате.
Двухбайтовый шестнадцатеричный
Следующая команда hexdump распечатает входные данные в шестнадцатеричном формате. В выводе каждая строка содержит 8 разделенных пробелами 2 байта входных данных, каждый с 4 столбцами и заполненными нулями в шестнадцатеричном формате.
Показать весь ввод
При использовании шестнадцатеричного дампа он заменяет содержимое повторяющихся строк одной звездочкой. Если вы хотите заставить hexdump выводить все содержимое, используйте флаг «-v».
Ограничить количество байтов
Hexdump поддерживает опцию определения определенного количества байтов из файла в hexdump. Чтобы указать количество, используйте флаг «-s», за которым следует количество байтов.
Последняя мысль
Демонстрируемые здесь примеры – это способы, которыми вы в основном будете использовать hexdump. Полную информацию о hexdump можно найти на странице руководства – один из лучших ресурсов.
Hexdump – мощный инструмент, если вы знаете, когда и как его использовать. Однако инструменты не всегда помогают при отладке. Узнайте, как отлаживать сценарий bash . Если вам нравится NodeJS, узнайте, как использовать отладчик NodeJS .
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
10+ Practical “hexdump” Command Usage Examples in Linux
This tutorial explains Linux “hexdump” command, options and its usage with examples.
Usage:
hexdump [-bcCdovx] [-e format_string] [-f format_file] [-n length] [-s skip] file…
* Hexdump is a Linux command that provides many options to dump file contents.
* It can dump file contents into formats such as hexadecimal, octal, ASCII, decimal.
* This command takes input either from a file or standard input.
* Hexdump is very helpful utility for debugging and verifying file contents written by any application program.
Hexdump utility provides options to display file contents in a 2-byte format
Here’s the listing of example usage of “hexdump” command:
We are going to use file sample.txt as input.
1. To display file contents in hexadecimal format(hexdump -x file_path):
Here as we can see, hexdump utility picks in chunk of 2 bytes from file and displays them from LSB(least significant) (i.e. last one) to MSB(Most significant) (i.e. first one). As in here from file sample.txt first chunk of 2 bytes is “12” and it is represented as 3231 in the hexdump format, since we know that ASCII value of 1 is 49 and in the hex form 49 is written as 31.Similarly 34 is represented as 3433 in the hexdump format. The last one i.e ‘\n’ character is represented as 0x0a Since ASCII value of ‘\n’ is 10. Here input offset is also shown and it is 0000000 and ending at 0000005 that shows that in all 5 bytes were dumped(4 of “1234” and 1 for ‘\n’).
A line displayed in output contains a maximum of 8 entries in it.
Источник
Linux hexdump to ascii
Команда hexdump предназначена для вызова одноименной утилиты, осуществляющей вывод содержимого бинарных файлов. При этом помимо стандартного формата вывода, знакомого по hex-редакторам, утилита поддерживает различные экзотические форматы вывода, а также позволяет пользователю самому описывать необходимый ему формат вывода. При установке пакета с утилитой в системе создается символьная ссылка с именем hd, позволяющая вывести содержимое бинарного файла в классическом формате.
Базовый синтаксис команды выглядит следующим образом:
$ hexdump [параметры] имя-бинарного-файла
Утилита позволяет задать длину исследуемого фрагмента файла в байтах с помощью параметра -n, сдвиг от начала файла в байтах с помощью параметра -s, задать строку форматирования с помощью параметра -e, а также выбрать формат вывода с помощью одного из описанных ниже параметров. Чтобы было понятнее, для начала создадим текстовый файл со строкой «linux-faq.ru» с помощью следующей команды:
$ echo «linux-faq.ru» > hexdump.txt
Проверим содержимое этого файла:
$ cat hexdump.txt
linux-faq.ru
Теперь используем команду hexdump без каких-либо параметров для исследования этого файла:
$ hexdump hexdump.txt
0000000 696c 756e 2d78 6166 2e71 7572 000a
000000d
Это используемый по умолчанию, неудобный формат вывода. Очевидно, что в столбце слева приведены 32-битные адреса, а после них следуют шестнадцатеричные представления пар байтов. Эквивалентный результат будет выведен при использовании параметра -x, правда с немного измененным форматированием:
$ hexdump -x hexdump.txt
0000000 696c 756e 2d78 6166 2e71 7572 000a
000000d
Используем параметр -b для исследования файла:
$ hexdump -b hexdump.txt
0000000 154 151 156 165 170 055 146 141 161 056 162 165 012
000000d
В этом формате после шестнадцатеричных значений сдвигов выводятся восьмеричные значения каждого из байтов файла.
Используем параметр -c для исследования файла:
$ hexdump -c hexdump.txt
0000000 l i n u x — f a q . r u n
000000d
В этом формате после шестнадцатеричных значений выводятся непосредственно символы.
Используем параметр -d для исследования файла:
$ hexdump -d hexdump.txt
0000000 26988 30062 11640 24934 11889 30066 00010
000000d
В этом формате после шестнадцатеричных значений сдвигов приводятся десятичные представления пар байтов.
Используем параметр -o для исследования файла:
$ hexdump -o hexdump.txt
0000000 064554 072556 026570 060546 027161 072562 000012
000000d
В этом формате после шестнадцатеричных значений сдвигов приводятся восьмеричные представления пар байтов.
Наконец, используем параметр -C для исследования файла:
$ hexdump -C hexdump.txt
00000000 6c 69 6e 75 78 2d 66 61 71 2e 72 75 0a |linux-faq.ru.|
0000000d
Это классический формат hex-редакторов, который предусматривает вывод шестнадцатеричных значений всех байтов файла с соответствующими им символами.
Примечание: существует команда hd, реализованная в виде символьной ссылки на бинарный файл утилиты hexdump с параметром -C. Ее удобно использовать для исследования бинарных файлов, так как не приходится запоминать необходимый параметр утилиты hexdump.
Примеры использования
Исследование заголовка бинарного файла
Для исследования заголовка бинарного файла следует использовать параметр -n, позволяющий задать длину этого заголовка, а также параметр -C, активирующий удобный формат вывода:
$ hexdump -n 41 -C hexdump.zip
00000000 50 4b 03 04 14 00 08 00 08 00 55 b0 4d 4d 00 00 |PK. U.MM..|
00000010 00 00 00 00 00 00 0d 00 00 00 0b 00 20 00 68 65 |. .he|
00000020 78 64 75 6d 70 2e 74 78 74 |xdump.txt|
00000029
В выводе несложно обнаружить имя находящегося в архиве файла hexdump.txt.
Исследование завершающей секции бинарного файла
Для исследования завершающей секции бинарного файла следует использовать параметр -s, позволяющий указать длину сдвига от начала файла в байтах, а также параметр -C, активирующий удобный формат вывода:
$ hexdump -s 115815 -C rg1024-grass.tga
0001c467 54 52 55 45 56 49 53 49 4f 4e 2d 58 46 49 4c 45 |TRUEVISION-XFILE|
0001c477 2e 00 |..|
0001c479
В выводе ясно виден идентификатор нового формата файла TGA.
Источник
hexdump – Команда Linux – Команда Unix
hexdump – ascii, десятичный, шестнадцатеричный, восьмеричный дамп
конспект
[- bcCdovx ] -words [- e format_string ] -words [- f format_file ] -words [- n длина ] -words [- s пропустить ] файл. ..
Описание
Утилита hexdump представляет собой фильтр, который отображает указанные файлы или стандартный ввод, если файлы не указаны, в указанном пользователем формате.
Возможны следующие варианты:
-b
Однобайтовое восьмеричное отображение Отображает смещение ввода в шестнадцатеричном формате, за которым следуют шестнадцать разделенных пробелом трехбайтных заполненных нулями байтов входных данных в восьмеричном виде на строку.
-c
Отображение однобайтовых символов Отображение смещения ввода в шестнадцатеричном формате, за которым следуют шестнадцать разделенных пробелами трехстрочных символов, заполненных пробелом, символов входных данных на строку.
-C
Канонический шестнадцатеричный + ASCII-дисплей Показать смещение ввода в шестнадцатеричном формате, за которым следуют шестнадцать разделенных пробелами двух столбцов шестнадцатеричных байтов, за которыми следуют те же шестнадцать байтов в формате% _p, заключенные в символы “ | ” ,
-d
Двухбайтовое десятичное отображение Отображение входного смещения в шестнадцатеричном формате, за которым следуют восемь разделенных пробелами пятиблочных заполненных нулями двухбайтовых единиц входных данных в десятичном формате без знака на строку.
-e format_string
Укажите строку формата, которая будет использоваться для отображения данных.
-f format_file
Укажите файл, который содержит одну или несколько строк формата, разделенных символом новой строки. Пустые строки и строки, первым непустым символом которых является хеш-метка ( # , игнорируются.
-n Длина
Интерпретировать только длину байтов ввода.
-o
Двухбайтовое восьмеричное отображение Отображает смещение ввода в шестнадцатеричном формате, за которым следуют восемь разделенных пробелами двухбайтных двухбайтовых количеств входных данных, в восьмеричном, на строку.
-s смещение
Пропустить смещение байтов от начала ввода. По умолчанию смещение интерпретируется как десятичное число. С начальным 0x или 0X смещение интерпретируется как шестнадцатеричное число, в противном случае с начальным 0 Смещение интерпретируется как восьмеричное число. Добавление символа b k или m к смещению приводит к его интерпретации как кратное 512 1024 или 1048576 соответственно.
-v
Опция – v заставляет hexdump отображать все входные данные. Без параметра – v любое количество групп выходных строк, которые будут идентичны непосредственно предшествующей группе выходных строк (за исключением входных смещений), заменяется строкой, состоящей из одного звездочка.
-x
Двухбайтовое шестнадцатеричное отображение Отображение входного смещения в шестнадцатеричном формате, за которым следуют восемь, разделенных пробелами, четыре столбца, заполненные нулями, двухбайтовые количества входных данных, в шестнадцатеричном формате, на строку.
Для каждого входного файла последовательно копирует входные данные в стандартный вывод, преобразуя данные в соответствии со строками формата, заданными параметрами – e и – f , в том порядке, в котором они были указаны.
Форматы
Строка формата содержит любое количество единиц формата, разделенных пробелами. Единица формата содержит до трех элементов: счетчик итераций, счетчик байтов и формат.
Счетчик итераций является необязательным положительным целым числом, по умолчанию равным единице. К каждому формату применяется количество итераций.
Число байтов является необязательным положительным целым числом. Если указан, он определяет количество байтов, которые будут интерпретироваться каждой итерацией формата.
Если указан счетчик итераций и/или счетчик байтов, после счетчика итераций и/или до счетчика байтов необходимо поместить один слеш, чтобы устранить их неоднозначность. Любые пробелы до или после косой черты игнорируются.
Формат обязателен и должен быть заключен в двойные кавычки (“”). Он интерпретируется как строка формата в стиле fprintf (см. Fprintf (3)), со следующими исключениями:
- Звездочка (*) не может использоваться в качестве ширины или точности поля.
- Счетчик байтов или точность поля требуется для каждого символа преобразования “ s ” (в отличие от значения по умолчанию fprintf (3), которое печатает всю строку, если точность не указана).
- Символы преобразования “ h ”, “ l ”, “ n ”, “ p ” и “ q ” не поддерживаются.
- Поддерживаются escape-последовательности из одного символа, описанные в стандарте C:
Hexdump также поддерживает следующие дополнительные строки преобразования:
_а [ DOX ]
Отображение входного смещения, накопленного по входным файлам, следующего отображаемого байта. Добавленные символы d o и x определяют основание дисплея как десятичное, восьмеричное или шестнадцатеричное соответственно.
_А [ DOX ]
Идентичен строке преобразования _a , за исключением того, что она выполняется только один раз, когда все входные данные обработаны.
_c
Выведите символы в наборе символов по умолчанию. Непечатаемые символы отображаются в виде трехбуквенных восьмеричных символов, за исключением тех, которые представлены стандартными escape-обозначениями (см. Выше), которые отображаются в виде двухсимвольных строк.
_p
Выведите символы в наборе символов по умолчанию. Непечатаемые символы отображаются как один “ . ”
_u
Выведите символы ASCII США, за исключением того, что управляющие символы отображаются с использованием следующих строчных имен. Символы больше 0xff, шестнадцатеричные, отображаются в виде шестнадцатеричных строк.
000 nul 001 soh 002 stx 003 etx 004 eot 005 enq
006 ack 007 бел 008 bs 009 ht 00A lf 00B vt
00C ff 00D cr 00E, поэтому 00F si 010 dle 011 dc1
012 DC2 013 DC3 014 DC4 015 Nak 016 Syn 017 ETB
018 банок 019 em 01A sub 01B esc 01C fs 01D gs
01E 01F us 0FF del
Значения байтов по умолчанию и поддерживаемых байтов для символов преобразования следующие:
% _ c,% _p,% _u,% c
Один байт считается только.
% d,% i,% o % u,% X,% x
Поддерживается четыре байта по умолчанию, один, два и четыре байта.
% E,% e,% f % G,% g
Восемь байтов по умолчанию, поддерживается четыре байта.
Количество данных, интерпретируемое каждой строкой формата, является суммой данных, требуемых каждой единицей формата, которая представляет собой число итераций, умноженное на количество байтов, или число итераций, умноженное на количество байтов, требуемое форматом, если число байтов не указано.
Входные данные обрабатываются в «блоках», где блок определяется как наибольшее количество данных, указанное в любой строке формата. Строки форматирования интерпретируют меньше данных входного блока, последний блок форматирования которых интерпретирует некоторое количество байтов и не имеет заданного числа итераций, увеличивают счетчик итераций до тех пор, пока не будет обработан весь входной блок или не будет достаточно данных оставаясь в блоке, чтобы удовлетворить формат строки.
Если в результате пользовательской спецификации или hexdump, изменяющего счетчик итераций, как описано выше, счетчик итераций больше единицы, во время последней итерации никакие завершающие пробельные символы не выводятся.
Ошибочно указывать количество байтов, а также несколько символов или строк преобразования, если только все символы, кроме одного, или строки преобразования не являются _a или _A .
Если в результате задания параметра – n или достижения конца файла входные данные только частично удовлетворяют строке формата, входной блок дополняется нулями в достаточной степени, чтобы отобразить все доступные данные (т.е. любые единицы формата, перекрывающие конец данных, будут отображать некоторое количество нулевых байтов).
Дальнейший вывод строк такого формата заменяется эквивалентным количеством пробелов. Эквивалентное количество пробелов определяется как количество пробелов, выводимых символом преобразования s с той же шириной поля и точностью, что и исходный символ преобразования или строка преобразования, но с любым “ + ” “ ” “ # ” удалены символы флагов преобразования и со ссылкой на пустую строку.
Если строки формата не указаны, отображение по умолчанию эквивалентно указанию параметра – x .
в случае успеха выходит 0 и> 0 в случае ошибки.
Источник