我正在尝试使用python脚本向设备发送TCP
流量。我的脚本读取用于处理数据包的特定pcap
。在我的packet capture file
中有Dot1Q VLAN标记,我想在脚本中使用scapy
删除它。
输出包括以下内容:
醚/ Dot1Q / IP / TCP >:端口>:端口
请告诉我如何删除vlan标记在我的脚本使用替罪羊。
发布于 2018-06-11 11:31:53
您应该遍历所有层并找到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):
tcprewrite --enet-vlan=del --infile=input.cap --outfile=output.cap
https://stackoverflow.com/questions/50796302
复制相似问题