Script de uma solicitação de cabeçalho HTTP com netcat
Estou tentando brincar com o netcat para saber mais sobre como o HTTP funciona. Eu gostaria de escrever parte disso no bash ou no Perl, mas encontrei uma pedra de tropeço no início dos meus teste
Se eu executar o netcat diretamente no prompt e digitar uma solicitação HEAD, ela funcionará e eu recebo os cabeçalhos do servidor da Web que estou investigand
Isso funciona
[romandas@localhost ~]$ nc 10.1.1.2 80 HEAD / HTTP/1.0 HTTP/1.1 200 OK MIME-Version: 1.0 Server: Edited out Content-length: 0 Cache-Control: public Expires: Sat, 01 Jan 2050 18:00:00 GMT [romandas@localhost ~]$
Mas quando coloco as mesmas informações em um arquivo de texto e as alimento para o netcat através de um pipe ou via redirecionamento, em preparação para scripts, ele não retorna os cabeçalho
O arquivo de texto consiste na solicitação HEAD e em duas novas linhas:
HEAD / HTTP/1.0
Enviar a mesma informação viaec ou printf também não funcion
$ printf "HEAD / HTTP/1.0\r\n"; |nc -n 10.1.1.2 80 $ /bin/echo -ne 'HEAD / HTTP/1.0\n\n' |nc 10.1.1.2 80
Alguma idéia do que estou fazendo de errado? Não tenho certeza se é um problema do bash, um problema de eco ou um problema do netca
Verifiquei o tráfego via Wireshark e a solicitação bem-sucedida (digitada manualmente) envia a nova linha à direita em um segundo pacote, enquanto os métodos eco, printf e arquivo de texto mantêm a nova linha no mesmo pacote, mas não sei ao certo o que causa esse comportamento.