Eu estava procurando por como fazer um hexdump reverso e encontrei o xxd mencionado. No entanto, não parece funcionar simplesmente:
xxd -r hexdumpfile > binaryfile
Comparei então a diferença entre os resultados de xxd infile
e hexdump infile
, e encontrei três diferenças:
- A saída xxd possui dois pontos após o endereço
- A saída xxd tem as posições nos dados invertidas (por exemplo,
5a42
na saída hexdump se torna a425a
saída xxd) - Existem alguns caracteres extras após cada linha
Eu só tenho a versão hexdumped de certos arquivos em um servidor. Como posso recuperar corretamente os dados binários usando xxd?
linux
conversion
hexdump
xxd
tanon
fonte
fonte
hexdump
permite escolher o endianness usado em sua saída, o que poderia tornar isso mais simples. (Por que agora Encontrado sua pergunta útil para algo não relacionado?.)Respostas:
Não há um comando que eu saiba que fará a conversão, mas ele pode ser facilmente dividido em algumas etapas:
hexdump
saída usandosed
xxd
5a42
torna-se425a
) usandodd
Aqui está o comando completo:
fonte
Esta resposta é uma postagem cruzada de https://stackoverflow.com/a/52834021/6770384
Você pode fazer a conversão em um
sed
comando. É suficiente adicionar o:
endereço depois e alterar a endianness (alternandoab12
para12ab
).Bugs conhecidos (consulte a seção de comentários)
hexdump
editadas usando a*
.fonte
hexdump
pode ocultar partes repetidas usando a*
. Este comando também não pode restaurar essas partes corretamente. Exemplo:yes | head -n100 | hexdump | sed -E 's/ /: /;s/ (..)(..)/ \2\1/g' | xxd -r
imprime apenas 8 emy
vez de 100. A correção dessas coisas exigiria mais do que essa linha única. Talvez eu adicione outro script no futuro.*
dica, não sabia!