我试图用python的dpkt解析录制的PCAP文件。当我试图过滤有http(在端口80上)请求的tcp连接时,得到的错误如下所示:
import dpkt
import socket
counter=0
ipcounter=0
tcpcounter=0
udpcounter=0
httpcounter=0
filename='sampledata.pcap'
for ts, pkt in dpkt.pcap.Reader(file(filename, "rb")):
counter+=1
eth=dpkt.ethernet.Ethernet(pkt)
if eth.type!=dpkt.ethernet.ETH_TYPE_IP:
continue
ip=eth.data
tcp=ip.data
ipcounter+=1
if ip.p==dpkt.ip.IP_PROTO_TCP:
tcpcounter+=1
if ip.p==dpkt.ip.IP_PROTO_UDP:
udpcounter+=1
if tcp.dport == 80 and tcp.flags & tcp.TH_SYN == 1 and tcp.flags & tcp.TH_SYN == 1 and tcp.flags & tcp.TH_ACK == 1 :
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
print "%s -> %s" %(src,dst)`
错误::我收到一些OSPF错误,如下所示
^{pr2}$
假设IP包中封装的数据是tcp。但在本例中,它是一个OSPF包。OSPF不使用TCP/IP传输协议(UDP,TCP),而是直接封装在协议号为89的IP数据报中。在
您需要检查数据包中的协议类型,如果是tcp或udp,则使用dport。在
相关问题 更多 >
编程相关推荐