使用scapy给pcap包添加vlan

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,其它数据没变。

 

posted @ 2023-04-20 14:49  超级宝宝11  阅读(454)  评论(0编辑  收藏  举报