我有一些pcap,我需要从其中提取一些信息,这些数据包是混合的,有些是原始IP,还有一些包含以太网帧。
在解析之前,我需要有条件地检查数据包的类型,因为具有以太网帧的数据包可以用以下方法解析:
for ts, buf in pkts:
if buf contains_ethernet:
eth = dpkt.ethernet.Ethernet(buf)
if eth.type == dpkt.ethernet.ETH_TYPE_IP:
ip = eth.data
else:
continue
else:
ip = dpkt.ip.IP(buf)
如何将contains_ethernet
定义为布尔值或条件?
发布于 2020-05-29 13:26:02
pcap头文件定义捕获的链接类型(以太网、原始IP、.)
在处理数据包之前,您应该使用dpkt.pcap.Reader()对象的datalink()来获取pcap的链接类型。根据您的脚本示例:
if <<dpkt.pcap.Reader>>.datalink() == LINKTYPE_ETHERNET: ## Process Ethernet frame elif <<dpkt.pcap.Reader>>.datalink() == LINKTYPE_RAW: ## Processs Raw IP datagram else: ## Other link types
下面是链接类型的列表:http://www.tcpdump.org/linktypes.html
值为LINKTYPE_ETHERNET用于以太网,LINKTYPE_RAW用于原始IP
https://stackoverflow.com/questions/62082121
复制相似问题