Saltar al contenido

convertir un hexadecimal string a binario y enviar con netcat

Esta es la respuesta más válida que te podemos brindar, pero primero mírala pausadamente y valora si se puede adaptar a tu proyecto.

Solución:

usé el -r y -pags cambiar a xd:

$ echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181

Gracias a la inspiración de la respuesta de @Gilles, aquí hay una versión de Perl:

$ echo '0006303030304e43' | perl -e 'print pack "H*", ' | nc -l localhost 8181

Aquí una solución sin xxd o perl:

Si el echo incorporado de su shell lo admite (bash y zsh hacer, pero no dash), solo necesita usar los escapes de barra invertida correctos:

echo -ne 'x00x06x30x30x30x30x4ex43' | nc -l localhost 8181

Si usted tiene /bin/echo desde GNU coreutils (casi estándar en sistemas Linux) o desde busybox también puede usarlo.

Con sed puedes generar un patrón escapado:

$ echo '0006303030304e43' | sed -e 's/../\x&/g'
x00x06x30x30x30x30x4ex43

Conjunto:

echo -ne "$(echo '0006303030304e43' | sed -e 's/../\x&/g')" | nc -l localhost 8181

Si usted tiene xxdeso es fácil: puede convertir ay desde hexadecimal.

echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181

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.

#!/usr/bin/env perl
$^W = 1;
$c = undef;
while (<>) 
    tr/0-9A-Fa-f//cd;
    if (defined $c)  warn "Consuming $c"; $_ = $c . $_; $c = undef; 
    if (length($_) & 1)  s/(.)$//; $c = $1; 
    print pack "H*", $_;

if (!eof)  die "$!"; 
if (defined $c)  warn "Odd number of hexadecimal digits"; 

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 de encabezado y la línea final producidos por uuencode, no puede ser Base64 sin formato.

uudecode <

Aquí puedes ver las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *