Tengo un archivo binario que puedo enviar con netcat
:
$ nc -l localhost 8181 < my.dat
El archivo contiene esto:
$ xxd my.dat
0000000: 0006 3030 3030 4e43 ..0000NC
Lo que realmente quiero hacer es enviar la cadena hexadecimal directamente. He intentado esto:
$ echo '0006303030304e43' | nc -l localhost 8181
Sin embargo, el comando anterior solo envía la cadena ascii directamente a nc
.
md5sum ../it/manifest.json | awk '{print $1}' | xxd -r -p | hd
Aquí una solución sin
xxd
operl
:Si la
echo
construcción de su shell lo admite (bash
y lozsh
hace, pero nodash
), solo necesita usar los escapes de barra invertida correctos:Si usted tiene
/bin/echo
de GNU coreutils (casi estándar en los sistemas Linux) o de busybox que se puede utilizar, también.Con
sed
usted puede generar un patrón escapado:Conjunto:
fuente
echo
conprintf
elimina las conjeturas si echo admite características extendidas o no.printf "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
.Si es así
xxd
, es fácil: puede convertir ay desde hexadecimal.No creo que haya una forma razonable (y razonablemente rápida) de convertir hexadecimal a binario usando solo herramientas POSIX. Se puede hacer bastante fácil en Perl. El siguiente script convierte hexadecimal a binario, ignorando cualquier carácter de entrada que no sea un dígito hexadecimal. Se queja si una línea de entrada contiene un número impar de dígitos hexadecimales.
Si realmente necesita apegarse a POSIX (por ejemplo, en un dispositivo integrado), le recomiendo usar Base64 en lugar de hexadecimal. Puede usar uudecode para decodificar Base64. La entrada debe tener el formato del encabezado y la línea final producida por uuencode , no puede ser Base64 sin formato .
fuente
Similar a esto: https://stackoverflow.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes/47253233#47253233
Escribí una herramienta que realiza varias transformaciones de stdin y escupe el resultado a stdout.
cryptocli dd
solo hará esas transformaciones y nada más.Trabajará para ti.
La herramienta es de código abierto, puede encontrarla aquí: https://github.com/tehmoon/cryptocli
Editar:
También puede codificar directamente a hexadecimal utilizando mi herramienta:
fuente
616263
tiene que ver con esta pregunta? Utilice los datos de la pregunta. (2) ¿Puedes explicar cómo funciona esto? No responda en los comentarios, edite su respuesta para que sea más clara y completa.