HTTP dissector que lê do pcap

3

Eu tenho alguns dados pcap de uma interface local que gostaria de analisar. Especificamente, gostaria do conteúdo das sessões HTTP. Estou ciente de muitas ferramentas de estatísticas HTTP cabeçalho , mas gostaria especificamente de remontar o conteúdo de cada conexão HTTP completa.

Existe alguma ferramenta adequada de despejo de pacotes de camada 4 (para Linux) da mesma forma que tcpdump et al trabalham para a camada 3, algo que pode entender e manipular HTTP?

Sinta-se à vontade para me redirecionar se isso tiver sido solicitado antes, embora eu ainda não tenha encontrado uma resposta para isso no SF. Obrigado!

    
por Kerrek SB 17.07.2011 / 00:46

1 resposta

3

Eu suspeito que tcpflow faria o seu trabalho bem o suficiente, o que pode levar um arquivo pcap e dividi-lo em suas partes componentes. Por exemplo, eu fiz o seguinte como um teste:

sudo tcpdump -i eth0 -n -s 0 -w /tmp/capt -v port 80

Em seguida, recarregou sua pergunta, interrompeu tcpdump e depois executou:

tcpflow -r /tmp/capt

E tenho cerca de 20 arquivos, cada um contendo uma única solicitação HTTP ou resposta (conforme apropriado).

Por outro lado, eu costumo ir à opção soft e abrir meus arquivos de captura em wireshark, cujo modo "Analisar - > Seguir TCP Stream" é incrível (codificado por cores e tudo ).

Ambas as ferramentas, por sinal, também podem fazer a captura de pacotes - você não precisa alimentá-las com uma captura de pacotes existente via tcpdump .

Se você tem uma necessidade específica de analisar o tráfego HTTP depois de dividi-lo, é bem trivial: o protocolo HTTP é muito simples. No caso trivial (não-keepalive / pipeline), você pode usar o seguinte para obter o cabeçalho request ou response:

sed '/^\r$/q' <connectionfile>

E isso para obter o corpo da solicitação / resposta:

sed -n '/^\r$/,$p' <connectionfile>

(Você também pode canalizar coisas através desses comandos sed, se quiser).

Em conexões keepalive, você precisa começar a fazer um pequeno scripty, mas mesmo assim são 20 linhas de script para processar os dois arquivos (A para B, B para A), extrair os cabeçalhos, ler o Content-Length depois leia o corpo - e se você estiver fazendo algum tipo de processamento automatizado, você estará escrevendo código para fazer essas coisas de qualquer maneira, então um pouco de dissecação HTTP não aumenta consideravelmente a carga de trabalho.

    
por 17.07.2011 / 01:54

Tags