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
, xxd
und einfach dump
oder 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 -C
oder 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 -v
Option 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
- So verwenden Sie das Unix-Dienstprogramm Hexdump Umfangreiche Beispiele.
- hdr Hexdump mit farbigen Bereichen, um die Visualisierung zu erleichtern. Optionen zum Überspringen von Daten, Anzeigen von Bitfeldern, komplexe Bereichsdefinitionen, ... folgen Sie dem Link zu 'hdr_examples.pod'.
- Hex-Spickzettel zum Nachschlagen von Byte-Nibbles und Nibble-Bits.