Hoe om 'n hexdump van 'n lêer of string van teks te skep

inleiding

'N Hex-dump is 'n heksadesimale data-aansig. U kan heksadesimale gebruik wanneer u 'n program ontfout of om 'n program te herontwerp.

Byvoorbeeld, baie lêerformate het spesifieke heks karakters om hul tipe te aandui. As jy probeer om 'n lêer te lees deur 'n program te gebruik en om een ​​of ander rede dit nie korrek laai nie, is dit dalk dat die lêer nie in die formaat is wat jy verwag nie.

As jy wil sien hoe 'n program werk en jy nie die bronkode of sagteware het nie, wat die kode omskep, kan jy na die hex-dump kyk om uit te vind wat aangaan.

Wat is hexadecimale?

Rekenaars dink in binêre . Elke karakter, getal en simbool word verwys deur 'n binêre of veelvoudige binêre waardes.

Mense is egter geneig om in desimale te dink.

duisende Honderde tien eenhede
1 0 1 1

As mens word ons laagste getalle eenhede genoem en verteenwoordig die nommers 0 tot 9. Wanneer ons 10 bereik, stel ons die eenhede kolom terug na 0 en voeg 1 by die tien kolom (10).

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

In binêre vorm verteenwoordig die laagste getal slegs 0 en 1. As ons verby 1 gaan, plaas ons 1 in die 2 se kolom en 0 in die 1 kolom. As jy 4 wil voorstel, plaas jy 'n 1 in die 4 kolom en stel die 2's en 1 se kolom terug.

Om 15 voor te stel, sou jy 1111 hê wat vir 1 agt, 1 vier, 1 twee en 1 een staan. (8 +4 +2 +1 = 15).

As ons 'n data lêer in binêre formaat besigtig het, sou dit absoluut groot en feitlik onmoontlik wees om sin te maak.

Die volgende stap uit binêre is oktal, wat 8 as die basisnommer gebruik.

24 16 8 1
0 1 1 0

In 'n oktale stelsel gaan die eerste kolom van 0 tot 7, die tweede kolom is 8 tot 15, die derde kolom 16 tot 23 en die vierde kolom 24 tot 31 ensovoorts. Alhoewel dit gewoonlik makliker is om te lees as binêr, verkies die meeste mense heksadesimaal.

Hexadecimal gebruik 16 as die basis nommer. Nou is dit waar dit verwarrend raak, want soos mense dink ons ​​aan getalle as 0 tot 9.

So wat word vir 10, 11, 12, 13, 14, 15 gebruik? Die antwoord is briewe.

Die waarde 100 word dus deur 64 voorgestel. Jy benodig 6 van die 16s kolom wat 96 en dan 4 in die eenhede kolom maak wat 100 maak.

Al die karakters in 'n lêer word aangedui met 'n heksadesimale waarde. Wat hierdie waardes beteken, hang af van die formaat van die lêer self. Die formaat van die lêer word aangedui deur heksadesimale waardes wat gewoonlik aan die begin van die lêer gestoor word.

Met kennis van die volgorde van heksadesimale waardes wat aan die begin van lêers voorkom, kan u die formaat van die lêer handmatig uitwerk. 'N lêer in 'n hex-dump kan besigtig, kan u versteekte karakters vind wat nie vertoon word wanneer die lêer is nie gelaai in 'n normale teksredakteur.

Hoe om 'n Hex Dump te skep met behulp van Linux

Om 'n hex dump met behulp van Linux te gebruik, gebruik die hexdump opdrag.

Om 'n lêer as 'n heks na die terminale (standaard uitvoer) te vertoon, voer die volgende opdrag uit:

hexdump lêernaam

Byvoorbeeld

hexdump image.png

Die standaard uitvoer sal die lynnommer (in heksadesimale formaat) en dan 8 stelle 4 heksadesimale waardes per lyn vertoon.

Byvoorbeeld:

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

U kan verskillende skakelaars verskaf om die standaard uitvoer te verander. Byvoorbeeld, om die minus b skakelaar te spesifiseer, sal 'n 8-syfer offset produseer, gevolg deur 16 drie kolom, nul gevul, grepe invoer data in oktaal formaat.

hexdump -b image.png

Daarom sal die bostaande voorbeeld nou soos volg voorgestel word:

00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122

Bogenoemde formaat staan ​​bekend as een-byte-oktale vertoning.

'N Ander manier om die lêer te besigtig, is in die een-byte-karaktervertoning met die minus-omskakelaar.

hexdump -c image.png

Dit wys weer die offset, maar hierdie keer gevolg deur sestien spasies geskei, drie kolom, spasie vol karakters van inset data per reël.

Ander opsies sluit in die Canonical hex + ascii-skerm wat met die minus C-skakelaar en twee-byte desimale skerm vertoon kan word wat met die minus-skakelaar vertoon kan word. Die minus-o-skakelaar kan gebruik word om twee-byte-oktale vertoning te vertoon. Uiteindelik kan die minux x skakelaar gebruik word om twee-byte heksadesimaal te vertoon.

hexdump -C image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

As nie een van die bostaande formate by u behoeftes pas nie, gebruik die minus-skakelaar om die formaat te spesifiseer.

As jy weet dat 'n data lêer baie lank is en jy wil net die eerste paar karakters sien om die tipe te bepaal, kan jy die -n skakelaar gebruik om te spesifiseer hoeveel van die lêer in hex moet vertoon.

hexdump -n100 image.png

Bogenoemde opdrag gee die eerste honderd grepe.

As u 'n gedeelte van die lêer wil oorskry, kan u die minus se skakelaar gebruik om 'n offset in te stel om van te begin.

hexdump -s10 image.png

As u nie 'n lêernaam verskaf nie, word die teks vanaf die standaardinvoer gelees.

Tik die volgende opdrag:

hexdump

Voer dan die teks in die standaard insette en voltooi deur die tik op te tik. Die hex sal vertoon word na die standaard uitvoer.

opsomming

Die hexdump nut is natuurlik 'n redelik kragtige instrument en jy moet beslis die handleiding lees om volledig met al die funksies te gaan.

Jy sal ook 'n goeie begrip hê van wat jy soek wanneer jy die uitset lees.

Om die handleiding te besigtig, voer die volgende opdrag uit:

man hexdump