2013-07-17 19 views
6

有沒有辦法做到tcpdump的只有打印網址

tcpdump -i lo -A 

,並將它打印的所有URL,任何連接做?

我做:

sudo tcpdump -i lo -A | grep Host: 

偉大的工程。但是,如果有選擇,做相同的tcpdump的

最後,我想知道,有沒有辦法做到這一點在Python不使用SYS命令或POPEN /子

+0

tcpdump無法使用軟件包的內容進行過濾,只需將這些軟件包轉儲到「到您的HTTP端口的傳入TCP連接」即可提高性能。 – Dennis

+0

此外,由於HTTP不會以簡單的方式傳輸請求的URL,因此挑出tcpdump源會稍微困難 - 您必須將「主機」標頭和「GET」或「POST」行組合到得到完整的URL ... – Stobor

回答

1

可以使用Scapy的嗅探功能,使用正則表達式或者用grep

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

改變過濾器爲您過濾文本:)

或者你要保存的流量,看它在Wireshark的

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

是否有可能嗅一段時間,而不是一個給定的計數(開始嗅)做東西。 (停止嗅探)此外,我們記錄界面lo上的所有內容非常重要。 – Cripto

2

tcpdump無法根據數據包的內容進行過濾(無深度數據包檢查),因爲它只使用pcacp過濾器。 只需將這些軟件包轉儲到incoming TCP connections to your HTTP port即可提高性能。

tcpdump -i lo -A tcp port 80 

TCPDUMP蟒蛇:使用Pcapy

另一種選擇是使用tshark

+0

「tcpdump無法根據數據包的內容進行過濾(無深度數據包檢查)」。使用'-vv'可以讓你非常接近。 –

1

要使用什麼是libpcap的是它使用tcpdump的抓包庫。這是一個python包裝,可以找到here

您可以在python中,然後在pcap/tcpdump已經提供的過濾之上構建您想要的任何過濾。然後顯示這個過濾的輸出(或者你想在你的python腳本中做的任何事情)。