GNU/Linux >> Tutoriales Linux >  >> Linux

Comando inverso Hexdump

He escrito un breve script AWK que invierte hexdump -C salida de nuevo a los datos originales. Usar así:

reverse-hexdump.sh hex.txt > data

Maneja marcadores de repetición '*' y genera datos originales incluso si son binarios.hexdump -C y reverse-hexdump.sh hacer un par de datos de ida y vuelta. Está disponible aquí:

  • repositorio de volcado hexadecimal inverso de GitHub
  • Directo a reverse-hexdump.sh

Restaurar file , dada solo la salida de hexdump file

Si solo tiene la salida de hexdump file y desea restaurar el archivo original, primero tenga en cuenta que la salida predeterminada de hexdump depende de la endianidad del sistema en el que ejecutó hexdump.

Si tiene acceso al sistema que creó el volcado, puede determinar su endianness usando el siguiente comando:

[[ "$(printf '\01\03' | hexdump)" == *0103* ]] && echo big || echo little

Revertir el volcado hexadecimal little-endian

Este es el caso más común. Todos los sistemas x86/x64 son little-endian. Si no conoce el endianness del sistema que ejecutó hexdump file , prueba esto.

sed 's/ \(..\)\(..\)/ \2\1/g;$d' dump | xxd -r

El sed parte convierte hexdump formato de en xxd formato de , al menos hasta ahora que xxd -r funciona.

Revertir el volcado hexadecimal big-endian

sed '$d' dump | xxd -r

Errores conocidos (ver la sección de comentarios)

  • Se agrega un byte nulo final si el archivo original tenía una longitud impar (por ejemplo, 1, 3, 5, 7, ..., byte de longitud).
  • Las secciones repetidas del archivo original no se restauran correctamente si eran hexdump ed usando un * .

Puede verificar su volcado para los casos problemáticos anteriores ejecutando el siguiente comando:

grep -qE '^\*|^[0-9a-f]*[13579bdf] *$' dump && echo bug || echo ok

Mejor alternativa para crear hexdumps en primer lugar

Además del no posix (y por lo tanto no tan portátil) xxd hay od (o ctal d ump) que debería estar disponible en todos los sistemas similares a Unix como se especifica en posix:

od -tx1 -An -v

Imprimirá un hex volcado adecimal, agrupando dígitos como bytes individuales (-tx1 ), con n o A prefijos de direcciones (-An , similar a xxd -p ) y sin abreviar las secciones repetidas como * (-v ). Puede revertir dicho volcado usando xxd -r -p .


Hay una herramienta similar llamada xxd . Si ejecuta xxd con solo un nombre de archivo, vuelca los datos en un formato de volcado hexadecimal bastante estándar:

# xxd bdata
0000000: 0001 0203 0405
......

Ahora, si canaliza la salida de nuevo a xxd con el -r y redirigir eso a un nuevo archivo, puede convertir el volcado hexadecimal a binario:

# xxd bdata | xxd -r >bdata2
# cmp bdata bdata2
# xxd bdata2
0000000: 0001 0203 0405

Linux
  1. Cómo funciona Hexdump

  2. Comando IP de Linux

  3. Comando cd de linux

  4. Comando xxd – Expresado en forma hexadecimal

  5. ¿Qué es la utilidad de línea de comandos de DNS inversa?

Comando de vigilancia de Linux

Comando Xargs en Linux

Comando W en Linux

Al mando en Linux

Tutorial de comandos Linux xxd para principiantes (con ejemplos)

Comando ifconfig