From 23a3f27b574e67528e41ad7eac9e04b18d78edf6 Mon Sep 17 00:00:00 2001 From: mkang18 Date: Wed, 2 Nov 2022 13:05:39 -0500 Subject: [PATCH] mac compatibility --- .DS_Store | Bin 0 -> 6148 bytes .vscode/settings.json | 3 ++ config.yml | 2 +- ippigeon.py | 6 +-- netstat.py | 34 +++++++------ taskbartool.py | 2 +- util.py | 4 +- wizard.py | 34 +++++++++++++ wizardTutorial.py | 111 ++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 174 insertions(+), 22 deletions(-) create mode 100644 .DS_Store create mode 100644 .vscode/settings.json create mode 100644 wizard.py create mode 100644 wizardTutorial.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f97ceab41e17037951916ba10782b621eedeaf59 GIT binary patch literal 6148 zcmeHKJ5Iwu5S>X}#z-fs`AVU`~(&07+1S6w5B402<$bo|c-9BXA&&z?+#> z@X8oEgrXU1_O0i$yMF$Rmxy?Fx0(`7h-d&6>E%J!)G=;Rey#BL=xDwAejvxi8E^)if&E|rHCtpb zHuTmRa0Z-#9Ru=xNTGsRz}iqh9cXk508C(3L0|R~l9L9^0@jA`K-f}&mdas^!Qoen zEgk+W#Mg$FPOLLyoG>$o9SZC0u%{YMoEduS3^)TZ1ARN4Nc}(W-v7r*e&!4~1AD~) zC;2>|;gUjaZC#wy+7x;T6_L2waF>FPmSV(8DL#a%z@AD6m<6m2VS)IMfYRWNGw`Pj Fd;+u?OF#es literal 0 HcmV?d00001 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..615aafb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "/usr/bin/python3" +} \ No newline at end of file diff --git a/config.yml b/config.yml index 62fb355..2799474 100644 --- a/config.yml +++ b/config.yml @@ -2,7 +2,7 @@ core: autostart: false clockspeed: 20 interval: 10 - level: 3 + level: 2 localadmin: true sftp: filepath: diff --git a/ippigeon.py b/ippigeon.py index 1314a56..81dc403 100644 --- a/ippigeon.py +++ b/ippigeon.py @@ -48,7 +48,7 @@ if win32: _, username = res.strip().rsplit("\n", 1) userid, sysdom = username.rsplit("\\", 1) -if linux: +if linux or macos: sysid = hex(uuid.getnode()) #fprint(sysid) datafile += sysid @@ -60,8 +60,8 @@ if linux: def netstat_done(res): fprint("netstat done, processing") - procdata_res = pool.apply_async(netstat.process, (res,), callback=process_done) - #netstat.process(res) + #procdata_res = pool.apply_async(netstat.process, (res,), callback=process_done) + netstat.process(res) def process_done(res): if settings["running"] == True: diff --git a/netstat.py b/netstat.py index b13220e..5bf5c5e 100644 --- a/netstat.py +++ b/netstat.py @@ -4,6 +4,7 @@ from util import fprint from util import run_cmd from util import win32 from util import linux +from util import macos import util import time import csv @@ -70,8 +71,10 @@ def process(data): writer.writerows(output2) fprint("done creating csv") - if linux: + if linux or macos: output = data.stdout.decode().split('\n') # split stdout into lines + #output = data.stdout.decode().split(',') + #fprint("output data: " + str(output)) output = [i for i in output if i] if output[0].find("Not all processes could be identified") >= 0: fprint("Not enough permissions") @@ -81,27 +84,24 @@ def process(data): for line in output: string_split = line.split(" ") string_split = [i for i in string_split if i] - #fprint("Input: " + str(string_split)) + fprint("Input: " + str(string_split)) + if string_split[1].find("Multipath") >= 0: + break if string_split[0].find("Active") >= 0 or string_split[0].find("Proto") >= 0: continue - if len(string_split) == 6: # no connection status - #fprint(string_split) + if len(string_split) == 10: # no connection status + fprint(string_split) string_split.append(string_split[-1]) - string_split[-2] = "UNKNOWN" - #fprint(string_split) + string_split[-7] = "UNKNOWN" + string_split[-4] = string_split[-5] + fprint(string_split) - procname = string_split[6] - if procname != "-": - string_split2 = procname.split("/") - procname = string_split2[1] - pid = string_split2[0] - else: - pid = "Unknown" + - output2.append([procname, string_split[0], string_split[3], string_split[4], string_split[5], pid]) - #fprint(output2) + output2.append(["", string_split[0], string_split[3], string_split[4], string_split[5], string_split[8]]) + fprint("FINAL CSV: " + str(output2)) with open(find_data_file(util.datafile), "w", newline="") as f: writer = csv.writer(f) @@ -123,3 +123,7 @@ def start(): fprint("data acquired") return data + if macos: + data = run_cmd("netstat -anv") + fprint("data acquired") + return data diff --git a/taskbartool.py b/taskbartool.py index 54b7278..9ff5daf 100644 --- a/taskbartool.py +++ b/taskbartool.py @@ -32,7 +32,7 @@ class TaskBarIcon(wx.adv.TaskBarIcon): def CreatePopupMenu(self): menu = wx.Menu() create_menu_item(menu, 'Control Panel', self.on_open) - #create_menu_item(menu, 'Login test', self.on_login) + create_menu_item(menu, 'Login test', self.on_login) menu.AppendSeparator() create_menu_item(menu, 'Exit', self.on_exit) return menu diff --git a/util.py b/util.py index d5a992b..e6ac9db 100644 --- a/util.py +++ b/util.py @@ -26,7 +26,7 @@ if win32: _, username = res.strip().rsplit("\n", 1) userid, sysdom = username.rsplit("\\", 1) -if linux: +if linux or macos: sysid = hex(uuid.getnode()) #fprint(sysid) datafile += sysid @@ -91,7 +91,7 @@ def run_cmd(cmd): fprint("ran PS command successfully") #completed = subprocess.run(["powershell", "-WindowStyle", "hidden", "-Command", cmd], capture_output=True, startupinfo=startupinfo) return completed - if linux: + if linux or macos: fprint("running sh command: " + cmd) completed = subprocess.run(["sh", "-c", cmd], capture_output=True) fprint("ran sh command successfully") diff --git a/wizard.py b/wizard.py new file mode 100644 index 0000000..186e536 --- /dev/null +++ b/wizard.py @@ -0,0 +1,34 @@ +import wx +from wx.adv import Wizard, WizardPageSimple + +class TitlePage(WizardPageSimple): + + def __init__(self, parent, title): + WizardPageSimple.__init__(self, parent) + + sizer = wx.BoxSizer(wx.VERTICAL) + self.SetSizer(sizer) + + title = wx.StaticText(self, wx.ID_ANY, title) + title.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD)) + sizer.Add(title, 0, wx.ALIGN_CENTER|wx.ALL, 5) + sizer.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.EXPAND|wx.ALL, 5) + + +def main(): + wizard = Wizard(None, wx.ID_ANY, "Simple Wizard") + page1 = TitlePage(wizard, "Page 1") + page2 = TitlePage(wizard, "Page 2") + page3 = TitlePage(wizard, "Page 3") + + WizardPageSimple.Chain(page1, page2) + WizardPageSimple.Chain(page2, page3) + wizard.FitToPage(page1) + + wizard.RunWizard(page1) + wizard.Destroy() + +if __name__ == "__main__": + app = wx.App() + main() + app.MainLoop() \ No newline at end of file diff --git a/wizardTutorial.py b/wizardTutorial.py new file mode 100644 index 0000000..9b44fc8 --- /dev/null +++ b/wizardTutorial.py @@ -0,0 +1,111 @@ +import wx +######################################################################## +class WizardPage(wx.Panel): + """""" + #---------------------------------------------------------------------- + def __init__(self, parent, title=None): + """Constructor""" + wx.Panel.__init__(self, parent) + + sizer = wx.BoxSizer(wx.VERTICAL) + self.SetSizer(sizer) + + if title: + title = wx.StaticText(self, -1, title) + title.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD)) + sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5) + sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.ALL, 5) + + +######################################################################## +class WizardPanel(wx.Panel): + """""" + #---------------------------------------------------------------------- + def __init__(self, parent): + """Constructor""" + wx.Panel.__init__(self, parent=parent) + self.pages = [] + self.page_num = 0 + + self.mainSizer = wx.BoxSizer(wx.VERTICAL) + self.panelSizer = wx.BoxSizer(wx.VERTICAL) + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + + # add prev/next buttons + self.prevBtn = wx.Button(self, label="Previous") + self.prevBtn.Bind(wx.EVT_BUTTON, self.onPrev) + btnSizer.Add(self.prevBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5) + + self.nextBtn = wx.Button(self, label="Next") + self.nextBtn.Bind(wx.EVT_BUTTON, self.onNext) + btnSizer.Add(self.nextBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5) + + # finish layout + self.mainSizer.Add(self.panelSizer, 1, wx.EXPAND) + self.mainSizer.Add(btnSizer, 0, wx.ALIGN_RIGHT) + self.SetSizer(self.mainSizer) + + + #---------------------------------------------------------------------- + def addPage(self, title=None): + """""" + panel = WizardPage(self, title) + self.panelSizer.Add(panel, 2, wx.EXPAND) + self.pages.append(panel) + if len(self.pages) > 1: + # hide all panels after the first one + panel.Hide() + self.Layout() + + #---------------------------------------------------------------------- + def onNext(self, event): + """""" + pageCount = len(self.pages) + if pageCount-1 != self.page_num: + self.pages[self.page_num].Hide() + self.page_num += 1 + self.pages[self.page_num].Show() + self.panelSizer.Layout() + else: + print("End of pages!") + + if self.nextBtn.GetLabel() == "Finish": + # close the app + self.GetParent().Close() + + if pageCount == self.page_num+1: + # change label + self.nextBtn.SetLabel("Finish") + + #---------------------------------------------------------------------- + def onPrev(self, event): + """""" + pageCount = len(self.pages) + if self.page_num-1 != -1: + self.pages[self.page_num].Hide() + self.page_num -= 1 + self.pages[self.page_num].Show() + self.panelSizer.Layout() + else: + print("You're already on the first page!") + + +######################################################################## +class MainFrame(wx.Frame): + """""" + #---------------------------------------------------------------------- + def __init__(self): + """Constructor""" + wx.Frame.__init__(self, None, title="Generic Wizard", size=(800,600)) + + self.panel = WizardPanel(self) + self.panel.addPage("Page 1") + self.panel.addPage("Page 2") + self.panel.addPage("Page 3") + + self.Show() + +if __name__ == "__main__": + app = wx.App() + frame = MainFrame() + app.MainLoop() \ No newline at end of file