从pcap中删除Dot1q(801.2 Q)

2024-10-02 06:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用python脚本将TCP流量发送到设备。 我的脚本读取一个特殊的pcap来处理数据包。 在我的packet capture file中有dot1qvlan标记,我想用脚本中的scapy删除它。在

输出包含以下内容:

Ether / Dot1Q / IP / TCP >: port > : port

请告诉我如何使用scapy删除脚本中的vlan标记。在


Tags: 标记ip脚本packetportpcap数据包scapy
1条回答
网友
1楼 · 发布于 2024-10-02 06:31:11

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

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):

^{pr2}$

相关问题 更多 >

    热门问题