Introduksjon
En hex-dump er en heksadesimal visning av data. Det kan hende du ønsker å bruke heksadesimale når du feilsøker et program eller for å omforme et program.
For eksempel har mange filformater bestemte heksetecken for å betegne deres type. Hvis du prøver å lese en fil ved hjelp av et program og av en eller annen grunn ikke laster inn riktig, kan det hende at filen ikke er i det formatet du forventer.
Hvis du vil se hvordan et program fungerer, og du ikke har kildekoden eller programvaren som omvendt konstruerer koden, kan du se på hex-dumpen for å prøve å finne ut hva som skjer.
Hva er hexadecimal?
Datamaskiner tenker i binær. Hver karakter, tall og symbol refereres av binære eller flere binære verdier.
Menneskene har imidlertid en tendens til å tenke i desimal.
| tusenvis | hundrevis | titus~~POS=TRUNC | enheter |
| 1 | 0 | 1 | 1 |
Som mennesker kalles våre laveste tall for enheter og representerer tallene 0 til 9. Når vi kommer til 10, tilbakestiller vi enhetskolonnen tilbake til 0 og legger til 1 i tiene-kolonnen (10).
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
I binær representerer laveste tall kun 0 og 1. Når vi kommer forbi 1, setter vi en 1 i kolonnen til 2 og en 0 i 1-kolonnen. Når du vil representere 4, legger du en 1 i 4-kolonnen og tilbakestiller kolonne 2 og 1.
Derfor representerer 15 du vil ha 1111 som står for 1 åtte, 1 fire, 1 to og 1 ett. (8 + 4 + 2 + 1 = 15).
Hvis vi så på en datafil i binærformat, ville det være helt stort og praktisk talt umulig å forstå.
Det neste trinnet opp fra binær er oktal, som bruker 8 som basenummer.
| 24 | 16 | 8 | 1 |
| 0 | 1 | 1 | 0 |
I et oktalsystem går den første kolonnen fra 0 til 7, den andre kolonnen er 8 til 15, den tredje kolonne 16 til 23 og den fjerde kolonne 24 til 31 og så videre. Mens det generelt er lettere å lese enn binært, foretrekker folk flest å bruke heksadesimale.
Hexadecimal bruker 16 som basenummer. Nå er det her forvirrende, for som mennesker tenker vi på tall som 0 til 9.
Så hva er det som brukes til 10, 11, 12, 13, 14, 15? Svaret er bokstaver.
- 0 = 0
- 1 = 1
- 2 = 2
- 3 = 3
- 4 = 4
- 5 = 5
- 6 = 6
- 7 = 7
- 8 = 8
- 9 = 9
- 10 = A
- 11 = B
- 12 = C
- 13 = D
- 14 = E
- 15 = F
Verdien 100 er derfor representert ved 64. Du trenger 6 av 16s-kolonnen som bringer opp 96 og deretter 4 i enhetskolonnen som gjør 100.
Alle tegnene i en fil vil bli betegnet med en heksadesimal verdi. Hva disse verdiene betyr, avhenger av formatet til selve filen. Formatet på filen er betegnet med heksadesimale verdier som vanligvis lagres i begynnelsen av filen.
Med kjennskap til sekvensen av heksadesimale verdier som vises i begynnelsen av filene, kan du manuelt finne ut hvilket format filen er i. Ved å vise en fil i en hex-dump kan du finne skjulte tegn som ikke vises når filen er lastet inn i en vanlig tekstredigerer.
Slik lager du en hex dump ved hjelp av Linux
For å lage en hex-dump ved hjelp av Linux, bruk hexdump-kommandoen.
For å vise en fil som heks til terminalen (standardutgang), kjør følgende kommando:
hexdump filnavn
For eksempel
hexdump image.png
Standardutgangen viser linjenummeret (i heksadesimale format) og deretter 8 sett med 4 heksadesimale verdier per linje.
For eksempel:
00000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244
Du kan levere forskjellige brytere for å endre standardutgang. For eksempel angir minus b-bryteren en 8-sifret forskyvning etterfulgt av 16 tre kolonne, null fylt, byte av inngangsdata i oktalformat.
hexdump -b image.png
Derfor vil eksemplet ovenfor nå bli representert som følger:
00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122
Ovennevnte format er kjent som enbyte-oktalskjerm.
En annen måte å vise filen på, er i ett-byte tegnvisning ved hjelp av minus-c-bryteren.
hexdump -c image.png
Dette viser igjen forskyvningen, men denne gangen etterfølges av seksten mellomrom, tre kolonner, mellomfylte tegn på inngangsdata per linje.
Andre muligheter inkluderer Canonical hex + ascii display som kan vises med minus C-bryteren og to-byte desimalvisning som kan vises med minus d-bryteren. Minus o-bryteren kan brukes til å vise to-byte oktal-skjerm. Til slutt kan minux x-bryteren brukes til å vise to-bytes hexadecimal skjerm.
hexdump -C image.png
hexdump -d image.png
hexdump -o image.png
hexdump -x image.png
Hvis ingen av de ovennevnte formene passer til dine behov, bruker du minus e-bryteren til å spesifisere formatet.
Hvis du vet at en datafil er veldig lang og du bare vil se de første få tegnene for å bestemme dens type, kan du bruke -n-bryteren til å angi hvor mye av filen som skal vises i hex.
hexdump -n100 image.png
Kommandoen ovenfor viser de første hundre bytes.
Hvis du ønsker å hoppe over en del av filen, kan du bruke minus s-bryteren til å angi en forskyvning for å starte fra.
hexdump -s10 image.png
Hvis du ikke oppgir et filnavn, leses teksten fra standardinngangen.
Bare skriv inn følgende kommando:
hexdump
Skriv deretter inn teksten i standardinngangen og avslutt ved å skrive avslutte. Heksen vil bli vist til standardutgangen.
Sammendrag
Heksedumpen er åpenbart et ganske kraftig verktøy, og du bør definitivt lese den manuelle siden for å få tak i alle funksjonene.
Du vil også trenge en god forståelse av hva du leter etter når du leser utdataene.
For å vise den manuelle siden, kjør følgende kommando:
mann hexdump




