|
|
@ -11,7 +11,7 @@ from util import find_data_file
|
|
|
|
BG_IMG = 'icon.png'
|
|
|
|
BG_IMG = 'icon.png'
|
|
|
|
filename = sysid + "gendata.csv"
|
|
|
|
filename = sysid + "gendata.csv"
|
|
|
|
COLUMN_NAMES = np.flip(['Executable', 'Proto', 'Source IP', 'Destination IP', 'Status', 'PID'])
|
|
|
|
COLUMN_NAMES = np.flip(['Executable', 'Proto', 'Source IP', 'Destination IP', 'Status', 'PID'])
|
|
|
|
COLUMN_SIZES = np.flip([150, 50, 200, 200, 110, 65])
|
|
|
|
COLUMN_SIZES = np.flip([200, 50, 200, 200, 140, 100])
|
|
|
|
TEST_FILE = None
|
|
|
|
TEST_FILE = None
|
|
|
|
|
|
|
|
|
|
|
|
displaydata = None
|
|
|
|
displaydata = None
|
|
|
@ -19,12 +19,26 @@ settings = None
|
|
|
|
|
|
|
|
|
|
|
|
killme = False
|
|
|
|
killme = False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def loaddata():
|
|
|
|
|
|
|
|
global TEST_FILE
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
TEST_FILE = pd.read_csv(find_data_file(filename), skiprows=1)
|
|
|
|
|
|
|
|
TEST_FILE = TEST_FILE.iloc[1:, :]
|
|
|
|
|
|
|
|
TEST_FILE.columns = ['Executable', 'Protocol', 'Source IP', 'Destination IP', 'Status', 'PID']
|
|
|
|
|
|
|
|
#fprint(TEST_FILE)
|
|
|
|
|
|
|
|
#fprint(len(TEST_FILE))
|
|
|
|
|
|
|
|
#fprint(TEST_FILE.iloc[1, 1])
|
|
|
|
|
|
|
|
except FileNotFoundError:
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OtherFrame(wx.Frame):
|
|
|
|
class OtherFrame(wx.Frame):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Class used for creating frames other than the main one
|
|
|
|
Class used for creating frames other than the main one
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
def __init__(self):
|
|
|
|
def __init__(self):
|
|
|
|
wx.Frame.__init__(self, None, -1, 'Server Panel', size=(600, 250))
|
|
|
|
wx.Frame.__init__(self, None, -1, 'Server Panel', size=(1000, 700))
|
|
|
|
panel = ServerPanel(self)
|
|
|
|
panel = ServerPanel(self)
|
|
|
|
self.Show()
|
|
|
|
self.Show()
|
|
|
|
|
|
|
|
|
|
|
@ -122,12 +136,11 @@ class ServerPanel(wx.Panel):
|
|
|
|
def __init__(self, parent):
|
|
|
|
def __init__(self, parent):
|
|
|
|
super().__init__(parent, size=(500, 500))
|
|
|
|
super().__init__(parent, size=(500, 500))
|
|
|
|
#self.SetBackgroundColour((44, 51, 51))
|
|
|
|
#self.SetBackgroundColour((44, 51, 51))
|
|
|
|
|
|
|
|
self.main_sizer = wx.BoxSizer(wx.VERTICAL)
|
|
|
|
main_sizer = wx.BoxSizer(wx.VERTICAL)
|
|
|
|
|
|
|
|
secondary_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
|
|
secondary_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
|
|
self.row_obj_dict = {}
|
|
|
|
self.row_obj_dict = {}
|
|
|
|
self.list_ctrl = wx.ListCtrl(
|
|
|
|
self.list_ctrl = wx.ListCtrl(
|
|
|
|
self, size=(-1, 200),
|
|
|
|
self, size=(-1, 400),
|
|
|
|
style=wx.LC_REPORT | wx.BORDER_SUNKEN
|
|
|
|
style=wx.LC_REPORT | wx.BORDER_SUNKEN
|
|
|
|
)
|
|
|
|
)
|
|
|
|
tb = wx.ToolBar( self, -1)
|
|
|
|
tb = wx.ToolBar( self, -1)
|
|
|
@ -136,52 +149,73 @@ class ServerPanel(wx.Panel):
|
|
|
|
tb.AddTool(wx.ID_ANY, '',wx.Bitmap(find_data_file("WXPython_30x30.png")),)
|
|
|
|
tb.AddTool(wx.ID_ANY, '',wx.Bitmap(find_data_file("WXPython_30x30.png")),)
|
|
|
|
tb.AddTool(wx.ID_ANY, '',wx.Bitmap(find_data_file("settings_30x30.png")))
|
|
|
|
tb.AddTool(wx.ID_ANY, '',wx.Bitmap(find_data_file("settings_30x30.png")))
|
|
|
|
tb.Realize()
|
|
|
|
tb.Realize()
|
|
|
|
main_sizer.Add(tb)
|
|
|
|
self.main_sizer.Add(tb)
|
|
|
|
#main_sizer.SetBackgroundColour((44, 51, 51))
|
|
|
|
#main_sizer.SetBackgroundColour((44, 51, 51))
|
|
|
|
# self.pnl1.SetBackgroundColour(wx.BLACK)
|
|
|
|
# self.pnl1.SetBackgroundColour(wx.BLACK)
|
|
|
|
self.handle_columns()
|
|
|
|
self.handle_columns()
|
|
|
|
global settings
|
|
|
|
#self.updatedata()
|
|
|
|
for i in range(len(TEST_FILE)):
|
|
|
|
wx.CallAfter(self.updatedata)
|
|
|
|
self.list_ctrl.InsertItem(i, TEST_FILE.iloc[i, 0])
|
|
|
|
|
|
|
|
#fprint(TEST_FILE.iloc[i, 5] + " in " + str(settings["badapps"]))
|
|
|
|
|
|
|
|
#if TEST_FILE.iloc[i, 5] in settings["badapps"]:
|
|
|
|
|
|
|
|
for pid in settings["badapps"]:
|
|
|
|
|
|
|
|
#fprint(pid)
|
|
|
|
|
|
|
|
if str(TEST_FILE.iloc[i, 5]) == str(pid):
|
|
|
|
|
|
|
|
#fprint("Got " + TEST_FILE.iloc[i, 5])
|
|
|
|
|
|
|
|
settings["killbox"].append(pid)
|
|
|
|
|
|
|
|
fprint(settings["killbox"])
|
|
|
|
|
|
|
|
self.list_ctrl.SetItemBackgroundColour(i, wx.Colour(200, 51, 51))
|
|
|
|
|
|
|
|
for j in range(1, 6):
|
|
|
|
|
|
|
|
self.list_ctrl.SetItem(i, j, str(TEST_FILE.iloc[i, j]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#fprint(i, j, TEST_FILE.iloc[i, j])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
main_sizer.Add(self.list_ctrl, 0, wx.ALL | wx.EXPAND, 20)
|
|
|
|
wx.GetApp().ProcessPendingEvents()
|
|
|
|
|
|
|
|
self.main_sizer.Add(self.list_ctrl, 0, wx.ALL | wx.EXPAND, 20)
|
|
|
|
start_button = wx.Button(self, label='Start')
|
|
|
|
start_button = wx.Button(self, label='Start')
|
|
|
|
start_button.SetBackgroundColour((205, 215, 206))
|
|
|
|
start_button.SetBackgroundColour((205, 215, 206))
|
|
|
|
start_button.Bind(wx.EVT_BUTTON, self.on_edit)
|
|
|
|
start_button.Bind(wx.EVT_BUTTON, self.on_start)
|
|
|
|
start_button.Bind(wx.EVT_ENTER_WINDOW, self.on_edit)
|
|
|
|
#start_button.Bind(wx.EVT_ENTER_WINDOW, self.on_start)
|
|
|
|
stop_button = wx.Button(self, label='Stop')
|
|
|
|
stop_button = wx.Button(self, label='Stop')
|
|
|
|
stop_button.SetBackgroundColour('#F08080')
|
|
|
|
stop_button.SetBackgroundColour('#F08080')
|
|
|
|
|
|
|
|
|
|
|
|
secondary_frame_button = wx.Button(self, label='Window')
|
|
|
|
secondary_frame_button = wx.Button(self, label='Window')
|
|
|
|
secondary_frame_button.Bind(wx.EVT_BUTTON, self.on_window)
|
|
|
|
secondary_frame_button.Bind(wx.EVT_BUTTON, self.on_window)
|
|
|
|
# wx.BORDER(stop_button, wx.BORDER_NONE)
|
|
|
|
# wx.BORDER(stop_button, wx.BORDER_NONE)
|
|
|
|
stop_button.Bind(wx.EVT_BUTTON, self.on_edit)
|
|
|
|
stop_button.Bind(wx.EVT_BUTTON, self.on_stop)
|
|
|
|
main_sizer.Add(start_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
|
|
|
self.main_sizer.Add(start_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
|
|
|
main_sizer.Add(stop_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
|
|
|
self.main_sizer.Add(stop_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
|
|
|
main_sizer.Add(secondary_frame_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
|
|
|
self.main_sizer.Add(secondary_frame_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
|
|
|
self.SetSizer(main_sizer)
|
|
|
|
self.SetSizer(self.main_sizer)
|
|
|
|
|
|
|
|
|
|
|
|
def handle_columns(self):
|
|
|
|
def handle_columns(self):
|
|
|
|
for col in range(len(COLUMN_NAMES)):
|
|
|
|
for col in range(len(COLUMN_NAMES)):
|
|
|
|
self.list_ctrl.InsertColumn(0, COLUMN_NAMES[col], width=COLUMN_SIZES[col])
|
|
|
|
self.list_ctrl.InsertColumn(0, COLUMN_NAMES[col], width=COLUMN_SIZES[col])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def updatedata(self):
|
|
|
|
|
|
|
|
fprint("updatedata called")
|
|
|
|
|
|
|
|
loaddata()
|
|
|
|
|
|
|
|
global settings
|
|
|
|
|
|
|
|
if self.list_ctrl.DeleteAllItems():
|
|
|
|
|
|
|
|
fprint("Items deleted")
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
fprint("Unable to delete")
|
|
|
|
|
|
|
|
for i in range(len(TEST_FILE)):
|
|
|
|
|
|
|
|
idx = 0
|
|
|
|
|
|
|
|
for pid in settings["badapps"]:
|
|
|
|
|
|
|
|
#fprint(pid)
|
|
|
|
|
|
|
|
idx = i
|
|
|
|
|
|
|
|
if str(TEST_FILE.iloc[i, 5]) == str(pid): # "bad" pid, highlight in red at the top
|
|
|
|
|
|
|
|
idx = self.list_ctrl.InsertItem(0, TEST_FILE.iloc[i, 0])
|
|
|
|
|
|
|
|
self.list_ctrl.SetItemBackgroundColour(idx, wx.Colour(200, 51, 51))
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
idx = self.list_ctrl.InsertItem(i, TEST_FILE.iloc[i, 0])
|
|
|
|
|
|
|
|
#fprint(TEST_FILE.iloc[i, 5] + " in " + str(settings["badapps"]))
|
|
|
|
|
|
|
|
#if TEST_FILE.iloc[i, 5] in settings["badapps"]:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#fprint("Got " + TEST_FILE.iloc[i, 5])
|
|
|
|
|
|
|
|
for j in range(1, 6):
|
|
|
|
|
|
|
|
fprint(str(idx) + " " + str(TEST_FILE.iloc[i, 0]))
|
|
|
|
|
|
|
|
self.list_ctrl.SetItem(idx, j, str(TEST_FILE.iloc[idx, j]))
|
|
|
|
|
|
|
|
|
|
|
|
def on_edit(self, event):
|
|
|
|
#fprint(i, j, TEST_FILE.iloc[i, j])
|
|
|
|
fprint('in on_edit')
|
|
|
|
#self.SetSizer(self.main_sizer)
|
|
|
|
|
|
|
|
wx.CallLater(5000, self.updatedata)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def on_start(self, event):
|
|
|
|
|
|
|
|
fprint('in on_start')
|
|
|
|
|
|
|
|
settings["kill"] = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def on_stop(self, event):
|
|
|
|
|
|
|
|
fprint('in on_stop')
|
|
|
|
|
|
|
|
settings["kill"] = False
|
|
|
|
|
|
|
|
|
|
|
|
def on_window(self, event):
|
|
|
|
def on_window(self, event):
|
|
|
|
OtherFrame()
|
|
|
|
OtherFrame()
|
|
|
@ -194,6 +228,7 @@ class ServerPanel(wx.Panel):
|
|
|
|
self.bitmap = wx.StaticBitmap(self, -1, bmp, (0, 0))
|
|
|
|
self.bitmap = wx.StaticBitmap(self, -1, bmp, (0, 0))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ServerFrame(wx.Frame):
|
|
|
|
class ServerFrame(wx.Frame):
|
|
|
|
def __init__(self):
|
|
|
|
def __init__(self):
|
|
|
|
super().__init__(parent=None,
|
|
|
|
super().__init__(parent=None,
|
|
|
@ -214,16 +249,7 @@ def openwindow(data, sets, kill):
|
|
|
|
settings = sets
|
|
|
|
settings = sets
|
|
|
|
if settings["loggedin"]:
|
|
|
|
if settings["loggedin"]:
|
|
|
|
fprint("Creating server panel")
|
|
|
|
fprint("Creating server panel")
|
|
|
|
global TEST_FILE
|
|
|
|
loaddata()
|
|
|
|
try:
|
|
|
|
|
|
|
|
TEST_FILE = pd.read_csv(find_data_file(filename), skiprows=1)
|
|
|
|
|
|
|
|
TEST_FILE = TEST_FILE.iloc[1:, :]
|
|
|
|
|
|
|
|
TEST_FILE.columns = ['Executable', 'Protocol', 'Source IP', 'Destination IP', 'Status', 'PID']
|
|
|
|
|
|
|
|
fprint(TEST_FILE)
|
|
|
|
|
|
|
|
fprint(len(TEST_FILE))
|
|
|
|
|
|
|
|
#fprint(TEST_FILE.iloc[1, 1])
|
|
|
|
|
|
|
|
except FileNotFoundError:
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
app = wx.App(False)
|
|
|
|
app = wx.App(False)
|
|
|
|
frame = OtherFrame()
|
|
|
|
frame = OtherFrame()
|
|
|
|
app.MainLoop()
|
|
|
|
app.MainLoop()
|
|
|
|