é possível inverter o xxd para obter o arquivo original do arquivo binário

2

Eu tenho usado xxd para criar uma representação hexa de um arquivo (qualquer arquivo como .jpg, .docx, .zip etc), assim, ..

$ xxd -p original_file.zip > hexa_format.txt

e para reverter

$ xxd -r -p hexa_format.txt > original_file.zip

Se alguém achar que esse não é o jeito certo, por favor corrija-me. de qualquer forma esta não é a minha pergunta. Agora eu tenho que convertê-los em binário em vez de hexa. então o comando é assim, se estiver correto.

$ xxd -p -b original_file.zip > binary_format.txt

minha pergunta é ,
Como faço para reverter para o arquivo original do arquivo binário (binary_format.txt) criado a partir do comando acima. o man page do xxd diz que não pode ser feito (na última linha).

-b | -bits
              Switch to bits (binary digits) dump, rather than hexdump.   This
              option  writes octets as eight digits "1"s and "0"s instead of a
              normal hexadecimal dump. Each line is preceded by a line  number
              in  hexadecimal and followed by an ascii (or ebcdic) representa‐
              tion. The command line switches -r, -p, -i do not work with this
              mode.

se isso não puder ser feito, existe algum outro comando que possa fazê-lo. como canalizar vários comamnds assim.

    
por arvindh 17.01.2015 / 17:32

2 respostas

0

Você terá que escrever seu próprio binário para a função hexadecimal ...

cut -f2-8 -d' ' infile | tr -d '\n' | tr ' ' '\n' | while read l; 
do 
  echo -n    $(bin_to_hex($l)) >> outfile
  (( ++n )) 
  (( n % 60 == 0)) && echo  "" >> outfile 
done

Isso deve exibir o mesmo formato de -p , que pode ser executado em -r . Se você ler a página de manual de xxd , você verá que não há -r para -b . Diz isso no trecho que você incluiu na sua pergunta.

    
por 17.01.2015 / 19:40
0

Você altera a estrutura do arquivo, não é fácil fazer isso. Talvez algo assim possa ajudar (mas você perderá personagens de nova linha:

awk '{printf $8}' binary_format.txt >out_file
    
por 17.01.2015 / 18:05