tshark dump somente quando a string é correspondida

3

Estou trabalhando em um script de captura da Web em que só desejo despejar o tráfego se o corpo ou URL do HTML contiver uma sequência definida em um arquivo .txt.

Aqui está o meu comando tshark que despeja src ip dest url (host HTTP), que funciona como um encanto.

tshark -i eth1 'port 80' -R 'http.request' -T fields \
   -e frame.number -e frame.time -e ip.src  -e http.host \
   -e http.request.uri -E header=y -E separator=, \
   -E quote=d -E occurrence=f 

Agora aqui é onde eu estou preso. Como faço para apenas acionar esse dump quando um usuário navega até, digamos, hidemyass ou o corpo HTML contém palavras-chave como pornografia?

    
por jemik 05.03.2013 / 22:40

2 respostas

2

Você pode usar o ngrep.

Suporta tanto pcap-filters como regex matching de pacotes. Exemplo:

ngrep -tqW byline 'somethingbad|banana' port 80

encontrará pacotes contendo corpos de solicitação ou resposta contendo 'algo ruim' ou 'banana' na porta 80.

Advertências:

  • Se sua palavra-chave estiver dividida em vários pacotes, ela não corresponderá.
  • Apenas os pacotes que correspondem à palavra-chave serão capturados. Portanto, se você quiser um corpo de solicitação / resposta inteiro que abrange vários pacotes relacionados à transação, fica mais complicado.
por 13.03.2013 / 02:30
0

Resposta curta: você não pode.

Resposta longa: o Wireshark funciona nas camadas 1-6 (melhor nas camadas 1-3). Essa informação de conteúdo http está na camada 7.

Então, se você quiser aprofundar aqui, é o que você poderia fazer (nesse sentido):

Assista constantemente ao tráfego tcp / http com tpcdump para pacotes menores que 900 bytes (duração típica de uma solicitação http inicial). Se você encontrar URLs "interessantes", acione um dump completo da conexão em questão.

Você também pode fazer isso com um despejo completo e constante, mas, nesse caso, seu servidor sniffer provavelmente terá problemas de desempenho.

De qualquer forma, você precisa de um segundo processo que filtre / dispare no tcpdump-output.

Uma alternativa poderia ser o script do wireshark -gui ou usá-lo para capturar os pacotes em questão.

    
por 11.03.2013 / 14:32