Zrzut szesnastkowy - Hex dump

W informatyce , o wysypisko hex jest szesnastkowy widok (na ekranie lub papierze) danych komputerowych, z pamięci lub z pliku komputerowego lub przechowywania urządzenia. Przeglądanie szesnastkowego zrzutu danych jest zwykle wykonywane w kontekście debugowania lub inżynierii wstecznej .

W zrzucie szesnastkowym każdy bajt (8 bitów ) jest reprezentowany jako dwucyfrowa liczba szesnastkowa . Zrzuty szesnastkowe są zwykle zorganizowane w rzędy po 8 lub 16 bajtów, czasami oddzielone białymi znakami. Niektóre zrzuty szesnastkowe mają na początku szesnastkowy adres pamięci .

Niektóre wspólne nazwy dla tej funkcji programu są hexdump, hd, od, xxdi po prostu dumplub nawet D.

Próbki

Przykładowy plik tekstowy:

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

w postaci wyświetlanej przez Unix 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

Pierwsza kolumna po lewej stronie to szesnastkowe przesunięcie (lub adres) dla wartości następujących kolumn. Każdy wiersz wyświetla 16 bajtów, z wyjątkiem wiersza zawierającego pojedynczy *. * służy do wskazania, że ​​pominięto wielokrotne wystąpienia tego samego wyświetlacza. Ostatni wiersz wyświetla liczbę bajtów pobranych z wejścia.

Dodatkowa kolumna pokazuje odpowiednią translację znaków ASCII za pomocą hexdump -Club 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

Jest to pomocne przy próbie zlokalizowania znaków TAB w pliku, który powinien zawierać wiele spacji.


Te -vprzyczyny opcja HexDump aby wyświetlić wszystkie dane --long:

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

Polecenie POSIX [1] może być użyte do wyświetlenia zrzutu szesnastkowego z opcją -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

Oceny postaci można dodać za pomocą opcji -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

W tym wyjściu znaki TAB są wyświetlane jako \t i znaki NEWLINE jako \n.

ZRZUT, DDT i DEBUG

W 8-bitowym systemie operacyjnym CP/M używanym na wczesnych komputerach osobistych, standardowy program DUMP wyświetlałby plik 16 bajtów na linię z szesnastkowym offsetem na początku linii i odpowiednikiem ASCII każdego bajtu na końcu. Bajty spoza standardowego zakresu drukowalnych znaków ASCII (20 do 7E) byłyby wyświetlane jako pojedyncza kropka w celu wizualnego wyrównania. Ten sam format był używany do wyświetlania pamięci podczas wywoływania polecenia D w standardowym debuggerze CP/M DDT . Późniejsze wcielenia tego formatu (np. w debuggerze DOS-a DEBUG ) zmieniły spację między 8 i 9 bajtem na myślnik, bez zmiany ogólnej szerokości.

Ta notacja została zachowana w systemach operacyjnych, które wywodzą się bezpośrednio lub pośrednio z CP/M, w tym DR-DOS , MS-DOS , OS/2 i MS-Windows . W systemach Linux polecenie hexcat również tworzy ten klasyczny format wyjściowy. Głównym powodem zaprojektowania tego formatu jest to, że mieści on maksymalną ilość danych na standardowym ekranie lub drukarce o szerokości 80 znaków, a jednocześnie jest bardzo łatwy do odczytania i przeglądania wzrokowego.

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

W tym przypadku skrajna lewa kolumna reprezentuje adres, pod którym znajdują się bajty reprezentowane przez następujące kolumny. CP/M i różne systemy DOS działały w trybie rzeczywistym na procesorach x86 , gdzie adresy składają się z dwóch części (podstawy i przesunięcia).

W powyższych przykładach ostatnie 00 to nieistniejące bajty poza końcem pliku. Niektóre narzędzia do zrzutów wyświetlają inne znaki, aby było jasne, że znajdują się one poza końcem pliku, zazwyczaj używając spacji lub gwiazdek, np.:

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

lub

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

Zobacz też

Bibliografia

Zewnętrzne linki