5 from string
import Template
8 from TdcPlugin
import TdcPlugin
10 from tdc_config
import *
13 from scapy
.all
import *
15 print("Unable to import the scapy python module.")
16 print("\nIf not already installed, you may do so with:")
17 print("\t\tpip3 install scapy==2.4.2")
20 class SubPlugin(TdcPlugin
):
22 self
.sub_class
= 'scapy/SubPlugin'
25 def post_execute(self
):
26 if 'scapy' not in self
.args
.caseinfo
:
28 print('{}.post_execute: no scapy info in test case'.format(self
.sub_class
))
31 # Check for required fields
32 scapyinfo
= self
.args
.caseinfo
['scapy']
33 scapy_keys
= ['iface', 'count', 'packet']
37 if k
not in scapyinfo
:
41 print('{}: Scapy block present in the test, but is missing info:'
42 .format(self
.sub_class
))
43 print('{}'.format(missing_keys
))
45 pkt
= eval(scapyinfo
['packet'])
46 if '$' in scapyinfo
['iface']:
47 tpl
= Template(scapyinfo
['iface'])
48 scapyinfo
['iface'] = tpl
.safe_substitute(NAMES
)
49 for count
in range(scapyinfo
['count']):
50 sendp(pkt
, iface
=scapyinfo
['iface'])