Cómo crear un hexágono de un archivo o cadena de texto


Introducción

Un volcado hexadecimal es una vista hexadecimal de los datos. Es posible que desee utilizar hexadecimal al depurar un programa o realizar ingeniería inversa en un programa.

Por ejemplo, muchos formatos de archivo tienen caracteres hexadecimales específicos para indicar su tipo. Si está intentando leer un archivo utilizando un programa y, por alguna razón, no se está cargando correctamente, puede ser que el archivo no esté en el formato que espera.

Si quieres ver cómo funciona un programa y no tienes el código fuente o pieza de software que hace ingeniería inversa al código, puedes mirar el volcado hexadecimal para intentar averiguar qué está pasando.

¿Qué es el hexadecimal?

Las computadoras piensan en binario. Cada carácter, número y símbolo está referenciado por un valor binario o por varios valores binarios.

Los seres humanos, sin embargo, tienden a pensar en decimales.

MilesCientosDecenasUnidades1011

Como humanos, nuestros números más bajos se llaman unidades y representan los números del 0 al 9. Cuando lleguemos a 10, reajustaremos la columna de unidades a 0 y añadiremos 1 a la columna de decenas (10).

128643216842110010001

En binario, el número más bajo sólo representa 0 y 1. Cuando pasamos de 1, ponemos un 1 en la columna del 2 y un 0 en la columna del 1. Cuando quiera representar 4, ponga un 1 en la columna de 4 y reajuste la columna de 2 y 1.

Por lo tanto, para representar a 15, tendrías 1111, que significa 1, 8, 1, 4, 1, 2 y 1, 1. (8+4+2+1 = 15).

Si vemos un archivo de datos en un formato binario sería absolutamente enorme y virtualmente imposible de entender.

El siguiente paso desde el binario es el octal, que utiliza el 8 como número base.

2416810110

En un sistema octal, la primera columna va de 0 a 7, la segunda columna es de 8 a 15, la tercera de 16 a 23 y la cuarta de 24 a 31, y así sucesivamente. Aunque generalmente es más fácil de leer que el binario, la mayoría de la gente prefiere usar hexadecimal.

Hexadecimal usa 16 como número base. Ahora bien, aquí es donde se vuelve confuso porque como humanos pensamos en los números del 0 al 9. Entonces, ¿qué se usa para 10, 11, 12, 13, 14, 15? La respuesta son las letras.

  • 0 = 0
  • 1 = 1
  • 2 = 2
  • 3 = 3
  • 4 = 4
  • 5 = 5
  • 6 = 6
  • 7 = 7
  • 8 = 8
  • 9 = 9
  • 10 = A
  • 11 = B
  • 12 = C
  • 13 = D
  • 14 = E
  • 15 = F

Por lo tanto, el valor 100 está representado por 64. Necesitará 6 de la columna de 16s que muestra 96 y luego 4 en la columna de unidades haciendo 100.

Todos los caracteres de un archivo se indican con un valor hexadecimal. El significado de estos valores depende del formato del propio archivo. El formato del archivo se indica mediante valores hexadecimales que se almacenan normalmente al principio del archivo.

Con el conocimiento de la secuencia de valores hexadecimales que aparecen al principio de los archivos, puede calcular manualmente en qué formato se encuentra el archivo. Ver un archivo en un volcado hexadecimal puede ayudarle a encontrar caracteres ocultos que no se muestran cuando el archivo se carga en un editor de texto normal.

Cómo crear un volcado hexadecimal usando Linux

Para crear un volcado hexadecimal usando Linux use el comando hexdump.

Para mostrar un archivo como hexadecimal al terminal (salida estándar) ejecute el siguiente comando:

hexdump nombre de archivo

Por ejemplo

hexdump image.png

La salida por defecto mostrará el número de línea (en formato hexadecimal) y luego 8 conjuntos de 4 valores hexadecimales por línea.

Por ejemplo:

0000000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244

Puede suministrar diferentes interruptores para cambiar la salida por defecto. Por ejemplo, si se especifica el interruptor menos b, se producirá un desplazamiento de 8 dígitos seguido de 16 bytes de datos de entrada de tres columnas, llenos de cero, en formato octal.

hexdump -b image.png

Por lo tanto, el ejemplo anterior se representará como sigue:

0000000000 211 120 116 107 015 015 012 032 012 000 000 000 015 111 110 104 122

El formato anterior se conoce como pantalla octal de un byte.

Otra forma de ver el archivo es en la visualización de caracteres de un byte utilizando el interruptor menos c.

hexdump -c image.png

Esto muestra de nuevo el offset, pero esta vez seguido de dieciséis espacios separados, tres columnas y caracteres llenos de espacio de datos de entrada por línea.

Otras opciones incluyen la pantalla hexadecimal + ascii canónica que puede visualizarse utilizando el interruptor menos C y la pantalla decimal de dos bytes que puede visualizarse utilizando el interruptor menos d. El interruptor menos o se puede utilizar para mostrar la visualización octal de dos bytes. Por último, el interruptor minux x puede utilizarse para mostrar la visualización hexadecimal de dos bytes.

hexdump -C image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

Si ninguno de los formatos anteriores se ajusta a sus necesidades, utilice el botón menos para especificar el formato.

Si sabe que un archivo de datos es muy largo y sólo quiere ver los primeros caracteres para determinar su tipo, puede usar el parámetro -n para especificar qué parte del archivo desea mostrar en hexadecimal.

hexdump -n100 image.png

El comando anterior muestra los primeros cien bytes.

Si desea saltarse una parte del archivo, puede utilizar el botón menos s para establecer un offset desde el que empezar.

hexdump -s10 image.png

Si no proporciona un nombre de archivo, el texto se lee desde la entrada estándar.

Simplemente introduzca el siguiente comando:

hexdump

A continuación, introduzca el texto en la entrada estándar y termine escribiendo “salir”. El hexágono se mostrará a la salida estándar.

Resumen

La utilidad de descarga hexadecimal es obviamente una herramienta bastante poderosa y definitivamente deberías leer la página del manual para entender todas las características.

También necesitaría una buena comprensión de lo que está buscando al leer el resultado.

Para ver la página de manual ejecute el siguiente comando:

man hexdump

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *