2013-04-30 230 views
10

是否有可能基於tcp連接時間(連接持續時間)過濾tcpdump(活動或創建轉儲後)?tcpdump - 如何根據tcp連接時間/持續時間進行過濾

我正在記錄http json rpc流量。 我只想記錄比連續說1000毫秒更長的連接。

在wireshark中有菜單 - >統計 - >對話(TCP選項卡)中的工具,在那裏我可以按「持續時間」進行排序。但我想記錄(或過濾)長壽命的連接之前(不wireshark)。

在僞命令我想要做這樣的事情:

tcpdump -i eth0 port 80 and connectionTime>1000ms -w data.pcap 

或記錄後:

cat data.pcap | SOMETOOL -connectionTime>1000ms > dataLongConnections.pcap 

SOMETOOL必須導出過濾後的數據來格式化Wireshark的就明白了。 因爲過濾後我想分析Wireshark中的數據。

我該怎麼做?

+0

您是否按照kauppi的建議嘗試了SplitCap?你不能使用tcpdump過濾會話持續時間,因爲它不是一個有狀態的過濾器,乍一看SplitCap似乎提供了你開始所需的東西。 – 2013-05-24 14:54:25

+0

要添加到Tom Regner所說的內容:'tcpdump'不記錄會話持續時間。 Wireshark能夠向你顯示信息的原因是因爲Wireshark本身跟蹤會話持續時間,而不是簡單地解析'tcpdump'。 – 2013-05-24 18:55:41

回答

1

您需要考慮您的流量流量級別而不是數據包級別。

如果您使用NetFlow,則可以使用flow-toolsflow-nfilter按持續時間過濾流量。所以你可以convert your pcap to NetFlow和以後的過濾它。

缺點是在輸出端你會得到NetFlow,而不是PCAP。建立一些統計數據就足夠了,但是要檢查數據包 - 當然不是。

你也可以用C(硬方法)或scapy(使用python)(更簡單的方法)用libpcap構建自己的工具。後面的選項不應該太難(只要你使用python)

2

SplitCap可能適合你。它將把PCAP作爲每個TCP/UDP會話的輸入和輸出單獨的PCAP。分割之後,您可以從輸出PCAP中篩選要保留的有趣內容。