Cómo usar el comando Linux Hexdump con ejemplos prácticos
Hexdump es un comando de Linux muy útil para desarrolladores y depuradores de aplicaciones. Tiene la capacidad de volcar el contenido del archivo en muchos formatos como hexadecimal, octal, ASCII y decimal. Este comando toma un archivo, o cualquier entrada estándar, como parámetro de entrada y lo convierte al formato de su elección. Supongamos que trabaja con datos binarios y no puede comprender el formato de un archivo, puede hacer uso del comando Hexdump para obtener el contenido del archivo en un formato mucho mejor legible. Este comando viene preinstalado con todos los sistemas operativos Linux modernos como CentOS, Fedora, Ubuntu, Debian, Arch Linux, etc. En este artículo, demostraremos el uso del comando hexdump usando varios ejemplos. Escrito en lenguaje C, este comando puede ser fácil de entender por programadores profesionales de C, pero para otros profesionales de TI, puede ser un comando complicado. Intentaremos hacer todo lo posible para demostrar su uso y propósito aquí en este artículo.
1) Hexdump -b
El uso del interruptor «-b» con Hexdump mostrará el desplazamiento de entrada en formato hexadecimal. Esta opción también se denomina «Visualización octal de un byte». La salida será seguida por dieciséis bytes de datos de entrada separados por espacios, tres columnas, llenos de ceros, en octal, por línea. Aquí está el resultado de ejemplo que recibimos cuando ejecutamos este comando con el interruptor «-b» en un archivo llamado «Linoxide».
# hexdump -b Linoxide 0000000 124 150 151 163 040 151 163 040 040 141 040 164 145 163 164 040 0000010 114 151 156 157 170 151 144 145 040 106 151 154 145 012 125 163 0000020 145 144 040 146 157 162 040 144 145 155 157 156 163 164 162 141 0000030 164 151 157 156 040 160 165 162 160 157 163 145 163 012 012 000003f
2) Hexdump -c
Esta opción se conoce como «Visualización de caracteres de un byte». Puede utilizar este parámetro de comando para mostrar el desplazamiento de entrada en hexadecimal. La cadena de salida será seguida por dieciséis caracteres de datos de entrada separados por espacios, tres columnas, llenos de espacios, por línea. Aquí está el resultado de ejemplo de este comando.
hexdump -c Linoxide 0000000 T h i s i s a t e s t 0000010 L i n o x i d e F i l e n U s 0000020 e d f o r d e m o n s t r a 0000030 t i o n p u r p o s e s n n 000003f
3) Hexdump -C
También conocido como «Visualización canónica hexadecimal + ASCII», muestra el desplazamiento de entrada en hexadecimal, la salida va seguida de dieciséis bytes hexadecimales de dos columnas separados por espacios, junto con los mismos dieciséis bytes en formato% _p encerrados en « | » caracteres. Aquí hay un ejemplo funcional de esta opción de comando.
# hexdump -C Linoxide 00000000 54 68 69 73 20 69 73 20 20 61 20 74 65 73 74 20 |This is a test | 00000010 4c 69 6e 6f 78 69 64 65 20 46 69 6c 65 0a 55 73 |Linoxide File.Us| 00000020 65 64 20 66 6f 72 20 64 65 6d 6f 6e 73 74 72 61 |ed for demonstra| 00000030 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 0a 0a |tion purposes..| 0000003f
4) Hexdump -d
Este conmutador / opción muestra el desplazamiento de entrada en hexadecimal, junto con ocho unidades de datos de entrada de dos bytes, separadas por espacios, cinco columnas, llenas de ceros. La salida está en decimal sin signo por línea. También se conoce como modo de «visualización decimal de dos bytes». Aquí hay un ejemplo de salida de este comando.
hexdump -d Linoxide 0000000 26708 29545 26912 08307 24864 29728 29541 08308 0000010 26956 28526 27000 25956 17952 27753 02661 29525 0000020 25701 26144 29295 25632 28005 28271 29811 24946 0000030 26996 28271 28704 29301 28528 25971 02675 00010 000003f
5) Hexdump -o
También conocido como «visualización octal de dos bytes», muestra el desplazamiento de entrada especificado en hexadecimal. La salida del comando es seguida por ocho cantidades de datos de entrada separados por espacios, seis columnas, llenas de ceros, de dos bytes, en octal, por línea.
# hexdump -o Linoxide 0000000 064124 071551 064440 020163 060440 072040 071545 020164 0000010 064514 067556 064570 062544 043040 066151 005145 071525 0000020 062145 063040 071157 062040 066545 067157 072163 060562 0000030 064564 067157 070040 071165 067560 062563 005163 000012 000003f
6) Hexdump -x
Muestra el desplazamiento en hexadecimal, seguido de ocho, separados por espacios, cuatro columnas, llenas de ceros, cantidades de dos bytes de datos de entrada, en hexadecimal. Se denomina «Visualización hexadecimal de dos bytes».
# hexdump -x Linoxide 0000000 6854 7369 6920 2073 6120 7420 7365 2074 0000010 694c 6f6e 6978 6564 4620 6c69 0a65 7355 0000020 6465 6620 726f 6420 6d65 6e6f 7473 6172 0000030 6974 6e6f 7020 7275 6f70 6573 0a73 000a 000003f
7) Hexdump -v
De forma predeterminada, hexdump usa el signo de asterisco
para reemplazar la línea idéntica en la cadena de salida, pero la opción -v hace que hexdump muestre todos los datos de entrada. Esta opción es útil cuando se realiza el análisis de la salida completa de cualquier cadena o texto. Este comando también se puede utilizar en scripts de shell / bash para una mejor automatización de las tareas deseadas.
8) Hexdump -s
hexdump -s n -c File
«Hexdump -s» muestra solo el número especificado de bytes de un archivo, la sintaxis general para usar esta opción es la siguiente.
# hexdump -s 1 -c Linoxide 0000001 h i s i s a t e s t L 0000011
Donde, reemplace «n» con el número de líneas que desea que se muestren y «Archivo» con su nombre de archivo real. El siguiente ejemplo de salida debería aclarar más este concepto.
El comando anterior mostrará solo una línea de salida.
man hexdump
Puede obtener más detalles sobre hexdump usando su manual de ayuda. Simplemente escriba el siguiente comando en la terminal de su sistema Linux y mostrará todas las posibilidades y opciones que se pueden usar con hexdump.
Conclusión
Hexdump es una utilidad bastante útil para administradores de sistemas y programadores. Hace que analizar y decodificar los distintos formatos de archivo sea pan comido. Se puede utilizar fácilmente en programación bash o scripts de lenguaje de programación C para realizar tareas complejas de conversión de formato de archivo o análisis e ingeniería inversa. En este artículo, hemos presentado a hexdump, sus opciones útiles y algunas demostraciones útiles de los comandos relacionados con esta utilidad. Espero que hayas disfrutado de este artículo. Si tiene algún comentario o pregunta, no dude en hacérnoslo saber en los comentarios.