From 11fe8a607c9e559da1fb5d04ee75a8e0bf0d0081 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Mon, 16 Dec 2024 19:31:06 +0100 Subject: [PATCH] Update wpa-sec.py to include show_pwd when download_results is enabled. This option can be disabled/enabled by editing config.toml --- pwnagotchi/defaults.toml | 1 + pwnagotchi/plugins/default/wpa-sec.py | 38 ++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/pwnagotchi/defaults.toml b/pwnagotchi/defaults.toml index abf99e44..9c7b8b8f 100644 --- a/pwnagotchi/defaults.toml +++ b/pwnagotchi/defaults.toml @@ -106,6 +106,7 @@ main.plugins.wpa-sec.enabled = false main.plugins.wpa-sec.api_key = "" main.plugins.wpa-sec.api_url = "https://wpa-sec.stanev.org" main.plugins.wpa-sec.download_results = false +main.plugins.wpa-sec.show_pwd = false main.iface = "wlan0mon" main.mon_start_cmd = "/usr/bin/monstart" diff --git a/pwnagotchi/plugins/default/wpa-sec.py b/pwnagotchi/plugins/default/wpa-sec.py index 696b53b4..eaddda20 100644 --- a/pwnagotchi/plugins/default/wpa-sec.py +++ b/pwnagotchi/plugins/default/wpa-sec.py @@ -5,12 +5,16 @@ from datetime import datetime from threading import Lock from pwnagotchi.utils import StatusFile, remove_whitelisted from pwnagotchi import plugins +from pwnagotchi.ui.components import LabeledValue +from pwnagotchi.ui.view import BLACK +import pwnagotchi.ui.fonts as fonts from json.decoder import JSONDecodeError class WpaSec(plugins.Plugin): __author__ = '33197631+dadav@users.noreply.github.com' - __version__ = '2.1.0' + __editor__ = 'jayofelony' + __version__ = '2.1.1' __license__ = 'GPL3' __description__ = 'This plugin automatically uploads handshakes to https://wpa-sec.stanev.org' @@ -135,3 +139,35 @@ class WpaSec(plugins.Plugin): logging.debug("WPA_SEC: %s", req_e) except OSError as os_e: logging.debug("WPA_SEC: %s", os_e) + + def on_ui_setup(self, ui): + if 'show_pwd' in self.options and self.options['show_pwd'] and 'download_results' in self.options and self.options['download_results']: + # Setup for horizontal orientation with adjustable positions + x_position = 121 # X position for both SSID and password + ssid_y_position = 62 # Y position for SSID + password_y_offset = 12 # Y offset for password from SSID + + ssid_position = (x_position, ssid_y_position) + password_position = (x_position, ssid_y_position + password_y_offset) + + ui.add_element('ssid', LabeledValue(color=BLACK, label='', value='', position=ssid_position, + label_font=fonts.Bold, text_font=fonts.Small)) + ui.add_element('password', LabeledValue(color=BLACK, label='', value='', position=password_position, + label_font=fonts.Bold, text_font=fonts.Small)) + + def on_unload(self, ui): + with ui._lock: + ui.remove_element('ssid') + ui.remove_element('password') + + def on_ui_update(self, ui): + if 'show_pwd' in self.options and self.options['show_pwd'] and 'download_results' in self.options and self.options['download_results']: + last_line = os.popen('awk -F: \'!seen[$3]++ {print $3 " - " $4}\' /root/handshakes/wpa-sec.cracked.potfile | tail -n 1') + last_line = last_line.read().rstrip() + if " - " in last_line: + ssid, password = last_line.split(" - ", 1) + else: + ssid = last_line + password = "" + ui.set('ssid', ssid) + ui.set('password', password) \ No newline at end of file