Hex skládka - Hex dump

V práci na počítači , je skládka hex je hexadecimální zobrazení (na obrazovce nebo papíru), počítačových dat z paměti nebo z počítače soubor nebo úložné zařízení. Pohled na hexadecimální výpis dat se obvykle provádí v kontextu ladění nebo reverzního inženýrství .

V hexadecimálním výpisu je každý bajt (8 bitů ) reprezentován jako dvoumístné hexadecimální číslo. Šestihranné skládky jsou běžně organizovány do řad o 8 nebo 16 bajtech, někdy oddělených mezerami. Některé hexadecimální skládky mají na začátku adresu hexadecimální paměti .

Některé společné názvy pro tuto funkci programu jsou hexdump, hd, od, xxda jednoduše dump, nebo dokonce D.

Vzorky

Ukázkový textový soubor:

0123456789ABCDEF
/* ********************************************** */
	Table with TABs (09)
	1       2       3
	3.14	6.28	9.42

jak je zobrazeno Unixem hexdump :

0000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46
0000010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a
0000020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a
*
0000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74
0000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09
0000060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09
0000070 39 2e 34 32 0a                                 
0000075

Sloupec úplně vlevo je hexadecimální posun (nebo adresa) pro hodnoty následujících sloupců. Každý řádek zobrazuje 16 bajtů, s výjimkou řádku obsahujícího jediné *. * Se používá k označení, že bylo vynecháno více výskytů stejného zobrazení. Poslední řádek zobrazuje počet bytů převzatých ze vstupu.

Další sloupec zobrazuje odpovídající překlad znaků ASCII pomocí hexdump -Cnebo hd:

00000000  30 31 32 33 34 35 36 37  38 39 41 42 43 44 45 46  |0123456789ABCDEF|
00000010  0a 2f 2a 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |./* ************|
00000020  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000040  2a 2a 20 2a 2f 0a 09 54  61 62 6c 65 20 77 69 74  |** */..Table wit|
00000050  68 20 54 41 42 73 20 28  30 39 29 0a 09 31 09 09  |h TABs (09)..1..|
00000060  32 09 09 33 0a 09 33 2e  31 34 09 36 2e 32 38 09  |2..3..3.14.6.28.|
00000070  39 2e 34 32 0a                                    |9.42.|
00000075

To je užitečné při pokusu o vyhledání znaků TAB v souboru, u kterého se očekává použití více mezer.


Tato -vvolba způsobí, že hexdump zobrazí všechna data podrobně:

00000000  30 31 32 33 34 35 36 37  38 39 41 42 43 44 45 46  |0123456789ABCDEF|
00000010  0a 2f 2a 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |./* ************|
00000020  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000030  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000040  2a 2a 20 2a 2f 0a 09 54  61 62 6c 65 20 77 69 74  |** */..Table wit|
00000050  68 20 54 41 42 73 20 28  30 39 29 0a 09 31 09 09  |h TABs (09)..1..|
00000060  32 09 09 33 0a 09 33 2e  31 34 09 36 2e 32 38 09  |2..3..3.14.6.28.|
00000070  39 2e 34 32 0a                                    |9.42.|
00000075

od

Příkaz POSIX [1] lze použít k zobrazení hexadecimálního výpisu s volbou -tx.

# od -tx1 tableOfTabs.txt
0000000    30  31  32  33  34  35  36  37  38  39  41  42  43  44  45  46
0000020    0a  2f  2a  20  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a
0000040    2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a
*
0000100    2a  2a  20  2a  2f  0a  09  54  61  62  6c  65  20  77  69  74
0000120    68  20  54  41  42  73  20  28  30  39  29  0a  09  31  09  09
0000140    32  09  09  33  0a  09  33  2e  31  34  09  36  2e  32  38  09
0000160    39  2e  34  32  0a                                            
0000165

Hodnocení znaků lze přidat pomocí volby -c:

0000000    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
           30  31  32  33  34  35  36  37  38  39  41  42  43  44  45  46
0000020   \n   /   *       *   *   *   *   *   *   *   *   *   *   *   *
           0a  2f  2a  20  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a
0000040    *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
           2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a  2a
*
0000100    *   *       *   /  \n  \t   T   a   b   l   e       w   i   t
           2a  2a  20  2a  2f  0a  09  54  61  62  6c  65  20  77  69  74
0000120    h       T   A   B   s       (   0   9   )  \n  \t   1  \t  \t
           68  20  54  41  42  73  20  28  30  39  29  0a  09  31  09  09
0000140    2  \t  \t   3  \n  \t   3   .   1   4  \t   6   .   2   8  \t
           32  09  09  33  0a  09  33  2e  31  34  09  36  2e  32  38  09
0000160    9   .   4   2  \n                                            
           39  2e  34  32  0a                                            
0000165

V tomto výstupu jsou znaky TAB zobrazeny jako \ t a znaky NEWLINE jako \ n.

DUMP, DDT a DEBUG

V 8bitovém operačním systému CP/M používaném na raných osobních počítačích by standardní program DUMP vypsal soubor o velikosti 16 bajtů na řádek s hexadecimálním offsetem na začátku řádku a ASCII ekvivalentem každého bajtu na konci. Byty mimo standardní rozsah tisknutelných znaků ASCII (20 až 7E) by byly zobrazeny jako jedna perioda pro vizuální zarovnání. Stejný formát byl použit k zobrazení paměti při vyvolání příkazu D ve standardním debuggeru CP/M DDT . Pozdější inkarnace formátu (např. V DOS debugger DEBUG ) změnily prostor mezi 8. a 9. bytem na pomlčku, aniž by došlo ke změně celkové šířky.

Tento zápis byl zachován v operačních systémech, které byly přímo nebo nepřímo odvozeny z CP/M, včetně DR-DOS , MS-DOS , OS/2 a MS-Windows . V systémech Linux produkuje tento klasický výstupní formát také příkaz hexcat . Hlavním důvodem návrhu tohoto formátu je, že se vejde do maximálního množství dat na standardní 80místné obrazovce nebo tiskárně, přičemž je stále velmi dobře čitelný a vizuálně skim.

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  Wikipedia, the f
1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61  ree encyclopedia
1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E   that anyone can
1234:0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00   edit...........

Zde sloupec zcela vlevo představuje adresu, na které jsou umístěny bajty reprezentované následujícími sloupci. CP/M a různé systémy DOS běžely v reálném režimu na procesorech x86 , kde jsou adresy složeny ze dvou částí (základní a offset).

Ve výše uvedených příkladech jsou konečné 00s neexistující bajty za koncem souboru. Některé nástroje pro výpis stavu zobrazují další znaky, takže je jasné, že jsou za koncem souboru, obvykle používají mezery nebo hvězdičky, např .:

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  Wikipedia, the f
1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61  ree encyclopedia
1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E   that anyone can
1234:0030: 20 65 64 69 74                                    edit

nebo

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  Wikipedia, the f
1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61  ree encyclopedia
1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E   that anyone can
1234:0030: 20 65 64 69 74 ** ** ** ** ** ** ** ** ** ** **   edit

Viz také

Reference

externí odkazy

  • Jak používat Hexdump Unix Utility Rozsáhlé příklady.
  • hdr Hexdump s barevnými rozsahy pro usnadnění vizualizace. Možnosti přeskočení dat, zobrazení bitových polí, definice komplexního rozsahu, ... klikněte na odkaz na 'hdr_examples.pod'.
  • Hex cheatsheet pro vyhledávání bajtů a okusů.