50 lines · 1.5 KB · Python
RawDownload
#!/usr/bin/env python3 import osimport signalfrom string import Templateimport subprocessimport timefrom TdcPlugin import TdcPlugin from tdc_config import * try:    from scapy.all import *except ImportError:    print("Unable to import the scapy python module.")    print("\nIf not already installed, you may do so with:")    print("\t\tpip3 install scapy==2.4.2")    exit(1) class SubPlugin(TdcPlugin):    def __init__(self):        self.sub_class = 'scapy/SubPlugin'        super().__init__()     def post_execute(self):        if 'scapy' not in self.args.caseinfo:            if self.args.verbose:                print('{}.post_execute: no scapy info in test case'.format(self.sub_class))            return         # Check for required fields        scapyinfo = self.args.caseinfo['scapy']        scapy_keys = ['iface', 'count', 'packet']        missing_keys = []        keyfail = False        for k in scapy_keys:            if k not in scapyinfo:                keyfail = True                missing_keys.add(k)        if keyfail:            print('{}: Scapy block present in the test, but is missing info:'                .format(self.sub_class))            print('{}'.format(missing_keys))         pkt = eval(scapyinfo['packet'])        if '$' in scapyinfo['iface']:            tpl = Template(scapyinfo['iface'])            scapyinfo['iface'] = tpl.safe_substitute(NAMES)        for count in range(scapyinfo['count']):            sendp(pkt, iface=scapyinfo['iface'])