2013-07-17 37 views
6

Czy istnieje sposób, aby zrobićtcpdump tylko do adresów URL drukowania

tcpdump -i lo -A 

i go wydrukować wszystkie adresy URL, wszystkie połączenia wykonane?

Zrobiłem:

sudo tcpdump -i lo -A | grep Host: 

który działa świetnie. Ale zastanawiałem się, czy istnieją możliwości, aby zrobić to samo w tcpdump

Wreszcie, czy jest jakiś sposób, aby to zrobić w Pythonie bez użycia polecenia sys lub POPEN/podproces

+0

tcpdump nie może filtrować za pomocą zawartości pakietów, możesz zwiększyć wydajność, przesyłając pakiety tylko dla 'przychodzących połączeń TCP do twojego portu HTTP'. – Dennis

+0

Ponadto, ponieważ HTTP nie przesyła żądanego adresu URL w prosty sposób, będzie trochę trudniej wyłowić z pliku danych tcpdump - musisz połączyć nagłówek 'Host' i wiersz' GET' lub 'POST' uzyskać pełny adres URL ... – Stobor

Odpowiedz

1

można użyć scapy funkcji nasłuchu i użyć wyrażenia regularnego lub grep

import scapy 
tcpdump = sniff(count=5,filter="host 64.233.167.99",prn=lambda x:x.summary()) 
print tcpdump 

zmienić filtr na tekst filtra :)

a może chcesz zapisać ruchu i zobaczyć go w Wireshark

wrpcap("temp.cap",pkts) 
+0

Czy można sniff na okres czasu, a nie danej liczby. (zacznij sniff) robić rzeczy. (przestań węszyć) Ważne jest również, abyśmy nagrywali wszystko na interfejsie lo. – Cripto

2

tcpdump nie może filtrować w oparciu o zawartość pakietów (bez głębokiej inspekcji pakietów), ponieważ wykorzystuje tylko filtr pcacp. Możesz poprawić swoją wydajność, przesyłając tylko te pakiety do incoming TCP connections to your HTTP port.

tcpdump -i lo -A tcp port 80 

tcpdump python: użyj Pcapy

Inną opcją jest użycie tshark

+0

"tcpdump nie może filtrować w oparciu o zawartość pakietów (bez głębokiej inspekcji pakietów)". Użycie '-vv' powoduje, że jesteś całkiem blisko. –

1

Co chcesz użyć jest libpcap który jest biblioteka do przechwytywania pakietów, które wykorzystuje tcpdump. Istnieje opakowanie Pythona do tego, które można znaleźć here.

Możesz, w python, zbudować dowolne filtrowanie na górze filtrowania już dostarczonego przez pcap/tcpdump. Następnie wyświetl filtrowane dane wyjściowe (lub cokolwiek innego, co chcesz zrobić w swoim skrypcie pythona).