Eu tenho um arquivo binário com o qual posso enviar netcat
:
$ nc -l localhost 8181 < my.dat
O arquivo contém isso:
$ xxd my.dat
0000000: 0006 3030 3030 4e43 ..0000NC
O que realmente quero fazer é enviar a sequência hexadecimal diretamente. Eu tentei isso:
$ echo '0006303030304e43' | nc -l localhost 8181
No entanto, o comando acima apenas envia a string ascii diretamente para nc
.
md5sum ../it/manifest.json | awk '{print $1}' | xxd -r -p | hd
Aqui uma solução sem
xxd
ouperl
:Se o
echo
builtin do seu shell o suportar (bash
e ozsh
faz, mas nãodash
), você só precisa usar as escapes da barra invertida direita:Se você tiver
/bin/echo
de coreutils GNU (quase padrão em sistemas Linux) ou de busybox você pode usá-lo também.Com
sed
você pode gerar um padrão de escape:Combinado:
fonte
echo
porprintf
remove o trabalho de adivinhação se o eco suportar recursos estendidos ou não.printf "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
.Se você tiver
xxd
, é fácil: pode converter de e para hexadecimal.Eu não acho que exista uma maneira razoável (e razoavelmente rápida) de converter hexadecimal em binário usando apenas ferramentas POSIX. Isso pode ser feito facilmente no Perl. O script a seguir converte hexadecimal em binário, ignorando qualquer caractere de entrada que não seja um dígito hexadecimal. Ele reclama se uma linha de entrada contém um número ímpar de dígitos hexadecimais.
Se você realmente precisa seguir o POSIX (por exemplo, em um dispositivo incorporado), recomendo usar o Base64 em vez do hexadecimal. Você pode usar o uudecode para decodificar o Base64. A entrada deve ter o formato do cabeçalho e a linha final produzidos pelo uuencode , não pode ser Base64 bruto.
fonte
Semelhante a este: https://stackoverflow.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes/47253233#47253233
Eu escrevi uma ferramenta que executa várias transformações de stdin e cospe o resultado em stdout.
cryptocli dd
só fará essas transformações e nada mais.Trabalhará para você.
A ferramenta é de código aberto, você pode encontrá-lo aqui: https://github.com/tehmoon/cryptocli
Editar:
Você também pode codificar diretamente para hexadecimal usando minha ferramenta:
fonte
616263
tem a ver com esta pergunta? Por favor, use os dados da pergunta. (2) Você pode explicar como isso funciona? Por favor, não responda nos comentários, edite sua resposta para torná-la mais clara e completa.