首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用DPKT python检查数据包是否包含以太网层或原始IP数据包

使用DPKT python检查数据包是否包含以太网层或原始IP数据包
EN

Stack Overflow用户
提问于 2020-05-29 08:53:24
回答 1查看 1K关注 0票数 0

我有一些pcap,我需要从其中提取一些信息,这些数据包是混合的,有些是原始IP,还有一些包含以太网帧。

在解析之前,我需要有条件地检查数据包的类型,因为具有以太网帧的数据包可以用以下方法解析:

代码语言:javascript
运行
复制
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定义为布尔值或条件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62082121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档