1、使用wireshark查看pcap文件,一个没有vlan,一个有vlan
2、使用scapy查看有vlan的报文
可以看到Ether层type=VLAN,vlan层为<Dot1Q prio=0 id=0 vlan=10 type=IPv4
3、使用scapy编辑没有vlan的文件的第4个报文
from scapy.all import * packets = rdpcap("gen_full_tcp_2023_04_20_10_21_14.pcap") data = Ether(dst="00:16:3e:33:02:64", src="00:16:3e:5c:f2:a3", type="VLAN") / Dot1Q(prio=0, id=0, vlan=10, type="IPv4") / IP(raw(packets[3]["IP"])) stream = [] stream.append(packets[0]) stream.append(packets[1]) stream.append(packets[2]) stream.append(data) stream.append(packets[4]) stream.append(packets[5]) stream.append(packets[6]) stream.append(packets[7]) stream.append(packets[8]) wrpcap("d.pcap",stream)
说明:
Ether函数:用于构建Ether层数据。源和目的mac地址保持与packets[3]原来一致,type类型为VLAN
Dot1Q函数:用于构建vlan。参考带vlan的文件的各个字段值。
IP函数:用于构建IP层数据。IP层数据保持与packets[3]原来一致。
4、使用wireshark打开新文件查看验证:给第4个报文添加了vlan,其它数据没变。
标签:scapy,stream,IP,vlan,packets,pcap,append From: https://www.cnblogs.com/superbaby11/p/17336839.html