diferencia de formato hexdump vs xxd

diferencia de formato hexdump vs xxd

Estaba buscando cómo hacer un volcado hexadecimal inverso y encontré que se menciona xxd. Sin embargo, no parece funcionar simplemente con:

xxd -r hexdumpfile > binaryfile

Luego comparé la diferencia entre las salidas de xxd infiley hexdump infiley encontré tres diferencias:

  1. La salida xxd tiene dos puntos después de la dirección.
  2. La salida xxd tiene las posiciones en los datos invertidas (por ejemplo, 5a42en hexdump la salida se convierte 425aen salida xxd)
  3. Hay algunos caracteres extra después de cada línea.

Solo tengo la versión volcada en hexadecimal de ciertos archivos en un servidor. ¿Cómo puedo recuperar correctamente los datos binarios usando xxd?

Respuesta1

No conozco ningún comando que realice la conversión, pero se puede dividir fácilmente en unos pocos pasos:

  1. Quitar direcciones de hexdumpla salida usandosed
  2. Convertir a binario usandoxxd
  3. Conversión endian (por ejemplo, 5a42se convierte en 425a) usandodd

Aquí está el comando completo:

sed 's/^[0-9]*//' hexdump | xxd -r -p | dd conv=swab of=binaryfile

Respuesta2

Esta respuesta es una publicación cruzada dehttps://stackoverflow.com/a/52834021/6770384

Puedes hacer la conversión con un solo sedcomando. Es suficiente agregar :después de la dirección y cambiar el endianidad (cambiando ab12a 12ab).

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

Errores conocidos(ver sección de comentarios)

  • Se agrega un byte nulo al 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 se editaron hexdumputilizando un archivo  *.

Respuesta3

Intenta agregar -p.

xxd -r -p hexdumpfile > binaryfile

Respuesta4

Simplemente puedes usar las siguientes cosas.

  1. Obtener volcado hexadecimal en el formato requerido

    volcado hexadecimal -Cv <archivo_binario.bin> > archivo_binario.txt

-C imprimirá datos byte a byte

-v no usará * para contenido repetido

  1. Ahora necesita eliminar los primeros y últimos caracteres de binario_file.txt para cada línea. Puedes usar el comando sed aquí.

  2. Ahora usa el comando xxd

    xxd -r -p archivo_binario.txt > recuperar_archivo_binario.bin

  3. Puede comprobar md5sum de ambos archivos. debe coincidir

    md5sum archivo_binario.bin

    md5sum recuperar_archivo_binario.bin

información relacionada