Hex-Dump - Hex dump

In der Computertechnik ist ein Hex-Dump eine hexadezimale Ansicht (auf dem Bildschirm oder auf Papier) von Computerdaten aus dem Speicher oder von einer Computerdatei oder einem Speichergerät . Das Betrachten eines Hex-Dumps von Daten erfolgt normalerweise im Kontext von Debugging oder Reverse Engineering .

In einem Hex-Dump wird jedes Byte (8 Bit ) als zweistellige Hexadezimalzahl dargestellt . Hex-Dumps werden üblicherweise in Reihen von 8 oder 16 Byte organisiert, manchmal durch Leerzeichen getrennt. Einige Hex-Dumps haben die hexadezimale Speicheradresse am Anfang.

Einige gebräuchliche Namen für diese Programmfunktion sind hexdump, hd, od, xxdund einfach dumpoder sogar D.

Proben

Eine Beispieltextdatei:

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

wie von Unix angezeigt 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

Die Spalte ganz links ist die hexadezimale Verschiebung (oder Adresse) für die Werte der folgenden Spalten. Jede Zeile enthält 16 Byte, mit Ausnahme der Zeile, die ein einzelnes * enthält. Das * wird verwendet, um anzugeben, dass mehrere Vorkommen der gleichen Anzeige weggelassen wurden. In der letzten Zeile wird die Anzahl der vom Eingang entnommenen Bytes angezeigt.

Eine zusätzliche Spalte zeigt die entsprechende ASCII- Zeichenübersetzung mit hexdump -Coder 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

Dies ist hilfreich, wenn Sie versuchen, TAB-Zeichen in einer Datei zu finden, von der erwartet wird, dass sie mehrere Leerzeichen verwendet.


Die -vOption bewirkt, dass hexdump alle Daten ausführlich anzeigt:

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

Der Befehl POSIX [1] kann verwendet werden, um einen Hex-Dump mit der Option -tx anzuzeigen.

# 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

Zeichenauswertungen können mit der Option -c hinzugefügt werden:

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

In dieser Ausgabe werden die TAB-Zeichen als \t und die NEWLINE-Zeichen als \n angezeigt.

DUMP, DDT und DEBUG

In dem CP/M- 8-Bit-Betriebssystem, das auf frühen Personalcomputern verwendet wurde, würde das Standard- DUMP- Programm eine Datei mit 16 Bytes pro Zeile mit dem Hex-Offset am Anfang der Zeile und dem ASCII-Äquivalent jedes Bytes am Ende auflisten . Bytes außerhalb des Standardbereichs druckbarer ASCII-Zeichen (20 bis 7E) würden zur visuellen Ausrichtung als einzelner Punkt angezeigt. Das gleiche Format wurde verwendet, um den Speicher anzuzeigen, wenn der D- Befehl im Standard-CP/M-Debugger DDT aufgerufen wurde . Spätere Inkarnationen des Formats (zB im DOS-Debugger DEBUG ) änderten den Abstand zwischen dem 8. und 9. Byte in einen Bindestrich, ohne die Gesamtbreite zu verändern.

Diese Notation wurde in Betriebssystemen beibehalten, die direkt oder indirekt von CP/M abgeleitet wurden, einschließlich DR-DOS , MS-DOS , OS/2 und MS-Windows . Auf Linux-Systemen erzeugt der Befehl hexcat auch dieses klassische Ausgabeformat. Der Hauptgrund für das Design dieses Formats besteht darin, dass es die maximale Datenmenge auf einem standardmäßigen 80-Zeichen-Breitbildschirm oder -Drucker unterbringt, während es dennoch sehr einfach zu lesen und visuell zu überfliegen ist.

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...........

Hier stellt die Spalte ganz links die Adresse dar, an der sich die Bytes befinden, die durch die folgenden Spalten repräsentiert werden. CP/M und verschiedene DOS-Systeme liefen auf den x86- CPUs im Real-Modus , wobei Adressen aus zwei Teilen (Basis und Offset) bestehen.

In den obigen Beispielen sind die letzten 00s nicht vorhandene Bytes nach dem Ende der Datei. Einige Dump-Tools zeigen andere Zeichen an, damit klar ist, dass sie über das Ende der Datei hinausgehen, und verwenden normalerweise Leerzeichen oder Sternchen, z.

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

oder

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

Siehe auch

Verweise

Externe Links