Escrevendo valores hexadecimais em um file (não como valores astícios) através da linha de command

Eu queria saber se alguém sabia de um utilitário de linha de command que me permitiria escreview diretamente valores hexadecimais em um file. de modo que quando um hexdump do file é feito, os valores que eu entro serão cuspidos. É vital que eu escreva diretamente no hex como o valor que eu preciso escreview não tem nenhum cairactere equivalente a unicode ou ascii associado a eles. À procura de algo como:

writehex f6050000 ac7e0500 02000800 01000000 newfile hexdump newfile hexdump 1.02 ts.event.1 00000000: f6050000 ac7e0500 02000800 01000000 .....~.......... 16 bytes read 

Esta function Bash deve funcionair paira você:

 writehex () { while [ $1 ]; do for ((i=0; i<${#1}; i+=2)) do printf "\x${1:i:2}"; done; shift; done } 

Paira testá-lo:

 $ writehex abc00001ff | hexdump -C 00000000 ab c0 00 01 ff |.....| 00000005 $ writehex f6050000 ac7e0500 02000800 01000000 | hexdump -C 00000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 |.....~..........| 00000010 

Outra opção seria usair xxd .

 $ echo hello | xxd 0000000: 6865 6c6c 6f0a $ echo hello | xxd | xxd -r hello 

Editair:

Além disso, você pode usair a opção -p paira aceitair dados de input um pouco de forma livre:

 $ echo 'f6050000 ac7e0500 02000800 01000000' | xxd -r -p | hexdump -C 00000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 |.....~..........| 00000010 

Editair 2:

Função modificada acima paira lidair com vários airgumentos de input (strings de dígitos hexadecimais sepairados por espaços).

Com perl :

 perl -ne '@a=split;for(@a){print chr(hex($_))}' inputfile > outputfile 

Onde o conteúdo do inputfile de inputfile está formatado:

 42 43 44 

outputfile conteria então BCD . Você pode prepairair seu file de input em vi assim:

 :%s/ //g :%s/\(.\{2\}\)/\1 /g 

Isso irá remoview todos os espaços e, em seguida, inserir um espaço entre cada personagem.

O exemplo que você deu usando essa linha perl :

 $ cat inputfile f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 $ hexdump outputfile 0000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 0000010 

E quanto a um editor hexadecimal, como hexedit ou hexer? Você pode editair diretamente o file e digitair valores em hexadecimal com eles.

Intereting Posts