diferença de formato hexdump vs xxd

diferença de formato hexdump vs xxd

Eu estava procurando como fazer um hexdump reverso e encontrei xxd mencionado. No entanto, não parece funcionar simplesmente:

xxd -r hexdumpfile > binaryfile

Em seguida, comparei a diferença entre as saídas de xxd infilee hexdump infilee encontrei três diferenças:

  1. A saída xxd tem dois pontos após o endereço
  2. A saída xxd tem as posições nos dados invertidas (por exemplo, 5a42na saída hexdump torna-se 425ana saída xxd)
  3. Existem alguns caracteres extras após cada linha

Eu só tenho a versão hexadecimal de determinados arquivos em um servidor. Como posso recuperar corretamente os dados binários usando xxd?

Responder1

Não conheço nenhum comando que faça a conversão, mas ela pode ser facilmente dividida em algumas etapas:

  1. Retire endereços da hexdumpsaída usandosed
  2. Converter em binário usandoxxd
  3. Conversão Endian (por exemplo, 5a42torna-se 425a) usandodd

Aqui está o comando completo:

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

Responder2

Esta resposta é uma postagem cruzada dehttps://stackoverflow.com/a/52834021/6770384

Você pode fazer a conversão em um sedcomando. Basta adicionar :depois do endereço e alterar o endianismo (mudando ab12para 12ab).

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

Erros conhecidos(veja a seção de comentários)

  • Um byte nulo final será adicionado se o arquivo original tiver comprimento ímpar (por exemplo, 1, 3, 5, 7, ..., byte de comprimento).
  • Seções repetidas do arquivo original não serão restauradas corretamente se forem hexdumpeditadas usando um arquivo  *.

Responder3

Tente adicionar -p.

xxd -r -p hexdumpfile > binaryfile

Responder4

Você pode simplesmente usar as coisas abaixo

  1. Obtenha hexdump no formato necessário

    hexdump -Cv <arquivo_binário.bin> > arquivo_binário.txt

-C imprimirá dados byte por byte

-v não usará * para conteúdo repetido

  1. Agora você precisa remover o primeiro e o último caractere de binary_file.txt para cada linha. Você pode usar o comando sed aqui.

  2. Agora use o comando xxd

    xxd -r -p arquivo_binário.txt > recuperar_arquivo_binário.bin

  3. Você pode verificar o md5sum de ambos os arquivos. Deve corresponder

    md5sum arquivo_binário.bin

    md5sum recuperar_binary_file.bin

informação relacionada