Volcado hexadecimal

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Vista hexadecimal de los datos de la computadora

En informática, un volcado hexadecimal es una vista textual hexadecimal (en pantalla o en papel) de datos informáticos (a menudo, pero no necesariamente binarios), desde la memoria o desde un archivo informático o dispositivo de almacenamiento. La observación de un volcado de datos hexadecimal generalmente se realiza en el contexto de depuración, ingeniería inversa o análisis forense digital. Los editores interactivos que proporcionan una vista similar pero que también manipulan los datos en cuestión se denominan editores hexadecimales.

En un volcado hexadecimal, cada byte (8 bits) se representa como un número hexadecimal de dos dígitos. Los volcados hexadecimales suelen organizarse en filas de 8 o 16 bytes, a veces separados por espacios en blanco. Algunos volcados hexadecimales tienen la dirección de memoria hexadecimal al principio.

Algunos nombres comunes para esta función del programa son hexdump, hd, od , xxd y simplemente dump o incluso D .

Muestras

Un archivo de texto de muestra:

0123456789ABCDEF
/* - Sí.
Tabla con TABs (09)
2 3
3.14 6,28 9,42

como se muestra en Unix hexdump:

0000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 460000010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a0000020 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 740000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 090000060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 090000070 39 2e 34 32 0a  0000075

La columna más a la izquierda es el desplazamiento hexadecimal (o dirección) para los valores de las siguientes columnas. Cada fila muestra 16 bytes, con la excepción de la fila que contiene un único archivo *. El * se utiliza para indicar que se omitieron múltiples apariciones de la misma visualización. La última línea muestra el número de bytes tomados de la entrada.

Una columna adicional muestra la traducción de caracteres ASCII correspondiente con hexdump - C o hd:

00000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 Silencio0123456789ABCDEFSilencio00010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a Silencio./* .Silencio00020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a Silencio¿Qué?Silencio*00040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 Silencio** */.Silencio00050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 Silencioh TABs (09)..1.Silencio00060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09 Silencio2..3.14.6.28.Silencio00000070 39 2e 34 32 0a Silencio9.42.Silencio00075

Esto es útil cuando intenta localizar caracteres TAB en un archivo que se espera utilizar múltiples espacios.

La opción -v provoca hexdump para mostrar todos los datos detalladamente:

00000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 Silencio0123456789ABCDEFSilencio00010 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a Silencio./* .Silencio00020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a Silencio¿Qué?Silencio000 00030 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a Silencio¿Qué?Silencio00040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 Silencio** */.Silencio00050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 Silencioh TABs (09)..1.Silencio00060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09 Silencio2..3.14.6.28.Silencio00000070 39 2e 34 32 0a Silencio9.42.Silencio00075

Odo

El comando POSIX se puede utilizar para mostrar un volcado hexadecimal con la opción -t x.

# Od -tx1 tableOfTabs.txt
30 31 32 33 35 36 37 38 39 41 42 43 44 45 460000020 0a 2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a0000040 2a 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 740000120 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 090000140 32 09 33 0a 09 33 3e 31 34 09 36 2e 32 38 090000160 39 2e 34 32 0a 0000165

Las evaluaciones de personajes se pueden agregar con la opción -c:

0000000 0 1 2 3 4 5 6 7 8 9 A B C D E F
30 31 32 33 35 36 37 38 39 41 42 43 44 45 46
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
0a 2f 2a 20 2a 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 20 2a 2a 9 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 33 0a 09 33 2e 31 34 09 36 2e 32 38 09
0000160 9. 4 2 n
39 2e 34 32 0a
0000165

En esta salida los caracteres TAB se muestran como caracteres t y NEWLINE como n.

Volcado, DDT y DEPURACIÓN

En el sistema operativo CP/M de 8 bits utilizado en las primeras computadoras personales, el programa DUMP estándar listaría un archivo de 16 bytes por línea con el desplazamiento hexadecimal al inicio de la línea y el equivalente ASCII de cada byte al final. fin. Los bytes fuera del rango estándar de caracteres ASCII imprimibles (20 a 7E) se mostrarían como un solo punto para la alineación visual. Este mismo formato se utilizó para mostrar la memoria al invocar el comando D en el DDT del depurador CP/M estándar. Encarnaciones posteriores del formato (por ejemplo, en el depurador de DOS DEBUG) cambiaron el espacio entre el octavo y el noveno byte a un guión, sin cambiar el ancho total.

Esta notación se ha conservado en los sistemas operativos que se derivaron directa o indirectamente de CP/M, incluidos DR-DOS, MS-DOS/PC DOS, OS/2 y Windows. En los sistemas Linux, el comando hexcat también produce este formato de salida clásico. La razón principal para el diseño de este formato es que cabe la cantidad máxima de datos en una pantalla o impresora estándar de 80 caracteres de ancho, y al mismo tiempo es muy fácil de leer y hojear visualmente.

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Wikipedia, el f1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E que cualquiera puede1234:0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00 editar.........

Aquí, la columna más a la izquierda representa la dirección en la que se encuentran los bytes representados por las siguientes columnas. CP/M y varios sistemas DOS se ejecutaron en modo real en las CPU x86, donde las direcciones se componen de dos partes (base y offset).

En los ejemplos anteriores, los últimos 00 son bytes inexistentes más allá del final del archivo. Algunas herramientas de volcado muestran otros caracteres para que quede claro que están más allá del final del archivo, normalmente usando espacios o asteriscos, por ejemplo:

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Wikipedia, el f1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E que cualquiera puede1234:0030: 20 65 64 69 74 edición

o

1234:0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Wikipedia, el f1234:0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia1234:0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E que cualquiera puede1234:0030: 20 65 64 69 74 # # # # # # # # # # # edición