Add red highlighting, better align buttons
This commit is contained in:
parent
0b97b2287a
commit
bbb92d1fdb
37
auth.py
37
auth.py
@ -14,22 +14,25 @@ def login(config, user, password, sysid):
|
|||||||
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"
|
||||||
output = ssh.check_for_file(config, filename, 'receivelogin')
|
count = 0
|
||||||
if output == False:
|
while count < 20:
|
||||||
filename = sysid + "fail.txt"
|
output = ssh.check_for_file(config, filename, 'receivelogin')
|
||||||
if ssh.check_for_file(config, filename, 'receivelogin') == False:
|
if output == False:
|
||||||
# ALERT: DIRTY HACK: SECURITY VULNERABILITY
|
filename = sysid + "fail.txt"
|
||||||
#return True
|
if ssh.check_for_file(config, filename, 'receivelogin') == False:
|
||||||
raise ValueError("Unable to determine login status")
|
# try again
|
||||||
|
count += 1
|
||||||
|
sleep(0.1)
|
||||||
|
#raise ValueError("Unable to determine login status")
|
||||||
|
else:
|
||||||
|
return False
|
||||||
else:
|
else:
|
||||||
return False
|
fprint(type(output))
|
||||||
else:
|
if str(output).find("admin") >= 0 or str(output).find("Admin") >= 0:
|
||||||
fprint(type(output))
|
fprint("Authorized as admin!")
|
||||||
if str(output).find("admin") >= 0 or str(output).find("Admin") >= 0:
|
return True
|
||||||
fprint("Authorized as admin!")
|
else:
|
||||||
return True
|
fprint("Not admin")
|
||||||
else:
|
return False
|
||||||
fprint("Not admin")
|
return False
|
||||||
return False
|
|
@ -17,3 +17,4 @@ core:
|
|||||||
autokill: false
|
autokill: false
|
||||||
localadmin: true
|
localadmin: true
|
||||||
interval: 10
|
interval: 10
|
||||||
|
clockspeed: 20
|
||||||
|
21
ippigeon.py
21
ippigeon.py
@ -15,6 +15,7 @@ import ssh
|
|||||||
import auth
|
import auth
|
||||||
import panel
|
import panel
|
||||||
|
|
||||||
|
badapps = [756, 278670]
|
||||||
displaydata = None
|
displaydata = None
|
||||||
settings = None
|
settings = None
|
||||||
netdata_res = None
|
netdata_res = None
|
||||||
@ -80,6 +81,12 @@ 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 kill(pid):
|
||||||
|
setup_child()
|
||||||
|
fprint("Killing PID " + str(pid))
|
||||||
|
#os.kill(pid, 9)
|
||||||
|
fprint("Signal 9 sent to PID " + str(pid))
|
||||||
|
|
||||||
def mainloop(pool):
|
def mainloop(pool):
|
||||||
# worker pool: netstat, netstat cleanup, upload, download, ui tasks
|
# worker pool: netstat, netstat cleanup, upload, download, ui tasks
|
||||||
|
|
||||||
@ -123,13 +130,19 @@ def mainloop(pool):
|
|||||||
#fprint(auth.login(config, settings["username"], settings["password"], sysid))
|
#fprint(auth.login(config, settings["username"], settings["password"], sysid))
|
||||||
settings["login"] = False
|
settings["login"] = False
|
||||||
|
|
||||||
|
#fprint(settings["killbox"])
|
||||||
|
if len(settings["killbox"]) > 0:
|
||||||
|
fprint("Kill opportunity!")
|
||||||
|
for proc in settings["killbox"]:
|
||||||
|
pool.apply_async(kill, (proc,))
|
||||||
|
settings["killbox"].remove(proc)
|
||||||
|
|
||||||
|
sleep(interval / (interval * config["core"]["clockspeed"]))
|
||||||
sleep(interval / (interval * 20.0))
|
|
||||||
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")
|
||||||
@ -168,6 +181,8 @@ 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"] = badapps
|
||||||
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
|
||||||
|
324921
output.log
324921
output.log
File diff suppressed because it is too large
Load Diff
32
panel.py
32
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([150, 50, 200, 200, 110, 65])
|
||||||
TEST_FILE = None
|
TEST_FILE = None
|
||||||
|
|
||||||
displaydata = None
|
displaydata = None
|
||||||
@ -81,7 +82,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,7 +121,7 @@ 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))
|
||||||
|
|
||||||
main_sizer = wx.BoxSizer(wx.VERTICAL)
|
main_sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
secondary_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
secondary_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
@ -131,17 +132,30 @@ class ServerPanel(wx.Panel):
|
|||||||
)
|
)
|
||||||
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)
|
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()
|
||||||
|
global settings
|
||||||
for i in range(len(TEST_FILE)):
|
for i in range(len(TEST_FILE)):
|
||||||
self.list_ctrl.InsertItem(i, TEST_FILE.iloc[i, 0])
|
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):
|
for j in range(1, 6):
|
||||||
self.list_ctrl.SetItem(i, j, str(TEST_FILE.iloc[i, j]))
|
self.list_ctrl.SetItem(i, j, str(TEST_FILE.iloc[i, j]))
|
||||||
#fprint(i, j, 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)
|
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')
|
||||||
@ -156,13 +170,13 @@ class ServerPanel(wx.Panel):
|
|||||||
# 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_edit)
|
||||||
main_sizer.Add(start_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
main_sizer.Add(start_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
||||||
main_sizer.Add(stop_button, 0, wx.CENTER | 100, 5)
|
main_sizer.Add(stop_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
||||||
main_sizer.Add(secondary_frame_button, 0, wx.CENTER | 100, 5)
|
main_sizer.Add(secondary_frame_button, 0, wx.CENTER | wx.ALL | 100, 5)
|
||||||
self.SetSizer(main_sizer)
|
self.SetSizer(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])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user