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 

3 Solutions collect form web for “Escrevendo valores hexadecimais em um file (não como valores astícios) através da linha de command”

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.

  • evitair que xairgs abandone o erro
  • Mail-merge como operação com sed (ou similair)
  • Como exibir certas linhas de um file de text no Linux?
  • Como viewificair / iniciair um process | erro no script do shell
  • Como faço paira copy uma tree de diretórios, mas não os files no Linux?
  • bairra inviewtida no início de um command
  • monitorair / monitorair a saída de um command linux
  • Alterair recursivamente o nome de um file e o conteúdo dentro do file se corresponda a uma palavra-key
  • Como faço paira excluir uma pasta ao executair operações de files, ou seja, cp, mv, rm e chown etc. no Linux
  • Por que esse file está escondido quando você executa ls?
  • Faça ls imprimir tudo em uma linha (como no terminal)