Despejo hexadecimal - Hex dump
Na computação , um dump hexadecimal é uma visão hexadecimal (na tela ou no papel) dos dados do computador, da memória ou de um arquivo de computador ou dispositivo de armazenamento . Examinar um dump hexadecimal de dados geralmente é feito no contexto de depuração ou engenharia reversa .
Em um dump hexadecimal, cada byte (8 bits ) é representado como um número hexadecimal de dois dígitos . Os dumps hexadecimais são comumente organizados em linhas de 8 ou 16 bytes, às vezes separados por espaços em branco. Alguns dumps hexadecimais têm o endereço de memória hexadecimal no início.
Alguns nomes comuns para esta função programa são hexdump
, hd
, od
, xxd
e simplesmente dump
ou mesmo D
.
Amostras
Um exemplo de arquivo de texto:
0123456789ABCDEF /* ********************************************** */ Table with TABs (09) 1 2 3 3.14 6.28 9.42
conforme exibido pelo 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
A coluna mais à esquerda é o deslocamento hexadecimal (ou endereço) para os valores das colunas seguintes. Cada linha exibe 16 bytes, com exceção da linha que contém um único *. O * é usado para indicar que várias ocorrências da mesma exibição foram omitidas. A última linha exibe o número de bytes retirados da entrada.
Uma coluna adicional mostra a tradução de caracteres ASCII correspondente com hexdump -C
ou 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
Isso é útil ao tentar localizar caracteres TAB em um arquivo que deve usar vários espaços.
A -v
opção faz com que o hexdump exiba todos os dados detalhadamente:
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
O comando POSIX [1] pode ser usado para exibir um dump hexadecimal com a opção -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
Avaliações de personagens podem ser adicionadas com a opção -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
Nesta saída, os caracteres TAB são exibidos como \ t e os caracteres NEWLINE como \ n.
DUMP, DDT e DEBUG
No sistema operacional CP / M de 8 bits usado nos primeiros computadores pessoais, o programa DUMP padrão listaria um arquivo de 16 bytes por linha com o deslocamento hexadecimal no início da linha e o equivalente ASCII de cada byte no final. Bytes fora do intervalo padrão de caracteres ASCII imprimíveis (20 a 7E) seriam exibidos como um único período para alinhamento visual. Este mesmo formato foi usado para exibir a memória ao invocar o comando D no depurador CP / M padrão DDT . Versões posteriores do formato (por exemplo, no depurador DOS DEBUG ) alteraram o espaço entre o 8º e o 9º byte para um travessão, sem alterar a largura geral.
Esta notação foi mantida em sistemas operacionais que foram direta ou indiretamente derivados de CP / M, incluindo DR-DOS , MS-DOS , OS / 2 e MS-Windows . Em sistemas Linux, o comando hexcat também produz esse formato de saída clássico. A principal razão para o design desse formato é que ele se ajusta ao máximo de dados em uma tela ou impressora padrão de 80 caracteres, ao mesmo tempo em que é muito fácil de ler e folhear visualmente.
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...........
Aqui, a coluna mais à esquerda representa o endereço no qual os bytes representados pelas colunas seguintes estão localizados. CP / M e vários sistemas DOS rodaram em modo real nas CPUs x86 , onde os endereços são compostos de duas partes (base e offset).
Nos exemplos acima, os 00s finais são bytes inexistentes além do final do arquivo. Algumas ferramentas de despejo exibem outros caracteres para que fique claro que eles estão além do final do arquivo, normalmente usando espaços ou asteriscos, por exemplo:
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
ou
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
Veja também
Referências
links externos
- Como usar o utilitário Hexdump Unix Exemplos abrangentes.
- hdr Hexdump com faixas coloridas para facilitar a visualização. Opções para pular dados, exibindo campos de bits, definição de intervalo complexo, ... siga o link para 'hdr_examples.pod'.
- Cheatsheet hexadecimal para procurar nibbles de byte e bits de nibble.