tcpdump filter de acordo com o conteúdo do cabeçalho http

3

usando o tcpdump gostaria de filtrar as respostas que retornam de um servidor de cache do squid para apenas as respostas que retornaram do cache. isso significa que eu preciso filtrar de acordo com o valor do cabeçalho X-CACHE, se o valor é HIT, eu deveria mostrá-lo, caso contrário, a resposta não é do cache. alguma idéia do que deve ser meu filtro tcpdump?

    
por Oded 06.09.2010 / 10:59

3 respostas

2

Você já pensou em usar o ngrep em vez do tcpdump?

    
por 06.09.2010 / 11:52
1

Parece que o tcpdump só pode combinar o conteúdo do pacote para certos bytes, e não buscar arbitrariamente um pacote por uma string. Veja esta lista de filtros avançada para obter algumas orientações.

Uma solução alternativa: Se você adicionar -s0 -A -w - (mostra pacotes inteiros, ASCII, escreva na saída padrão) para seus parâmetros tcpdump, você pode usar grep com algum contexto para mostrar apenas os pacotes que mostram onde X-Cache: HIT .

    
por 06.09.2010 / 11:38
1

Eu não acredito que isso seja possível. Você pode capturar todo o tráfego na combinação correta de porta / ip e filtrá-lo usando o wireshark ou similar.

Você também pode usar o ngrep (pense em grep para sua rede)

Para este tipo de problema, eu normalmente recorro ao uso de libpcap e ruby para escrever um script rápido. Você pode então gravar apenas os pacotes que você precisa ou, na verdade, apenas as informações dos pacotes que você precisa.

Com o ruby é bastante indolor, tenho certeza que python ou similar também seria simples.

    
por 17.09.2010 / 00:07

Tags