2013-07-17 11 views
6

C'è un modo per faretcpdump per Solo gli URL di stampa

tcpdump -i lo -A 

e farla stampare tutti gli URL, fatte tutte le connessioni?

ho fatto:

sudo tcpdump -i lo -A | grep Host: 

che funziona alla grande. Ma mi chiedevo se ci sono opzioni per fare lo stesso in tcpdump

Infine, c'è un modo per fare questo in Python senza utilizzare un comando SYS o Popen/sottoprocesso

+0

tcpdump non può filtrare utilizzando il contenuto dei pacchetti, è possibile migliorare le prestazioni semplicemente scaricando tali pacchetti per "connessioni TCP in entrata alla porta HTTP". – Dennis

+0

Inoltre, poiché HTTP non trasferisce l'URL richiesto in modo semplice, sarà leggermente più difficile scegliere un feed tcpdump: devi combinare l'intestazione 'Host' e la riga' GET' o 'POST' a ottieni l'URL completo ... – Stobor

risposta

1

è possibile utilizzare Scapy la funzione di annusare e utilizzare regex o grep

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

cambiamento del filtro per il testo del filtro :)

o forse si desidera salvare il traffico e vederlo in wireshark

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

E 'possibile annusare per un periodo di tempo e non un dato conteggio (iniziare a sniffare) fare cose. (stop sniff) Inoltre, è importante registrare tutto sull'interfaccia lo. – Cripto

2

tcpdump non può filtrare in base al contenuto dei pacchetti (senza ispezione deep packet) poiché utilizza solo il filtro pcacp. Potresti migliorare le tue prestazioni scaricando solo quei pacchetti per incoming TCP connections to your HTTP port.

tcpdump -i lo -A tcp port 80 

TCPDUMP pitone: utilizzare Pcapy

Un'altra opzione è quella di utilizzare tshark

+0

"tcpdump non può filtrare in base al contenuto dei pacchetti (nessuna ispezione deep packet)". L'uso di '-vv' ti avvicina molto. –

1

Ciò che si vuole utilizzare è libpcap che è la libreria di cattura dei pacchetti che utilizza tcpdump. C'è un wrapper python per questo che può essere trovato here.

È possibile, in python, creare qualsiasi filtro che si desidera aggiungere al filtro già fornito da pcap/tcpdump. Quindi visualizza questo output filtrato (o qualunque cosa tu voglia fare nel tuo script python).