I'm in the process of creating a script for dumpcap.exe that would add some more features to it. I am writing it to be multi-platform and most of the MSWindows version is complete.
Currently I am moving what I have to REHL5 in order to start debugging and change what's needed in order to make the transition a little more seem-less. The MSWindows version has been written in Python 2.7, while RHEL5 runs Python 2.5.
The program is around 1200 lines so I will cut out the unnecessary stuff. I will try to be as informative as possible since I do not know where I could have gone wrong
My current problem is that my Variables{} dict is not populating.
Variables = {}
choice = ""
MAX_CHOICE = 0
DUMPCAP = None
section = None
dc_envfile = "cfg.ini"
EVENTBAT = "eventaction.bat"
FINALBAT = "finalaction.bat"
DISPLAY_IFACES = None
DC_PID = None
dc_priority = None
dc_mode = None
#Dumpcap settings:
dc_interface = None
dc_capfile = None
dc_capfilter = None
dc_snaplen = None
dc_promisc = None
dc_bufsize = None
dc_pcapng = None
def readFile(filename):
global section
myfile = open(filename, 'r+')
#with open(filename) as myfile:
for line in myfile:
raw_data, _, comments = line.partition("#")
raw_data = raw_data.strip()
if raw_data[0:1] == '[':
section = line[0:-2]
Variables.setdefault(section, {})
else:
var, _, val = raw_data.partition("=")
var = var.strip(' ')
val = val.strip(' ')
Variables.setdefault(section, {})[var] = [val]
myfile.close()
readFile(dc_envfile)
The commented out line in readFile() is Python2.7 code that will not work in RHEL5. Virtualenv's are not an option.
The .ini file that is being read looks like this
[DC]
dc_capfile = test
dc_interface = 2
dc_ringtime =
dc_priority = NORMAL
dc_maxtime =
dc_snaplen =
dc_bufsize = 20
dc_promisc = Y
dc_capfilter = icmp
dc_maxfiles =
dc_maxsize =
dc_mode = Dumpcap+Event
dc_pcapng = N
dc_ringsize =
dc_maxpackets =
dc_ringfiles =
When This is run, I get the error
File "PythonDumpCap25.py", line 992, in setVariables
if ''.join(map(str, Variables['DC']["dc_priority"])) is '':
KeyError: 'DC'
The setVariables() function includes more than this but the error occurs in the first few lines of it
def setVariables():
global dc_mode, dc_priority
####### Dumpcap settings: #######
global dc_interface, dc_capfile, dc_capfilter, dc_snaplen
global dc_promisc, dc_bufsize, dc_pcapng
####### Stop conditions: #######
global dc_maxpackets, dc_maxtime, dc_maxsize, dc_maxfiles
####### Ringbuffer settings: #######
global dc_ringtime, dc_ringsize, dc_ringfiles
####### Capture event settings: #######
global dc_ev_interface, dc_ev_capfilter, dc_ev_count
global dc_ev_kill, dc_ev_delay
####### Mailsend settings: #######
global ms, ms_smtp_server, ms_smtp_port, ms_sendto
global ms_cc, ms_bcc, ms_rrr, ms_from_name, ms_from
global ms_replyto, ms_importance, ms_sensitivity
global ms_security, ms_user, ms_attach, ms_maxattach
global ms_subject, ms_pm
global SMTP_USER_PASS
if ''.join(map(str, Variables['DC']["dc_priority"])) is '':
dc_priority = "NORMAL"
else:
dc_priority = ''.join(map(str, Variables['DC']["dc_priority"]))
And when i run my printVariables() function it prints an empty dictionary.