因项目需要需要回访带mpls头部的攻击包,使用仪表不支持mpls+strike,搭环境又太麻烦,直接使用scapy模块来修改
from scapy.all import *
import re
class MPLS(Packet):
name = "MPLS"
fields_desc = [
BitField("label", 100, 20),
BitField("experimental", 0, 3),
BitField("stack", 1, 1),
BitField("ttl", 255, 8)
]
filename="50537.pcap"
pkts=rdpcap(filename)
pktsmpls=[]
for pkt in pkts:
pktstr = pkt.command()
pktstr = re.sub('type=2048\)/IP', 'type=34887)/IP', pktstr)
pktstr = re.sub("/IP","/MPLS()/IP",pktstr)
pktstr = re.sub('chksum=\d+,', '', pktstr)
pktmpls = eval(pktstr)
pktsmpls.append(pktmpls)
wrpcap(f"mpls-{filename}",pktsmpls)