在python中解析一个pcap文件

Mat*_*ach 14 python parsing pcap

我试图通过python中的pcap文件进行解析.我的目标是能够提取TCP或UDP文件的类型以及它们开始/结束的时间.有没有人在任何某些软件包中有任何建议可能对它们有用,并且有关于它们的文档或一般性的建议吗?

小智 18

我会用python-dpkt.以下是文档:http://www.commercialventvac.com/dpkt.html

虽然对不起,这就是我所知道的怎么办.

#!/usr/local/bin/python2.7

import dpkt

counter=0
ipcounter=0
tcpcounter=0
udpcounter=0

filename='sampledata.pcap'

for ts, pkt in dpkt.pcap.Reader(open(filename,'r')):

    counter+=1
    eth=dpkt.ethernet.Ethernet(pkt) 
    if eth.type!=dpkt.ethernet.ETH_TYPE_IP:
       continue

    ip=eth.data
    ipcounter+=1

    if ip.p==dpkt.ip.IP_PROTO_TCP: 
       tcpcounter+=1

    if ip.p==dpkt.ip.IP_PROTO_UDP:
       udpcounter+=1

print "Total number of packets in the pcap file: ", counter
print "Total number of ip packets: ", ipcounter
print "Total number of tcp packets: ", tcpcounter
print "Total number of udp packets: ", udpcounter
Run Code Online (Sandbox Code Playgroud)

更新:

关于GitHub的项目,这里的文档

  • 为了防止异常:`UnicodeDecodeError:'utf-8'编解码器无法解码位置0:无效的连续字节的字节0xd4,我们需要对打开的文件使用二进制模式:`dpkt.pcap.Reader(open(filename,'rb '))` (2认同)

小智 9

你可能想从scapy开始.