Skip to main content

Sådan oprettes et hexdump af en fil eller tekststreng

click (April 2025)

click (April 2025)
Anonim

Introduktion

Et hex-dump er en hexadecimal visning af data. Du kan ønske at bruge hexadecimal, når du fejler et program eller omdrejning af et program.

For eksempel har mange filformater bestemte hex-tegn til at angive deres type. Hvis du prøver at læse en fil ved hjælp af et program og af en eller anden grund ikke læser det korrekt, kan det være, at filen ikke er i det format, du forventer.

Hvis du vil se, hvordan et program fungerer, og du ikke har kildekoden eller det software, som omvendt konstruerer koden, kan du se på hex-dumpen for at prøve at finde ud af, hvad der sker.

Hvad er hexadecimal?

Computere tænker i binære. Hver tegn, tal og symbol refereres af en binær eller flere binære værdier.

Mennesker har imidlertid tendens til at tænke i decimal.

TusinderhundredvisTensEnheder
1011

Som mennesker kaldes vores laveste tal enheder og repræsenterer tallene 0 til 9. Når vi kommer til 10, nulstiller vi kolonnenheder tilbage til 0 og tilføjer 1 til tienden kolonne (10).

1286432168421
10010001

I binær er det laveste antal kun 0 og 1. Når vi kommer forbi 1, sætter vi en 1 i 2 søjlen og en 0 i 1 søjlen. Når du vil repræsentere 4, sætter du en 1 i 4 kolonnen og nulstiller 2 og 1 søjlen.

Derfor for at repræsentere 15 ville du have 1111, der står for 1 otte, 1 fire, 1 to og 1 en. (8 + 4 + 2 + 1 = 15).

Hvis vi betragtede en datafil i binært format, ville det være helt stort og næsten umuligt at gøre mening af.

Det næste trin op fra binære er oktal, som bruger 8 som basisnummer.

241681
0110

I et oktalsystem går den første søjle fra 0 til 7, den anden søjle er 8 til 15, den tredje søjle 16 til 23 og den fjerde søjle 24 til 31 og så videre. Mens det generelt er lettere at læse end binært, foretrækker de fleste at bruge hexadecimal.

Hexadecimal bruger 16 som basenummer. Nu er det her, hvor det bliver forvirrende, for som mennesker tænker vi på tal som 0 til 9.

Så hvad bruges til 10, 11, 12, 13, 14, 15? Svaret er bogstaver.

  • 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

Værdien 100 er derfor repræsenteret af 64. Du vil have brug for 6 af 16s kolonnen, der bringer 96 op og derefter 4 i enheds kolonnen, der gør 100.

Alle tegnene i en fil vil blive angivet med en hexadecimal værdi. Hvad disse værdier betyder, afhænger af filens format. Formatet på filen er angivet ved hexadecimale værdier, som normalt gemmes i starten af ​​filen.

Med kendskab til sekvensen af ​​hexadecimale værdier, der vises i begyndelsen af ​​filer, kan du manuelt finde ud af, hvilket format filen er i. At se en fil i et hex-dump kan hjælpe dig med at finde skjulte tegn, der ikke vises, når filen er indlæst i en normal teksteditor.

Sådan oprettes en hex dump ved hjælp af Linux

For at oprette en hex dump ved hjælp af Linux brug hexdump kommandoen.

For at vise en fil som hex til terminalen (standard output), kør følgende kommando:

hexdump filnavn

For eksempel

hexdump image.png

Standardudgangen viser linjenummeret (i hexadecimalt format) og derefter 8 sæt 4 hexadecimale værdier pr. Linje.

For eksempel:

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

Du kan levere forskellige omskiftere for at ændre standard output. For eksempel angiver minus b-omskifter en 8-cifret forskydning efterfulgt af 16 tre kolonne, nulfyldte, byte af inputdata i oktalformat.

hexdump -b image.png

Derfor vil ovenstående eksempel nu blive repræsenteret som følger:

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

Ovennævnte format er kendt som one-byte octal display.

En anden måde at se filen på, er i et byte tegn display ved hjælp af minus c-kontakten.

hexdump -c image.png

Dette viser igen forskydningen, men denne gang efterfølges af seksten rumskilt, tre kolonner, mellemrumsfyldte tegn på inputdata pr. Linje.

Andre valgmuligheder omfatter Canonical hex + ascii display, som kan vises med minus C-kontakten og to-byte decimaldisplay, som kan vises med minus d-kontakten. Minus o-kontakten kan bruges til at vise tobytes octal display. Endelig kan minux x-switchen bruges til at vise to-bytes hexadecimal display.

hexdump -C image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

Hvis ingen af ​​ovenstående formater passer til dine behov, skal du bruge minus e-kontakten til at angive formatet.

Hvis du ved, at en datafil er meget lang, og du bare vil se de første få tegn til at bestemme dens type, kan du bruge -n-knappen til at angive, hvor meget af filen der skal vises i hex.

hexdump -n100 image.png

Ovenstående kommando viser de første hundred byte.

Hvis du ønsker at springe over en del af filen, kan du bruge minus s-knappen til at indstille en forskydning for at starte fra.

hexdump -s10 image.png

Hvis du ikke angiver et filnavn, læses teksten fra standardindgangen.

Indtast blot følgende kommando:

Hexdump

Indtast derefter teksten i standardindgangen og afslut ved at skrive afslut. Heksen vil blive vist til standardudgangen.

Resumé

Heksdumpen er naturligvis et ret kraftfuldt værktøj, og du bør helt sikkert læse den manuelle side for at få fat i alle funktionerne.

Du vil også have brug for en god forståelse af, hvad du leder efter, når du læser output.

For at se den manuelle side, kør følgende kommando:

mand hexdump