Como faço para retornar apenas o cabeçalho Http do tshark?

11

Estou usando o tshark para farejar meus pacotes e só me preocupo com o cabeçalho http (de preferência no formato que ele envia, mas aceito o que posso conseguir).

Eu tentei usar:

tshark tcp port 80 or tcp port 443 -V -R "http"

O que me deu o cabeçalho, mas também o conteúdo (que eu não quero que seja uma grande quantidade de lixo para analisar). Eu realmente me importo apenas com o cabeçalho, existe alguma maneira fácil de obter apenas isso (além de analisar os dados eu mesmo).

Editar: eu deveria me qualificar Eu também me importo com host / port para que eu possa acompanhar as solicitações em vários pacotes.

    
por tzenes 19.08.2010 / 21:58

4 respostas

18

Você pode usar os filtros de exibição do cabeçalho HTTP específicos para mostrar apenas os cabeçalhos de solicitação, apenas os cabeçalhos de resposta ou ambos.

Apenas para os cabeçalhos de solicitação:

tshark tcp port 80 or tcp port 443 -V -R "http.request"

Apenas para os cabeçalhos de resposta:

tshark tcp port 80 or tcp port 443 -V -R "http.response"

E para os cabeçalhos de solicitação e resposta:

tshark tcp port 80 or tcp port 443 -V -R "http.request || http.response"

Observação: isso não filtra apenas os cabeçalhos, apenas os pacotes que contêm os cabeçalhos, então você provavelmente ainda obterá alguns dados, mas a quantidade de dados deverá ser menor do que seria de outra forma.

    
por 19.08.2010 / 23:21
3

Consegui combinar a resposta de @heavyd e executá-la por meio de um filtro sed que obtive de um SO article - (resposta do FJ) para preparar este bebê, que filtra apenas os cabeçalhos:)

sudo tshark tcp port 80 or tcp port 443 -V -R "http.request || http.response" | sed -rn '/Hypertext Transfer Protocol/{:a;N;/    \r\n:?/{/.*/p;d};ba}' >> /tmp/filtered
    
por 10.10.2013 / 23:31
2

Minha própria versão de filtro para facilitar a leitura:

tshark -V -R "tcp.port ==80 && (http.request || http.response)" | awk "/Hypertext Transfer Protocol/,/Frame/ { print };/Transmission Control Protocol/{print};/Internet Protocol/{print}" | grep -v Frame

Desta forma, só vejo informações relevantes sobre IP e TCP, sem todas as coisas de baixo nível, além das informações HTTP completas.

    
por 05.02.2014 / 12:00
2

Na verdade você pode! Todas as respostas anteriores foram muito próximas. Tudo o que você precisa é de -O flag, que filtra todas as informações, exceto HTTP.

tshark -i docker0 -O http -R http.request tcp port 443
    
por 17.08.2016 / 03:36