Как да създадете Hexdump на файл или низ от текст

Въведение

Шестнадесетичен изглед е шестнадесетичен изглед на данните. Възможно е да използвате шестнадесетичен, когато отстранявате грешки в дадена програма или да извършите обратна инженерна програма.

Например, много файлови формати имат специфични шестнадесетични знаци, за да обозначат техния тип. Ако се опитвате да прочетете файл с програма и по някаква причина не се зареждате правилно, възможно е файлът да не е във формат, който очаквате.

Ако искате да видите как работи една програма и нямате изходния код или софтуера, който обръщате инженерите на кода, можете да разгледате шестнадесетичния дъмп, за да се опитате да разберете какво се случва.

Какво е шестнадесетичен?

Компютрите мислят в двоични . Всеки знак, номер и символ се посочват от двоични или множествени двоични стойности.

Човешките същества, обаче, са склонни да мислят в десетичен знак.

Хиляди Стотици Десетки Единици
1 0 1 1

Като хора, най-ниските ни номера се наричат ​​единици и представляват числата от 0 до 9. Когато стигнем до 10, възстановяваме колоната на единиците обратно на 0 и добавяме 1 към колоната от десетки (10).

128 64 32 16 8 4 2 1
1 0 0 1 0 0 0 1

В двоичното число, най-малкото число представлява само 0 и 1. Когато преминем през 1, поставяме 1 в колоната 2 и 0 в колоната 1. Когато искате да представите 4, поставете 1 в колоната 4 и нулирайте колоните 2 и 1.

Следователно, за да представите 15, ще имате 1111, което е 1 8, 1 4, 1 2 и 1. (8 + 4 + 2 + 1 = 15).

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

Следващата стъпка от двоичното е осмото, което използва 8 като базово число.

24 16 8 1
0 1 1 0

В октална система първата колона е от 0 до 7, втората колона е 8 до 15, третата колона 16 до 23 и четвъртата колона 24 до 31 и така нататък. Докато обикновено са по-лесни за четене от двоичните, повечето хора предпочитат да използват шестнадесетичен.

Шестнадесетичен използва 16 като базово число. Сега това е мястото, където става объркващо, защото като хора мислим, че числата са от 0 до 9.

Така че какво се използва за 10, 11, 12, 13, 14, 15? Отговорът е писма.

Следователно стойността 100 е представена от 64. Ще ви е необходима 6 колона от 16s, която извежда 96 и след това 4 в колоната на единиците, правейки 100.

Всички символи във файл ще бъдат обозначени с шестнадесетична стойност. Тези стойности зависят от формата на самия файл. Форматът на файла се обозначава с шестнадесетични стойности, които обикновено се съхраняват в началото на файла.

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

Как да създадете Hex Dump Използване на Linux

За да създадете шестнадесетичен дъмп, използвайки Linux, използвайте командата hexdump.

За да покажете файл като шестоъгълник към терминала (стандартен изход) изпълнете следната команда:

hexdump име на файл

Например

hexdump image.png

Изходът по подразбиране ще покаже номера на реда (в шестнадесетичен формат) и след това 8 серии от 4 шестнадесетични стойности на ред.

Например:

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

Можете да снабдите различни превключватели, за да промените изхода по подразбиране. Например, указването на превключвателя минус 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

Ако никой от горепосочените формати не отговаря на вашите нужди, използвайте превключвателя минус, за да определите формата.

Ако знаете, че даден файл с данни е много дълъг и просто искате да видите първите няколко знака, за да определите неговия тип, можете да използвате превключвателя -n, за да посочите колко от файла да се показва в шестнадесетичен.

hexdump -n100 image.png

Горната команда показва първите стота байта.

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

hexdump-s10 image.png

Ако не предоставите име на файл, текста се чете от стандартния вход.

Просто въведете следната команда:

hexdump

След това въведете текста в стандартния вход и завършете, като въведете quit. Хексът ще се покаже на стандартния изход.

резюме

Помощната програма hexdump очевидно е доста мощен инструмент и определено трябва да прочетете ръководството, за да се справите напълно с всички функции.

Бихте се нуждаели и от добро разбиране на това, което търсите, когато четете изхода.

За да видите ръководството, изпълнете следната команда:

man hexdump