我在Windows 8中安装了python(x,y)2.7.5.1和dpkt 1.7 win32.exe模块。 我的输入数据集是从CAIDA下载的.pcap文件。我想解析pcap文件以查看数据包的IP和TCP标头,如下所示。
Ethernet(src='\x00\x1a\xa0kUf', dst='\x00\x13I\xae\x84,', data=IP(src='\xc0\xa8\n\n',
off=16384, dst='C\x17\x030', sum=25129, len=52, p=6, id=51105, data=TCP(seq=9632694,
off_x2=128, ack=3382015884, win=54, sum=65372, flags=17, dport=80, sport=56145)))
使用的代码是
f = open('test.pcap') pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
print eth
但是我只是在下面:它没有显示IP和TCP标头。是什么原因?如何解析pcap文件的头文件?
Ethernet(src='\x00\x00\xcd\x01k7', dst='E\x00\x00<\xda\xd3', type=10315, data='Y\xacG~\xde@\x08\x00\xf8\xb3K\xa4\x05\x00')
请尽快帮助我..........
答案 0 :(得分:1)
它提供了内部包含Ip和TCP数据包的完整以太网数据包。
In [87]: data
Out[87]: Ethernet(src='\x00\x1a\xa0kUf', dst='\x00\x13I\xae\x84,', data=IP(src='\xc0\xa8\n\n', off=16384, dst='C\x17\x030', sum=25129, len=52, p=6, id=51105, data=TCP(seq=9632694, off_x2=128, ack=3382015884L, win=54, sum=65372, flags=17, dport=80, sport=56145)))
您可以从以太网数据包访问源mac地址
In [88]: data.src
Out[88]: '\x00\x1a\xa0kUf'
访问以太网数据包数据(IP pkt内部包含TCP pkt)
In [89]: data.data
Out[89]: IP(src='\xc0\xa8\n\n', off=16384, dst='C\x17\x030', sum=25129, len=52, p=6, id=51105, data=TCP(seq=9632694, off_x2=128, ack=3382015884L, win=54, sum=65372, flags=17, dport=80, sport=56145))
以
的形式访问源IPIn [90]: data.data.src
Out[90]: '\xc0\xa8\n\n'
以
的形式访问TCP数据In [91]: data.data.data
Out[91]: TCP(seq=9632694, off_x2=128, ack=3382015884L, win=54, sum=65372, flags=17, dport=80, sport=56145)
您可以将代码修改为
使用的代码是
f = open('test.pcap') pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
print eth
eth.data # To get IP pkt
eth.data.data # To get TCP pkt