From b03b3119c768435c37d87030a7310ecde891ea03 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Sat, 13 Jan 2024 19:03:25 +0100 Subject: [PATCH] Version 2.6.8 --- README.md | 2 +- pwnagotchi/_version.py | 2 +- pwnagotchi/plugins/default/fix_services.py | 44 +----- pwnagotchi/utils.py | 150 ++++++++++++++++++--- 4 files changed, 137 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 49891f9a..37f937e6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ It seems the Pi 5 is unable to run in monitor mode, will keep you updated on thi If you are using an older 32-bit version Raspberry Pi, ZeroWH, use this [fork](https://github.com/jayofelony/pwnagotchi-torch/releases/tag/v2.6.4) and make sure you download the `armhf` version. --- -Download latest image file [here](https://github.com/jayofelony/pwnagotchi-bookworm/releases/tag/v2.6.2), and let it auto-update from here on out. +Download latest image file [here](https://github.com/jayofelony/pwnagotchi-bookworm/releases/tag/v2.6.7), and let it auto-update from here on out. **Use RPi imager to flash, please don't flash a new user as this will mess with logs created.** diff --git a/pwnagotchi/_version.py b/pwnagotchi/_version.py index aa5e6038..34d7a14c 100644 --- a/pwnagotchi/_version.py +++ b/pwnagotchi/_version.py @@ -1 +1 @@ -__version__ = '2.6.7' +__version__ = '2.6.8' diff --git a/pwnagotchi/plugins/default/fix_services.py b/pwnagotchi/plugins/default/fix_services.py index 208f6036..05a068de 100644 --- a/pwnagotchi/plugins/default/fix_services.py +++ b/pwnagotchi/plugins/default/fix_services.py @@ -11,10 +11,6 @@ from pwnagotchi import plugins import pwnagotchi.ui.faces as faces from pwnagotchi.bettercap import Client -from pwnagotchi.ui.components import Text -from pwnagotchi.ui.view import BLACK -import pwnagotchi.ui.fonts as fonts - class FixServices(plugins.Plugin): __author__ = 'jayofelony' @@ -41,14 +37,12 @@ class FixServices(plugins.Plugin): self.isReloadingMon = False self.connection = None self.LASTTRY = 0 - self._status = "--" self._count = 0 def on_loaded(self): """ Gets called when the plugin gets loaded """ - self._status = "ld" logging.info("[Fix_Services] plugin loaded.") def on_ready(self, agent): @@ -59,10 +53,8 @@ class FixServices(plugins.Plugin): logging.info("[Fix_Services ip link show wlan0mon]: %s" % repr(cmd_output)) if ",UP," in str(cmd_output): logging.info("wlan0mon is up.") - self._status = "up" if len(self.pattern.findall(last_lines)) >= 3: - self._status = "XX" if hasattr(agent, 'view'): display = agent.view() display.set('status', 'Blind-Bug detected. Restarting.') @@ -75,12 +67,10 @@ class FixServices(plugins.Plugin): else: logging.info("[Fix_Services] Logs look good!") - self._status = "" except Exception as err: logging.error("[Fix_Services ip link show wlan0mon]: %s" % repr(err)) try: - self._status = "xx" self._tryTurningItOffAndOnAgain(agent) except Exception as err: logging.error("[Fix_Services OffNOn]: %s" % repr(err)) @@ -153,7 +143,6 @@ class FixServices(plugins.Plugin): logging.info("[Fix_Services] wifi.recon flip: success!") if display: display.update(force=True, new_data={"status": "Wifi recon flipped!", - "brcmfmac_status": self._status, "face": faces.COOL}) else: print("Wifi recon flipped\nthat was easy!") @@ -223,12 +212,11 @@ class FixServices(plugins.Plugin): self.isReloadingMon = True self.LASTTRY = time.time() - self._status = "BL" if hasattr(connection, 'view'): display = connection.view() if display: display.update(force=True, new_data={"status": "I'm blind! Try turning it off and on again", - "brcmfmac_status": self._status, "face": faces.BORED}) + "face": faces.BORED}) else: display = None @@ -271,7 +259,6 @@ class FixServices(plugins.Plugin): try: cmd_output = subprocess.check_output("monstop", shell=True) - self._status = "dn" self.logPrintView("info", "[Fix_Services] wlan0mon down and deleted: %s" % cmd_output, display, {"status": "wlan0mon d-d-d-down!", "face": faces.BORED}) except Exception as nope: @@ -291,7 +278,6 @@ class FixServices(plugins.Plugin): cmd_output = subprocess.check_output("sudo modprobe -r brcmfmac", shell=True) self.logPrintView("info", "[Fix_Services] unloaded brcmfmac", display, {"status": "Turning it off #%s" % tries, "face": faces.SMART}) - self._status = "ul" time.sleep(1 + tries) # reload the module @@ -300,7 +286,6 @@ class FixServices(plugins.Plugin): cmd_output = subprocess.check_output("sudo modprobe brcmfmac", shell=True) self.logPrintView("info", "[Fix_Services] reloaded brcmfmac") - self._status = "rl" time.sleep(10 + 4 * tries) # give it some time for wlan device to stabilize, or whatever # success! now make the mon0 @@ -308,14 +293,12 @@ class FixServices(plugins.Plugin): cmd_output = subprocess.check_output("monstart", shell=True) self.logPrintView("info", "[Fix_Services interface add wlan0mon] worked #%s: %s" % (tries, cmd_output)) - self._status = "up" time.sleep(tries + 5) try: # try accessing mon0 in bettercap result = connection.run("set wifi.interface wlan0mon") if "success" in result: logging.info("[Fix_Services set wifi.interface wlan0mon] worked!") - self._status = "" self._count = self._count + 1 time.sleep(1) # stop looping and get back to recon @@ -354,7 +337,6 @@ class FixServices(plugins.Plugin): if tries < 3: if display: display.update(force=True, new_data={"status": "And back on again...", - "brcmfmac_status": self._status, "face": faces.INTENSE}) else: print("And back on again...") @@ -370,10 +352,8 @@ class FixServices(plugins.Plugin): result = connection.run("wifi.clear; wifi.recon on") if "success" in result: # and result["success"] is True: - self._status = "" if display: display.update(force=True, new_data={"status": "I can see again! (probably)", - "brcmfmac_status": self._status, "face": faces.HAPPY}) else: print("I can see again") @@ -388,31 +368,9 @@ class FixServices(plugins.Plugin): logging.error("[Fix_Services wifi.recon on] %s" % repr(err)) pwnagotchi.reboot() - # called to setup the ui elements - def on_ui_setup(self, ui): - with ui._lock: - # add custom UI elements - if "position" in self.options: - pos = self.options['position'].split(',') - pos = [int(x.strip()) for x in pos] - else: - pos = (ui.width() / 2 + 35, ui.height() - 11) - - logging.info("Got here") - ui.add_element('brcmfmac_status', Text(color=BLACK, value='--', position=pos, font=fonts.Small)) - - # called when the ui is updated - def on_ui_update(self, ui): - # update those elements - if self._status: - ui.set('brcmfmac_status', "wlan0mon %s" % self._status) - else: - ui.set('brcmfmac_status', "rst#%s" % self._count) - def on_unload(self, ui): with ui._lock: try: - ui.remove_element('brcmfmac_status') logging.info("[Fix_Services] unloaded") except Exception as err: logging.info("[Fix_Services] unload err %s " % repr(err)) diff --git a/pwnagotchi/utils.py b/pwnagotchi/utils.py index d3114e59..717a84bd 100644 --- a/pwnagotchi/utils.py +++ b/pwnagotchi/utils.py @@ -240,7 +240,6 @@ def load_config(args): # the very first step is to normalize the display name, so we don't need dozens of if/elif around if config['ui']['display']['type'] in ('inky', 'inkyphat'): config['ui']['display']['type'] = 'inky' - elif config['ui']['display']['type'] in ('papirus', 'papi'): config['ui']['display']['type'] = 'papirus' @@ -259,14 +258,26 @@ def load_config(args): elif config['ui']['display']['type'] in ('ws_4', 'ws4', 'waveshare_4', 'waveshare4'): config['ui']['display']['type'] = 'waveshare_4' - elif config['ui']['display']['type'] in ('ws_27inch', 'ws27inch', 'waveshare_27inch', 'waveshare27inch'): + elif config['ui']['display']['type'] in ('ws_27inch', 'ws27inch', 'waveshare2in7', 'waveshare_27inch', 'waveshare27inch'): config['ui']['display']['type'] = 'waveshare27inch' - elif config['ui']['display']['type'] in ('ws_27inchv2', 'ws27inchv2', 'waveshare_27inchv2', 'waveshare27inchv2'): - config['ui']['display']['type'] = 'waveshare27inchv2' + elif config['ui']['display']['type'] in ('ws_27inchv2', 'waveshare2in7_v2', 'ws27inchv2', 'waveshare_27inchv2', 'waveshare27inchv2'): + config['ui']['display']['type'] = 'waveshare2in7_v2' - elif config['ui']['display']['type'] in ('ws_29inch', 'ws29inch', 'waveshare_29inch', 'waveshare29inch'): - config['ui']['display']['type'] = 'waveshare29inch' + elif config['ui']['display']['type'] in ('ws_27inchbv2', 'waveshare2in7b_v2', 'ws27inchbv2', 'waveshare_27inchbv2', 'waveshare27inchbv2'): + config['ui']['display']['type'] = 'waveshare2in7b_v2' + + elif config['ui']['display']['type'] in ('ws_29inch', 'waveshare2in9', 'ws29inch', 'waveshare_29inch', 'waveshare29inch'): + config['ui']['display']['type'] = 'waveshare2in9' + + elif config['ui']['display']['type'] in ('ws_29inchv2', 'waveshare2in9_v2', 'ws29inchv2', 'waveshare_29inchv2', 'waveshare29inchv2'): + config['ui']['display']['type'] = 'waveshare2in9_v2' + + elif config['ui']['display']['type'] in ('ws_29inchbv3', 'waveshare2in9b_v3', 'ws29inchbv3', 'waveshare_29inchbv3', 'waveshare29inchbv3'): + config['ui']['display']['type'] = 'waveshare2in9b_v3' + + elif config['ui']['display']['type'] in ('ws_29inchbv4', 'waveshare2in9b_v4', 'ws29inchbv4', 'waveshare_29inchbv4', 'waveshare29inchbv4'): + config['ui']['display']['type'] = 'waveshare2in9b_v4' elif config['ui']['display']['type'] in 'lcdhat': config['ui']['display']['type'] = 'lcdhat' @@ -277,21 +288,29 @@ def load_config(args): elif config['ui']['display']['type'] in ('dfrobot_2', 'df2'): config['ui']['display']['type'] = 'dfrobot_2' - elif config['ui']['display']['type'] in ('ws_154inch', 'ws154inch', 'waveshare_154inch', 'waveshare154inch'): - config['ui']['display']['type'] = 'waveshare154inch' + elif config['ui']['display']['type'] in ('ws_154inch', 'waveshare1in54', 'ws154inch', 'waveshare_154inch', 'waveshare154inch'): + config['ui']['display']['type'] = 'waveshare1in54' - elif config['ui']['display']['type'] in ( - 'waveshare144lcd', 'ws_144inch', 'ws144inch', 'waveshare_144inch', 'waveshare144inch'): + elif config['ui']['display']['type'] in ('ws_154inchb', 'waveshare1in54b', 'ws154inchb', 'waveshare_154inchb', 'waveshare154inchb'): + config['ui']['display']['type'] = 'waveshare1in54b' + + elif config['ui']['display']['type'] in ('ws_154inchbv2', 'waveshare1in54bv2', 'ws154inchbv2', 'waveshare_154inchbv2', 'waveshare154inchbv2'): + config['ui']['display']['type'] = 'waveshare1in54b_v2' + + elif config['ui']['display']['type'] in ('ws_154inchv2', 'waveshare1in54v2', 'ws154inchv2', 'waveshare_154inchv2', 'waveshare154inchv2'): + config['ui']['display']['type'] = 'waveshare1in54_v2' + + elif config['ui']['display']['type'] in ('waveshare144lcd', 'ws_144inch', 'ws144inch', 'waveshare_144inch', 'waveshare144inch'): config['ui']['display']['type'] = 'waveshare144lcd' - elif config['ui']['display']['type'] in ('ws_213d', 'ws213d', 'waveshare_213d', 'waveshare213d'): - config['ui']['display']['type'] = 'waveshare213d' + elif config['ui']['display']['type'] in ('ws_213d', 'ws213d', 'waveshare2in13d', 'waveshare_213d', 'waveshare213d'): + config['ui']['display']['type'] = 'waveshare2in13d' - elif config['ui']['display']['type'] in ('ws_213bc', 'ws213bc', 'waveshare_213bc', 'waveshare213bc'): - config['ui']['display']['type'] = 'waveshare213bc' + elif config['ui']['display']['type'] in ('ws_213bc', 'ws213bc', 'waveshare2in13bc', 'waveshare_213bc', 'waveshare213bc'): + config['ui']['display']['type'] = 'waveshare2in13bc' - elif config['ui']['display']['type'] in ('ws_213bv4', 'ws213bv4', 'waveshare_213bv4', 'waveshare213inb_v4'): - config['ui']['display']['type'] = 'waveshare213inb_v4' + elif config['ui']['display']['type'] in ('ws_213bv4', 'waveshare2in13b_v4', 'ws213bv4', 'waveshare_213bv4', 'waveshare213inb_v4'): + config['ui']['display']['type'] = 'waveshare2in13b_v4' elif config['ui']['display']['type'] in 'spotpear24inch': config['ui']['display']['type'] = 'spotpear24inch' @@ -302,6 +321,105 @@ def load_config(args): elif config['ui']['display']['type'] in 'waveshare35lcd': config['ui']['display']['type'] = 'waveshare35lcd' + elif config['ui']['display']['type'] in 'waveshare1in54c': + config['ui']['display']['type'] = 'waveshare1in54c' + + elif config['ui']['display']['type'] in 'waveshare1in64g': + config['ui']['display']['type'] = 'waveshare1in64g' + + elif config['ui']['display']['type'] in 'waveshare1in02': + config['ui']['display']['type'] = 'waveshare1in02' + + elif config['ui']['display']['type'] in 'waveshare2in9bc': + config['ui']['display']['type'] = 'waveshare2in9bc' + + elif config['ui']['display']['type'] in 'waveshare2in9d': + config['ui']['display']['type'] = 'waveshare2in9d' + + elif config['ui']['display']['type'] in 'waveshare2in13b_v3': + config['ui']['display']['type'] = 'waveshare2in13b_v3' + + elif config['ui']['display']['type'] in 'waveshare2in23g': + config['ui']['display']['type'] = 'waveshare2in23g' + + elif config['ui']['display']['type'] in 'waveshare2in36g': + config['ui']['display']['type'] = 'waveshare2in36g' + + elif config['ui']['display']['type'] in 'waveshare2in66': + config['ui']['display']['type'] = 'waveshare2in66' + + elif config['ui']['display']['type'] in 'waveshare3in0g': + config['ui']['display']['type'] = 'waveshare3in0g' + + elif config['ui']['display']['type'] in 'waveshare3in7': + config['ui']['display']['type'] = 'waveshare3in7' + + elif config['ui']['display']['type'] in 'waveshare3in52': + config['ui']['display']['type'] = 'waveshare3in52' + + elif config['ui']['display']['type'] in 'waveshare4in01f': + config['ui']['display']['type'] = 'waveshare4in01f' + + elif config['ui']['display']['type'] in 'waveshare4in2': + config['ui']['display']['type'] = 'waveshare4in2' + + elif config['ui']['display']['type'] in 'waveshare4in2_v2': + config['ui']['display']['type'] = 'waveshare4in2_v2' + + elif config['ui']['display']['type'] in 'waveshare4in2b_v2': + config['ui']['display']['type'] = 'waveshare4in2b_v2' + + elif config['ui']['display']['type'] in 'waveshare4in2bc': + config['ui']['display']['type'] = 'waveshare4in2bc' + + elif config['ui']['display']['type'] in 'waveshare4in26': + config['ui']['display']['type'] = 'waveshare4in26' + + elif config['ui']['display']['type'] in 'waveshare4in37g': + config['ui']['display']['type'] = 'waveshare4in37g' + + elif config['ui']['display']['type'] in 'waveshare5in65f': + config['ui']['display']['type'] = 'waveshare5in65f' + + elif config['ui']['display']['type'] in 'waveshare5in83': + config['ui']['display']['type'] = 'waveshare5in83' + + elif config['ui']['display']['type'] in 'waveshare5in83_v2': + config['ui']['display']['type'] = 'waveshare5in83_v2' + + elif config['ui']['display']['type'] in 'waveshare5in83b_v2': + config['ui']['display']['type'] = 'waveshare5in83b_v2' + + elif config['ui']['display']['type'] in 'waveshare5in83bc': + config['ui']['display']['type'] = 'waveshare5in83bc' + + elif config['ui']['display']['type'] in 'waveshare7in3f': + config['ui']['display']['type'] = 'waveshare7in3f' + + elif config['ui']['display']['type'] in 'waveshare7in3g': + config['ui']['display']['type'] = 'waveshare7in3g' + + elif config['ui']['display']['type'] in 'waveshare7in5': + config['ui']['display']['type'] = 'waveshare7in5' + + elif config['ui']['display']['type'] in 'waveshare7in5_HD': + config['ui']['display']['type'] = 'waveshare7in5_HD' + + elif config['ui']['display']['type'] in 'waveshare7in5_v2': + config['ui']['display']['type'] = 'waveshare7in5_v2' + + elif config['ui']['display']['type'] in 'waveshare7in5b_HD': + config['ui']['display']['type'] = 'waveshare7in5b_HD' + + elif config['ui']['display']['type'] in 'waveshare7in5b_v2': + config['ui']['display']['type'] = 'waveshare7in5b_v2' + + elif config['ui']['display']['type'] in 'waveshare7in5bc': + config['ui']['display']['type'] = 'waveshare7in5bc' + + elif config['ui']['display']['type'] in 'waveshare13in3k': + config['ui']['display']['type'] = 'waveshare13in3k' + else: print("unsupported display type %s" % config['ui']['display']['type']) sys.exit(1)