Add red highlighting, better align buttons
This commit is contained in:
		
							
								
								
									
										37
									
								
								auth.py
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								auth.py
									
									
									
									
									
								
							@@ -14,22 +14,25 @@ def login(config, user, password, sysid):
 | 
			
		||||
    ssh.sftp_send_data(config, filename, 'sendlogin')
 | 
			
		||||
    command = "python3 login_service.py " + sysid
 | 
			
		||||
    ssh.run_ssh(config, command, 'scripts')
 | 
			
		||||
    sleep(1)
 | 
			
		||||
    filename = sysid + "success.txt"
 | 
			
		||||
    output = ssh.check_for_file(config, filename, 'receivelogin')
 | 
			
		||||
    if output == False:
 | 
			
		||||
        filename = sysid + "fail.txt"
 | 
			
		||||
        if ssh.check_for_file(config, filename, 'receivelogin') == False:
 | 
			
		||||
            # ALERT: DIRTY HACK: SECURITY VULNERABILITY
 | 
			
		||||
            #return True
 | 
			
		||||
            raise ValueError("Unable to determine login status")
 | 
			
		||||
    count = 0
 | 
			
		||||
    while count < 20:
 | 
			
		||||
        output = ssh.check_for_file(config, filename, 'receivelogin')
 | 
			
		||||
        if output == False:
 | 
			
		||||
            filename = sysid + "fail.txt"
 | 
			
		||||
            if ssh.check_for_file(config, filename, 'receivelogin') == False:
 | 
			
		||||
                # try again
 | 
			
		||||
                count += 1
 | 
			
		||||
                sleep(0.1)
 | 
			
		||||
                #raise ValueError("Unable to determine login status")
 | 
			
		||||
            else:
 | 
			
		||||
                return False
 | 
			
		||||
        else:
 | 
			
		||||
            return False
 | 
			
		||||
    else:
 | 
			
		||||
        fprint(type(output))
 | 
			
		||||
        if str(output).find("admin") >= 0 or str(output).find("Admin") >= 0:
 | 
			
		||||
            fprint("Authorized as admin!")
 | 
			
		||||
            return True
 | 
			
		||||
        else:
 | 
			
		||||
            fprint("Not admin")
 | 
			
		||||
            return False
 | 
			
		||||
            fprint(type(output))
 | 
			
		||||
            if str(output).find("admin") >= 0 or str(output).find("Admin") >= 0:
 | 
			
		||||
                fprint("Authorized as admin!")
 | 
			
		||||
                return True
 | 
			
		||||
            else:
 | 
			
		||||
                fprint("Not admin")
 | 
			
		||||
                return False
 | 
			
		||||
    return False
 | 
			
		||||
@@ -17,3 +17,4 @@ core:
 | 
			
		||||
  autokill: false
 | 
			
		||||
  localadmin: true
 | 
			
		||||
  interval: 10
 | 
			
		||||
  clockspeed: 20
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								ippigeon.py
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								ippigeon.py
									
									
									
									
									
								
							@@ -15,6 +15,7 @@ import ssh
 | 
			
		||||
import auth
 | 
			
		||||
import panel
 | 
			
		||||
 | 
			
		||||
badapps = [756, 278670]
 | 
			
		||||
displaydata = None
 | 
			
		||||
settings = None
 | 
			
		||||
netdata_res = None
 | 
			
		||||
@@ -80,6 +81,12 @@ def killall():
 | 
			
		||||
    fprint("Every child has been killed")
 | 
			
		||||
    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):
 | 
			
		||||
    # 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))
 | 
			
		||||
        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 * 20.0))
 | 
			
		||||
    sleep(interval / (interval * config["core"]["clockspeed"]))
 | 
			
		||||
    counter += 1
 | 
			
		||||
    if counter == interval * 20:
 | 
			
		||||
    if counter == interval * config["core"]["clockspeed"]:
 | 
			
		||||
        counter = 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Logger(object):
 | 
			
		||||
    def __init__(self, filename="output.log"):
 | 
			
		||||
        self.log = open(filename, "a")
 | 
			
		||||
@@ -168,6 +181,8 @@ if __name__ == '__main__':
 | 
			
		||||
            settings["loggedin"] = False
 | 
			
		||||
            settings["showui"] = False
 | 
			
		||||
            settings["continueui"] = False
 | 
			
		||||
            settings["killbox"] = list()
 | 
			
		||||
            settings["badapps"] = badapps
 | 
			
		||||
            killme = manager.Value('d', 0)
 | 
			
		||||
            #killme = False
 | 
			
		||||
            # 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'
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
displaydata = None
 | 
			
		||||
@@ -81,7 +82,7 @@ class LoginPanel(wx.Panel):
 | 
			
		||||
        settings["username"] = basicText.GetValue()
 | 
			
		||||
        settings["password"] = pwdText.GetValue()
 | 
			
		||||
        settings["login"] = True
 | 
			
		||||
        OtherFrame()
 | 
			
		||||
        #OtherFrame()
 | 
			
		||||
 | 
			
		||||
    def on_help(self, event):
 | 
			
		||||
        HelpFrame()
 | 
			
		||||
@@ -120,7 +121,7 @@ class HelpPanel(wx.Panel):
 | 
			
		||||
class ServerPanel(wx.Panel):
 | 
			
		||||
    def __init__(self, parent):
 | 
			
		||||
        super().__init__(parent, size=(500, 500))
 | 
			
		||||
        self.SetBackgroundColour((44, 51, 51))
 | 
			
		||||
        #self.SetBackgroundColour((44, 51, 51))
 | 
			
		||||
        
 | 
			
		||||
        main_sizer = wx.BoxSizer(wx.VERTICAL)
 | 
			
		||||
        secondary_sizer = wx.BoxSizer(wx.HORIZONTAL)
 | 
			
		||||
@@ -131,17 +132,30 @@ class ServerPanel(wx.Panel):
 | 
			
		||||
        )
 | 
			
		||||
        tb = wx.ToolBar( self, -1)
 | 
			
		||||
        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("settings_30x30.png"))) 
 | 
			
		||||
        tb.Realize() 
 | 
			
		||||
        main_sizer.Add(tb)
 | 
			
		||||
        #main_sizer.SetBackgroundColour((44, 51, 51))
 | 
			
		||||
        # self.pnl1.SetBackgroundColour(wx.BLACK)
 | 
			
		||||
        self.handle_columns()
 | 
			
		||||
        global settings
 | 
			
		||||
        for i in range(len(TEST_FILE)):
 | 
			
		||||
            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])
 | 
			
		||||
                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)
 | 
			
		||||
        start_button = wx.Button(self, label='Start')
 | 
			
		||||
@@ -156,13 +170,13 @@ class ServerPanel(wx.Panel):
 | 
			
		||||
        # wx.BORDER(stop_button, wx.BORDER_NONE)
 | 
			
		||||
        stop_button.Bind(wx.EVT_BUTTON, self.on_edit)
 | 
			
		||||
        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(secondary_frame_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 | wx.ALL | 100, 5)
 | 
			
		||||
        self.SetSizer(main_sizer)
 | 
			
		||||
 | 
			
		||||
    def handle_columns(self):
 | 
			
		||||
        for col in COLUMN_NAMES:
 | 
			
		||||
            self.list_ctrl.InsertColumn(0, col, width=200)
 | 
			
		||||
        for col in range(len(COLUMN_NAMES)):
 | 
			
		||||
            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
 | 
			
		||||
# Dependencies are automatically detected, but it might need fine tuning.
 | 
			
		||||
# "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 = None
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user