2011-12-09 37 views
6

是否有一種自動方式(無論是在tcpdump還是通過一個輔助應用程序在那裏)來生成一個pcap文件,其中只包含以太網,IP和第4層(在我的情況下是TCP)頭,以便沒有有效載荷/應用程序數據在生成的PCAP?我發現由於標頭大小經常不同,因此選擇不會捕獲任何有效負載數據的捕獲大小是不可能的。從tcpdump剝離有效載荷?

回答

9

你可以用Python的scapy模塊很容易剝離出TCP有效載荷

[[email protected] tshark_wd]$ tcpdump -n -r sample.pcap 
reading from file sample.pcap, link-type EN10MB (Ethernet) 
00:25:42.443559 IP 192.168.12.237.1052 > 192.168.12.236.22: Flags [P.], 
    seq 2445372969:2445373021, ack 1889447842, win 63432, length 52 
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.], 
    ack 52, win 65535, length 0 
00:25:42.443980 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [P.], 
    seq 1:389, ack 52, win 65535, length 388 

有效載荷溶出

在Linux上運行此爲根...

#!/usr/bin/env python 
from scapy.all import * 
INFILE = 'sample.pcap' 
OUTFILE = 'stripped.pcap' 
paks = rdpcap(INFILE) 
for pak in paks: 
    pak[TCP].remove_payload() 
wrpcap(OUTFILE, paks) 

[[email protected] tshark_wd]$ tcpdump -n -r stripped.pcap 
reading from file sample.pcap, link-type EN10MB (Ethernet) 
00:25:42.443559 IP truncated-ip - 52 bytes missing! 192.168.12.237.1052 
    > 192.168.12.236.22: Flags [P.], seq 2445372969:2445373021, 
    ack 1889447842, win 63432, length 52 
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.], 
    ack 52, win 65535, length 0 
00:25:42.443980 IP truncated-ip - 388 bytes missing! 192.168.12.236.22 
    > 192.168.12.237.1052: Flags [P.], seq 1:389, 
    ack 52, win 65535, length 388 

tcpdump以上,請注意 「XX字節失蹤了!」消息。這是因爲我們已經刪除了TCP有效負載。

0

如果簡單截斷會爲你工作,你可以使用:

tcpdump -i eth0 -s 96 -w test1.pcap 

以後你可以使用Wireshark分析它。

+0

不幸的是,由於TCP選項字段,OP是正確的,沒有辦法可靠地預測TCP報頭的長度。大部分情況下,這是IP/TCP報頭中唯一具有長度不同的機會的部分。固定的snaplen值並不能保證您總是在正確的位置截斷TCP有效負載。 –

-2

我的解決方案如下。我很想聽聽其他人如何在沒有外部庫或截斷的情況下做到這一點。我很想聽聽其他人如何執行此操作,因爲我無法在Scapy文檔中找到remove_payload()函數,從而使此答案無法使用。

#read pcap file 
pkts = rdpcap("packet-capture.pcap") 

#write packet with payload "XXXXXXXXXX" 
for pkt in pkts: 
    pkt.load = "XXXXXXXXXX" 

#write new pcap 
wrpcap("new.pcap", pkts) 

這裏的問題是,當使用tcpdump讀取,它留下了字節失蹤了!爲src IP。我可以通過

pkts[_packet_num].load 

有沒有辦法重新生成整個拍攝,所以它看起來就好像它是不變的驗證infromation仍存在使用Scapy的?

+0

這聽起來更像是另一個問題,而不是答案。也許考慮[問](http://stackoverflow.com/questions/ask)另一個。 – adamdunson