Bem, para todos os fãs do tcpdump =)
EXECUTE TODOS OS COMANDOS COMO RAIZ !!!
Obtenha root em um terminal com
sudo -i
Para capturar os pacotes RAW ...
sudo tcpdump -i any -w /tmp/http.log &
Isto irá capturar todos os pacotes brutos, em todas as portas, em todas as interfaces e gravá-los em um arquivo, /tmp/http.log
.
Execute seu aplicativo. Obviamente, ajuda se você não executar nenhum outro aplicativo que use HTTP (navegadores da web).
Mata tcpdump
killall tcpdump
Para ler o log, use o sinalizador -A
e canalize a saída para less
:
tcpdump -A -r /tmp/http.log | less
O sinalizador -A
imprime a "carga útil" ou o texto ASCII nos pacotes. Isso enviará a saída para less
, você pode paginar para cima e para baixo. Para sair de less
, digite Q .
Quando vou ao Google, vejo (nos pacotes brutos):
20:42:38.179759 IP ufbt.local.56852 > sea09s02-in-f3.1e100.net.www: Flags [P.], seq 1:587, ack 1, win 913, options [nop,nop,TS val 25523484 ecr 492333202], length 586
E..~.v@[email protected]......!#...P.(.gS.c..............u..Xh.GET /generate_204 HTTP/1.1
Host: clients1.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34
Referer: http://www.google.com/
Accept: */*
Accept-Encoding: gzip, deflate, x-gzip, x-deflate
Accept-Charset: utf-8,*;q=0.5
Accept-Language: en-US, en-US; q=0.8, en; q=0.6
Cookie: PREF=ID=dd958d4544461998:FF=0:TM=1323842648:LM=1360205486:S=Fg_QCDsLMr4ZepIo; NID=67=OQJWjIDHG-B8r4EuM19F3g-nkaMcbvYwoY_CsOjzvYTOAxwqAos5kfzsk6Q14E70gIfJjHat8d8PuQIloB12BE-JuSHgsKHR2QSpgN12qSWoxeqhdcSQgzw5CHKtbR_a
tcpdump
tem um longo conjunto de opções para refinar a coleta de dados, desde a especificação de interfaces de rede até portas para endereços IP de origem e de destino. Não pode descriptografar (por isso não funcionará com HTTPS).
Depois de saber em que você está interessado, você pode usar várias opções com tcpdump
para registrar apenas os dados de interesse. A estratégia geral é primeiro registrar todos os pacotes, revisar os dados brutos e capturar apenas os pacotes de interesse.
Alguns sinalizadores úteis (opções):
-i Specify an interface
-i eth0
tcp port xx
tcp port 80
dst 1.2.3.4
specify a destination ip address
Há uma curva de aprendizado, tanto para usar tcpdump
quanto para aprender a analisar os dados coletados. Para ler mais, sugiro tcpdump
Primer com exemplos de Daniel Miessler .