$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
Funciona, el separador de línea está 0A
aquí en lugar de requerido 0D0A
.
¿Cómo escribo una 0D0A
consulta separada en netcat?
Es fácil hacer algo una sola vez printf
escribiendo manualmente \r\n
cada vez o implementando algo todos
como Perl oneliner y canalizándolo a nc
, pero ¿tal vez hay alguna manera fácil que se me escapa?
Respuesta1
Mi netcat
tiene una opción -C
o --crlf
reemplazar \n
por \r\n
stdin.
Alternativamente, depende del terminal que estés utilizando. Mi configuración predeterminada se puede ver mediante:
$ stty -a
... lnext = ^V; ...
Esto muestra elliteral-siguienteEl carácter de entrada es control-V. Entonces, escribir control-vseguido de control-minsertará un retorno de carro (a diferencia de una nueva línea, que es lo que obtienes cuando presionas la tecla return
o enter
).
Respuesta2
Puedes canalizar una cadena a nc
:
echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
Comprobar con:
$ echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | hd
00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a |GET / HTTP/1.1..|
00000010 48 6f 73 74 3a 20 65 78 61 6d 70 6c 65 2e 63 6f |Host: example.co|
00000020 6d 0d 0a 0d 0a |m....|
00000025
Respuesta3
Puede canalizar sed
en nc
modo sin búfer ( -u
) para convertir \n
desde su entrada estándar a \r\n
:
sed -u 's/$/\r/g' | nc localhost 6379
También puedes usar unix2dos
con stdbuf
:
stdbuf -i0 -o0 -e0 unix2dos | nc localhost 6379