Compare commits
9 Commits
1666114892
...
def22643f6
Author | SHA1 | Date | |
---|---|---|---|
def22643f6 | |||
f64ff86d83 | |||
ae230af4fc | |||
6f2f8fc535 | |||
258918eecc | |||
f781056b69 | |||
2ee04b59d1 | |||
88b38d1492 | |||
bbb92d1fdb |
15
auth.py
15
auth.py
@ -3,26 +3,32 @@ import csv
|
|||||||
from util import fprint
|
from util import fprint
|
||||||
from util import find_data_file
|
from util import find_data_file
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
import bcrypt
|
||||||
|
|
||||||
def login(config, user, password, sysid):
|
def login(config, user, password, sysid):
|
||||||
fprint("Attempting to login as " + user)
|
fprint("Attempting to login as " + user)
|
||||||
filename = sysid + "login.csv"
|
filename = sysid + "login.csv"
|
||||||
|
|
||||||
|
#hashpasswd = bcrypt.hashpw(password.encode('utf-8'), user).decode()
|
||||||
with open(find_data_file(filename), "w", newline="") as f:
|
with open(find_data_file(filename), "w", newline="") as f:
|
||||||
writer = csv.writer(f)
|
writer = csv.writer(f)
|
||||||
writer.writerows([[user,password,sysid],])
|
writer.writerows([[user,password,sysid],])
|
||||||
fprint("done creating csv")
|
fprint("done creating csv")
|
||||||
|
#return True
|
||||||
ssh.sftp_send_data(config, filename, 'sendlogin')
|
ssh.sftp_send_data(config, filename, 'sendlogin')
|
||||||
command = "python3 login_service.py " + sysid
|
command = "python3 login_service.py " + sysid
|
||||||
ssh.run_ssh(config, command, 'scripts')
|
ssh.run_ssh(config, command, 'scripts')
|
||||||
sleep(1)
|
|
||||||
filename = sysid + "success.txt"
|
filename = sysid + "success.txt"
|
||||||
|
count = 0
|
||||||
|
while count < 20:
|
||||||
output = ssh.check_for_file(config, filename, 'receivelogin')
|
output = ssh.check_for_file(config, filename, 'receivelogin')
|
||||||
if output == False:
|
if output == False:
|
||||||
filename = sysid + "fail.txt"
|
filename = sysid + "fail.txt"
|
||||||
if ssh.check_for_file(config, filename, 'receivelogin') == False:
|
if ssh.check_for_file(config, filename, 'receivelogin') == False:
|
||||||
# ALERT: DIRTY HACK: SECURITY VULNERABILITY
|
# try again
|
||||||
#return True
|
count += 1
|
||||||
raise ValueError("Unable to determine login status")
|
sleep(0.1)
|
||||||
|
#raise ValueError("Unable to determine login status")
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
@ -33,3 +39,4 @@ def login(config, user, password, sysid):
|
|||||||
else:
|
else:
|
||||||
fprint("Not admin")
|
fprint("Not admin")
|
||||||
return False
|
return False
|
||||||
|
return False
|
74
block.py
Normal file
74
block.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
from util import find_data_file
|
||||||
|
from util import setup_child
|
||||||
|
from util import fprint
|
||||||
|
from util import run_cmd
|
||||||
|
from util import win32
|
||||||
|
from util import linux
|
||||||
|
from util import kill
|
||||||
|
import util
|
||||||
|
import time
|
||||||
|
import csv
|
||||||
|
import ssh
|
||||||
|
|
||||||
|
def get_blocklist(config):
|
||||||
|
setup_child()
|
||||||
|
fprint("Downloading deny list from server")
|
||||||
|
data = ssh.check_for_file(config, "BadIPs.csv", "receive")
|
||||||
|
#fprint(data.stdout)
|
||||||
|
csvreader = csv.reader(data.stdout.split("\n"), delimiter=',', quotechar='|')
|
||||||
|
data2 = list()
|
||||||
|
for row in csvreader:
|
||||||
|
data2.append(row)
|
||||||
|
data2 = [i for i in data2 if i]
|
||||||
|
#fprint(data2)
|
||||||
|
data2.append(["N/A", "N/A", "N/A", "N/A", "100.115.71.78", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A"])
|
||||||
|
fprint(data2)
|
||||||
|
with open(find_data_file("blocklist.csv"), "w", newline="") as f:
|
||||||
|
writer = csv.writer(f)
|
||||||
|
writer.writerows(data2)
|
||||||
|
fprint("done creating csv")
|
||||||
|
return data2
|
||||||
|
|
||||||
|
def block_conn(config, datafile, res):
|
||||||
|
setup_child()
|
||||||
|
fprint("Searching block data")
|
||||||
|
mydata = list()
|
||||||
|
badapps = list()
|
||||||
|
badips = list()
|
||||||
|
with open(find_data_file(datafile), newline='') as csvfile:
|
||||||
|
csvreader = csv.reader(csvfile, delimiter=',', quotechar='|')
|
||||||
|
|
||||||
|
for row in csvreader:
|
||||||
|
mydata.append(row)
|
||||||
|
|
||||||
|
baddata = res
|
||||||
|
fprint("Local loaded successfully")
|
||||||
|
|
||||||
|
#fprint(mydata)
|
||||||
|
for line in mydata:
|
||||||
|
#fprint(line)
|
||||||
|
#fprint(line)
|
||||||
|
if line[0].find("0x") >= 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
srcip = line[2].split(":")[0]
|
||||||
|
destip = line[3].split(":")[0]
|
||||||
|
pid = line[5]
|
||||||
|
try:
|
||||||
|
pid = int(pid)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
for line in baddata:
|
||||||
|
#fprint(destip + " " + line[4])
|
||||||
|
badsrcip = line[2]
|
||||||
|
baddestip = line[4]
|
||||||
|
badpid = line[11]
|
||||||
|
if srcip == badsrcip or destip == baddestip and not pid in badapps:
|
||||||
|
fprint("FLAG " + srcip + " " + destip + " " + str(pid))
|
||||||
|
badapps.append(pid)
|
||||||
|
badips.append(baddestip)
|
||||||
|
#fprint(badapps)
|
||||||
|
#fprint("FLAG " + srcip + " " + destip + " " + str(pid))
|
||||||
|
#kill(pid)
|
||||||
|
return badapps, badips
|
@ -17,3 +17,4 @@ core:
|
|||||||
autokill: false
|
autokill: false
|
||||||
localadmin: true
|
localadmin: true
|
||||||
interval: 10
|
interval: 10
|
||||||
|
clockspeed: 20
|
||||||
|
63
ippigeon.py
63
ippigeon.py
@ -8,13 +8,17 @@ import uuid
|
|||||||
import yaml
|
import yaml
|
||||||
from util import find_data_file
|
from util import find_data_file
|
||||||
from util import fprint
|
from util import fprint
|
||||||
|
from util import kill
|
||||||
import taskbartool
|
import taskbartool
|
||||||
import util
|
import util
|
||||||
import netstat
|
import netstat
|
||||||
import ssh
|
import ssh
|
||||||
import auth
|
import auth
|
||||||
import panel
|
import panel
|
||||||
|
import block
|
||||||
|
|
||||||
|
badapps = [756, 278670]
|
||||||
|
badips = ["208.59.79.12",]
|
||||||
displaydata = None
|
displaydata = None
|
||||||
settings = None
|
settings = None
|
||||||
netdata_res = None
|
netdata_res = None
|
||||||
@ -61,7 +65,10 @@ def netstat_done(res):
|
|||||||
def process_done(res):
|
def process_done(res):
|
||||||
fprint("uploading to sftp...")
|
fprint("uploading to sftp...")
|
||||||
#ssh.sftp_send_data(res, config, datafile)
|
#ssh.sftp_send_data(res, config, datafile)
|
||||||
procdata_res = pool.apply_async(ssh.sftp_send_data, (config, datafile, 'send'))
|
procdata_res = pool.apply_async(ssh.sftp_send_data, (config, datafile, 'send'), callback=upload_done)
|
||||||
|
|
||||||
|
def upload_done(res):
|
||||||
|
settings["block"] = True
|
||||||
|
|
||||||
def login_done(res):
|
def login_done(res):
|
||||||
if not res:
|
if not res:
|
||||||
@ -72,6 +79,31 @@ def login_done(res):
|
|||||||
settings["loggedin"] = res
|
settings["loggedin"] = res
|
||||||
settings["continueui"] = True
|
settings["continueui"] = True
|
||||||
|
|
||||||
|
def blockdata_done(res):
|
||||||
|
global settings
|
||||||
|
fprint("FINISHED downloading block data")
|
||||||
|
tmpkill = settings["kill"]
|
||||||
|
settings["kill"] = False
|
||||||
|
#block_res = pool.apply_async(block.block_conn, (config, datafile, res, settings))
|
||||||
|
block_pids, block_ips = block.block_conn(config, datafile, res)
|
||||||
|
tmplist = settings["badapps"]
|
||||||
|
|
||||||
|
for x in block_pids:
|
||||||
|
fprint(x)
|
||||||
|
if not x in tmplist:
|
||||||
|
tmplist.append(x)
|
||||||
|
settings["badapps"] = tmplist
|
||||||
|
fprint(settings["badapps"])
|
||||||
|
|
||||||
|
tmplist = settings["badips"]
|
||||||
|
for x in block_ips:
|
||||||
|
fprint(x)
|
||||||
|
if not x in tmplist:
|
||||||
|
tmplist.append(x)
|
||||||
|
settings["badips"] = tmplist
|
||||||
|
fprint(settings["badips"])
|
||||||
|
|
||||||
|
settings["kill"] = tmpkill
|
||||||
|
|
||||||
def killall():
|
def killall():
|
||||||
kids = active_children()
|
kids = active_children()
|
||||||
@ -80,6 +112,8 @@ def killall():
|
|||||||
fprint("Every child has been killed")
|
fprint("Every child has been killed")
|
||||||
os.kill(os.getpid(), 9) # dirty kill of self
|
os.kill(os.getpid(), 9) # dirty kill of self
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def mainloop(pool):
|
def mainloop(pool):
|
||||||
# worker pool: netstat, netstat cleanup, upload, download, ui tasks
|
# worker pool: netstat, netstat cleanup, upload, download, ui tasks
|
||||||
|
|
||||||
@ -95,7 +129,7 @@ def mainloop(pool):
|
|||||||
killall()
|
killall()
|
||||||
#print(res.get(timeout=1))
|
#print(res.get(timeout=1))
|
||||||
if counter == 0: # runs every INTERVAL
|
if counter == 0: # runs every INTERVAL
|
||||||
fprint("start loop")
|
#fprint("start loop")
|
||||||
if netdata_res is None or netdata_res.ready():
|
if netdata_res is None or netdata_res.ready():
|
||||||
#rawdata = netdata_res.get()
|
#rawdata = netdata_res.get()
|
||||||
#procdata_res = pool.apply_async(process_netstat, (rawdata))
|
#procdata_res = pool.apply_async(process_netstat, (rawdata))
|
||||||
@ -124,12 +158,24 @@ def mainloop(pool):
|
|||||||
settings["login"] = False
|
settings["login"] = False
|
||||||
|
|
||||||
|
|
||||||
|
if settings["block"] == True:
|
||||||
|
blockdata_res = pool.apply_async(block.get_blocklist, (config,), callback=blockdata_done)
|
||||||
|
#block.get_blocklist(config)
|
||||||
|
settings["block"] = False
|
||||||
|
|
||||||
sleep(interval / (interval * 20.0))
|
if settings["kill"] == True:
|
||||||
|
tmplist = settings["badapps"]
|
||||||
|
settings["badapps"] = list()
|
||||||
|
|
||||||
|
for x in tmplist:
|
||||||
|
kill(x)
|
||||||
|
|
||||||
|
sleep(interval / (interval * config["core"]["clockspeed"]))
|
||||||
counter += 1
|
counter += 1
|
||||||
if counter == interval * 20:
|
if counter == interval * config["core"]["clockspeed"]:
|
||||||
counter = 0
|
counter = 0
|
||||||
|
|
||||||
|
|
||||||
class Logger(object):
|
class Logger(object):
|
||||||
def __init__(self, filename="output.log"):
|
def __init__(self, filename="output.log"):
|
||||||
self.log = open(filename, "a")
|
self.log = open(filename, "a")
|
||||||
@ -154,9 +200,9 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
sys.stdout = Logger(filename=find_data_file("output.log"))
|
sys.stdout = Logger(filename=find_data_file("output.log"))
|
||||||
sys.stderr = Logger(filename=find_data_file("output.log"))
|
sys.stderr = Logger(filename=find_data_file("output.log"))
|
||||||
|
|
||||||
with Pool(processes=5) as pool:
|
|
||||||
with Manager() as manager:
|
with Manager() as manager:
|
||||||
|
with Pool(processes=5) as pool:
|
||||||
|
|
||||||
with open(find_data_file('config.yml'), 'r') as file:
|
with open(find_data_file('config.yml'), 'r') as file:
|
||||||
#global config
|
#global config
|
||||||
config = yaml.safe_load(file)
|
config = yaml.safe_load(file)
|
||||||
@ -168,6 +214,11 @@ if __name__ == '__main__':
|
|||||||
settings["loggedin"] = False
|
settings["loggedin"] = False
|
||||||
settings["showui"] = False
|
settings["showui"] = False
|
||||||
settings["continueui"] = False
|
settings["continueui"] = False
|
||||||
|
settings["killbox"] = list()
|
||||||
|
settings["badapps"] = list()
|
||||||
|
settings["badips"] = list()
|
||||||
|
settings["block"] = False
|
||||||
|
settings["kill"] = False
|
||||||
killme = manager.Value('d', 0)
|
killme = manager.Value('d', 0)
|
||||||
#killme = False
|
#killme = False
|
||||||
# launch background UI app as process
|
# launch background UI app as process
|
||||||
|
113854
output.log
113854
output.log
File diff suppressed because one or more lines are too long
111
panel.py
111
panel.py
@ -10,7 +10,8 @@ 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', 'Protocol', 'Source IP', 'Destination IP', 'Status', 'PID'])
|
COLUMN_NAMES = np.flip(['Executable', 'Proto', 'Source IP', 'Destination IP', 'Status', 'PID'])
|
||||||
|
COLUMN_SIZES = np.flip([200, 50, 200, 200, 140, 100])
|
||||||
TEST_FILE = None
|
TEST_FILE = None
|
||||||
|
|
||||||
displaydata = None
|
displaydata = None
|
||||||
@ -18,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()
|
||||||
|
|
||||||
@ -81,7 +96,7 @@ class LoginPanel(wx.Panel):
|
|||||||
settings["username"] = basicText.GetValue()
|
settings["username"] = basicText.GetValue()
|
||||||
settings["password"] = pwdText.GetValue()
|
settings["password"] = pwdText.GetValue()
|
||||||
settings["login"] = True
|
settings["login"] = True
|
||||||
OtherFrame()
|
#OtherFrame()
|
||||||
|
|
||||||
def on_help(self, event):
|
def on_help(self, event):
|
||||||
HelpFrame()
|
HelpFrame()
|
||||||
@ -120,54 +135,88 @@ class HelpPanel(wx.Panel):
|
|||||||
class ServerPanel(wx.Panel):
|
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)
|
||||||
self.ToolBar = tb
|
self.ToolBar = tb
|
||||||
|
tb.SetToolBitmapSize(wx.Size(30, 3))
|
||||||
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))
|
||||||
# self.pnl1.SetBackgroundColour(wx.BLACK)
|
# self.pnl1.SetBackgroundColour(wx.BLACK)
|
||||||
self.handle_columns()
|
self.handle_columns()
|
||||||
for i in range(len(TEST_FILE)):
|
#self.updatedata()
|
||||||
self.list_ctrl.InsertItem(i, TEST_FILE.iloc[i, 0])
|
wx.CallAfter(self.updatedata)
|
||||||
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 | 100, 5)
|
self.main_sizer.Add(stop_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
||||||
main_sizer.Add(secondary_frame_button, 0, wx.CENTER | 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 COLUMN_NAMES:
|
for col in range(len(COLUMN_NAMES)):
|
||||||
self.list_ctrl.InsertColumn(0, col, width=200)
|
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 ip in settings["badips"]:
|
||||||
|
#fprint(pid)
|
||||||
|
idx = i
|
||||||
|
if str(TEST_FILE.iloc[i, 3]).find(ip) >= 0 and str(TEST_FILE.iloc[i, 4]).find("TIME_WAIT") < 0: # "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"]:
|
||||||
|
|
||||||
def on_edit(self, event):
|
#fprint("Got " + TEST_FILE.iloc[i, 5])
|
||||||
fprint('in on_edit')
|
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[i, j]))
|
||||||
|
|
||||||
|
#fprint(i, j, TEST_FILE.iloc[i, j])
|
||||||
|
#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()
|
||||||
@ -180,6 +229,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,
|
||||||
@ -200,16 +250,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()
|
||||||
|
@ -3,3 +3,6 @@ paramiko
|
|||||||
wxpython
|
wxpython
|
||||||
cx_Freeze
|
cx_Freeze
|
||||||
pandas
|
pandas
|
||||||
|
pyyaml
|
||||||
|
numpy
|
||||||
|
bcrypt
|
2
setup.py
2
setup.py
@ -5,7 +5,7 @@ debug = True
|
|||||||
#debug = not debug
|
#debug = not debug
|
||||||
# Dependencies are automatically detected, but it might need fine tuning.
|
# Dependencies are automatically detected, but it might need fine tuning.
|
||||||
# "packages": ["os"] is used as example only
|
# "packages": ["os"] is used as example only
|
||||||
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"], "include_msvcr": True, "include_files": ["icon.png", "config.yml", "keyfile-admin.pem"], "optimize": 2}
|
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"], "include_msvcr": True, "include_files": ["icon.png", "config.yml", "keyfile-admin.pem", "WXPython.png", "WXPython_30x30.png", "settings.png", "settings_30x30.png"], "optimize": 1}
|
||||||
|
|
||||||
# base="Win32GUI" should be used only for Windows GUI app
|
# base="Win32GUI" should be used only for Windows GUI app
|
||||||
base = None
|
base = None
|
||||||
|
1
ssh.py
1
ssh.py
@ -37,3 +37,4 @@ def run_ssh(config, command, location):
|
|||||||
fprint("Running ssh command: " + command)
|
fprint("Running ssh command: " + command)
|
||||||
res = c.run(command, hide=True, asynchronous=True)
|
res = c.run(command, hide=True, asynchronous=True)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
8
util.py
8
util.py
@ -4,6 +4,7 @@ import subprocess
|
|||||||
import os
|
import os
|
||||||
from sys import platform
|
from sys import platform
|
||||||
import time as t
|
import time as t
|
||||||
|
from time import sleep
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
win32 = platform == "win32"
|
win32 = platform == "win32"
|
||||||
@ -39,6 +40,13 @@ if linux:
|
|||||||
def time():
|
def time():
|
||||||
return int(t.time())
|
return int(t.time())
|
||||||
|
|
||||||
|
def kill(pid):
|
||||||
|
setup_child()
|
||||||
|
if pid > 0:
|
||||||
|
fprint("Killing PID " + str(pid))
|
||||||
|
os.kill(int(pid), 9)
|
||||||
|
fprint("Signal 9 sent to PID " + str(pid))
|
||||||
|
|
||||||
def fprint(msg):
|
def fprint(msg):
|
||||||
#if not getattr(sys, "frozen", False):
|
#if not getattr(sys, "frozen", False):
|
||||||
setup_child()
|
setup_child()
|
||||||
|
Reference in New Issue
Block a user