Estaba buscando cómo hacer un hexdump inverso y encontré xxd mencionado. Sin embargo, no parece funcionar simplemente con:
xxd -r hexdumpfile > binaryfile
Luego comparé la diferencia entre las salidas de xxd infiley hexdump infile, y encontré tres diferencias:
- La salida xxd tiene dos puntos después de la dirección
- La salida xxd tiene las posiciones en los datos invertidas (por ejemplo,
5a42en la salida hexdump se convierte425aen la salida xxd) - Hay algunos caracteres adicionales después de cada línea.
Solo tengo la versión hexdumped de ciertos archivos en un servidor. ¿Cómo puedo recuperar correctamente los datos binarios usando xxd?
linux
conversion
hexdump
xxd
tanon
fuente
fuente

hexdumppermite elegir la endianness utilizada en su salida, lo que podría simplificar esto. (¿Por qué ahora? Tu pregunta fue útil para algo no relacionado.)Respuestas:
No conozco ningún comando que haga la conversión, pero se puede dividir fácilmente en unos pocos pasos:
hexdumpsalida usandosedxxd5a42convierte425a) usandoddAquí está el comando completo:
fuente
Esta respuesta es una publicación cruzada de https://stackoverflow.com/a/52834021/6770384
Puedes hacer la conversión en un solo
sedcomando. Es suficiente agregar:después de la dirección y cambiar la endianness (cambiarab12a12ab).Errores conocidos (ver sección de comentarios)
hexdumpcon a*.fuente
hexdumppuede ocultar partes repetidas usando a*. Este comando tampoco puede restaurar estas partes correctamente. Ejemplo:yes | head -n100 | hexdump | sed -E 's/ /: /;s/ (..)(..)/ \2\1/g' | xxd -rimprime solo 8 enylugar de 100. Arreglar estas cosas requeriría más que esta línea. Tal vez agregue otro script en el futuro.*, no lo sabia!