首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Dot1q (801.2 Q)从pcap中移除

将Dot1q (801.2 Q)从pcap中移除
EN

Stack Overflow用户
提问于 2018-06-11 11:04:08
回答 1查看 1.6K关注 0票数 1

我正在尝试使用python脚本向设备发送TCP流量。我的脚本读取用于处理数据包的特定pcap。在我的packet capture file中有Dot1Q VLAN标记,我想在脚本中使用scapy删除它。

输出包括以下内容:

醚/ Dot1Q / IP / TCP >:端口>:端口

请告诉我如何删除vlan标记在我的脚本使用替罪羊。

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 11:31:53

您应该遍历所有层并找到Ether。然后将其有效负载设置为802.1q层的有效负载。代码看起来像(这不是通过草图精确的代码):

代码语言:javascript
运行
复制
while not isinstance(layer, NoPayload):
    if (type(layer) is Ether):
        payload_inside_dot1q = layer.payload.payload
        layer.add_payload(payload_inside_dot1q)
        layer.type = 0x0800  # IPv4
    layer = layer.payload

您可能还应该纠正以太层的layer.chksum

UPD:您也可以在准备pcap时删除802.1q层tcprewrite (https://linux.die.net/man/1/tcprewrite):

代码语言:javascript
运行
复制
tcprewrite --enet-vlan=del --infile=input.cap --outfile=output.cap
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50796302

复制
相关文章

相似问题

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