From 3cc31686c268442ca409b68e5ec84e863cbe594c Mon Sep 17 00:00:00 2001 From: root <root@RossDebian> Date: Sat, 12 Oct 2019 14:46:25 +0100 Subject: [PATCH 1/4] cleancap plugin added --- pwnagotchi/defaults.yml | 2 + pwnagotchi/plugins/default/cleancap.py | 55 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 pwnagotchi/plugins/default/cleancap.py diff --git a/pwnagotchi/defaults.yml b/pwnagotchi/defaults.yml index e6787c7..e2f72f0 100644 --- a/pwnagotchi/defaults.yml +++ b/pwnagotchi/defaults.yml @@ -58,6 +58,8 @@ main: quickdic: enabled: false wordlist_folder: /opt/wordlists/ + cleancap: + enabled: false # monitor interface to use iface: mon0 # command to run to bring the mon interface up in case it's not up already diff --git a/pwnagotchi/plugins/default/cleancap.py b/pwnagotchi/plugins/default/cleancap.py new file mode 100644 index 0000000..ae48840 --- /dev/null +++ b/pwnagotchi/plugins/default/cleancap.py @@ -0,0 +1,55 @@ +__author__ = 'pwnagotchi [at] rossmarks [dot] uk' +__version__ = '1.0.0' +__name__ = 'cleancap' +__license__ = 'GPL3' +__description__ = 'confirm pcap contains handshake/PMKID or delete it' + +''' +Aircrack-ng needed, to install: +> apt-get install aircrack-ng +''' + +import logging +import subprocess +import string +import re + +OPTIONS = dict() + +def on_loaded(): + logging.info("cleancap plugin loaded") + +def on_handshake(agent, filename, access_point, client_station): + display = agent._view + todelete = 0 + + result = subprocess.run(('/usr/bin/aircrack-ng '+ filename +' | grep "1 handshake" | awk \'{print $2}\''),shell=True, stdout=subprocess.PIPE) + result = result.stdout.decode('utf-8').translate({ord(c) :None for c in string.whitespace}) + if result: + logging.info("[cleancap] contains handshake") + else: + todetele = 1 + + if todelete == 0: + result = subprocess.run(('/usr/bin/aircrack-ng '+ filename +' | grep "PMKID" | awk \'{print $2}\''),shell=True, stdout=subprocess.PIPE) + result = result.stdout.decode('utf-8').translate({ord(c) :None for c in string.whitespace}) + if result: + logging.info("[cleancap] contains PMKID") + else: + todetele = 1 + + if todelete == 1: + set_text("uncrackable pcap") + display.update(force=True) + +text_to_set = ""; +def set_text(text): + global text_to_set + text_to_set = text + +def on_ui_update(ui): + global text_to_set + if text_to_set: + ui.set('face', "(>.<)") + ui.set('status', text_to_set) + text_to_set = "" From 2d78b52294aa908683c5ecdaa05fa13ca63b2674 Mon Sep 17 00:00:00 2001 From: root <root@RossDebian> Date: Sat, 12 Oct 2019 14:49:42 +0100 Subject: [PATCH 2/4] cleancap plugin added --- pwnagotchi/plugins/default/cleancap.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pwnagotchi/plugins/default/cleancap.py b/pwnagotchi/plugins/default/cleancap.py index ae48840..aac3d7f 100644 --- a/pwnagotchi/plugins/default/cleancap.py +++ b/pwnagotchi/plugins/default/cleancap.py @@ -39,6 +39,7 @@ def on_handshake(agent, filename, access_point, client_station): todetele = 1 if todelete == 1: + subprocess.run(('rm '+filename),shell=True,stdout=subpocess.PIPE) set_text("uncrackable pcap") display.update(force=True) From b46f751e7d5a4765175ae7338d1bca26d134ede0 Mon Sep 17 00:00:00 2001 From: root <root@RossDebian> Date: Sat, 12 Oct 2019 19:23:41 +0100 Subject: [PATCH 3/4] modified to better describe plugin --- pwnagotchi/defaults.yml | 2 +- pwnagotchi/plugins/default/{cleancap.py => AircrackOnly.py} | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) rename pwnagotchi/plugins/default/{cleancap.py => AircrackOnly.py} (91%) diff --git a/pwnagotchi/defaults.yml b/pwnagotchi/defaults.yml index e2f72f0..ec487f8 100644 --- a/pwnagotchi/defaults.yml +++ b/pwnagotchi/defaults.yml @@ -58,7 +58,7 @@ main: quickdic: enabled: false wordlist_folder: /opt/wordlists/ - cleancap: + AircrackOnly: enabled: false # monitor interface to use iface: mon0 diff --git a/pwnagotchi/plugins/default/cleancap.py b/pwnagotchi/plugins/default/AircrackOnly.py similarity index 91% rename from pwnagotchi/plugins/default/cleancap.py rename to pwnagotchi/plugins/default/AircrackOnly.py index aac3d7f..308dad9 100644 --- a/pwnagotchi/plugins/default/cleancap.py +++ b/pwnagotchi/plugins/default/AircrackOnly.py @@ -1,6 +1,6 @@ __author__ = 'pwnagotchi [at] rossmarks [dot] uk' __version__ = '1.0.0' -__name__ = 'cleancap' +__name__ = 'AircrackOnly' __license__ = 'GPL3' __description__ = 'confirm pcap contains handshake/PMKID or delete it' @@ -26,7 +26,7 @@ def on_handshake(agent, filename, access_point, client_station): result = subprocess.run(('/usr/bin/aircrack-ng '+ filename +' | grep "1 handshake" | awk \'{print $2}\''),shell=True, stdout=subprocess.PIPE) result = result.stdout.decode('utf-8').translate({ord(c) :None for c in string.whitespace}) if result: - logging.info("[cleancap] contains handshake") + logging.info("[AircrackOnly] contains handshake") else: todetele = 1 @@ -34,7 +34,7 @@ def on_handshake(agent, filename, access_point, client_station): result = subprocess.run(('/usr/bin/aircrack-ng '+ filename +' | grep "PMKID" | awk \'{print $2}\''),shell=True, stdout=subprocess.PIPE) result = result.stdout.decode('utf-8').translate({ord(c) :None for c in string.whitespace}) if result: - logging.info("[cleancap] contains PMKID") + logging.info("[AircrackOnly] contains PMKID") else: todetele = 1 From 0cccfef14ec8282312dce4a39383a01ba2261fd1 Mon Sep 17 00:00:00 2001 From: root <root@RossDebian> Date: Sat, 12 Oct 2019 19:29:04 +0100 Subject: [PATCH 4/4] replaced with os.remove() --- pwnagotchi/plugins/default/AircrackOnly.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pwnagotchi/plugins/default/AircrackOnly.py b/pwnagotchi/plugins/default/AircrackOnly.py index 308dad9..b1baa99 100644 --- a/pwnagotchi/plugins/default/AircrackOnly.py +++ b/pwnagotchi/plugins/default/AircrackOnly.py @@ -13,6 +13,7 @@ import logging import subprocess import string import re +import os OPTIONS = dict() @@ -39,7 +40,7 @@ def on_handshake(agent, filename, access_point, client_station): todetele = 1 if todelete == 1: - subprocess.run(('rm '+filename),shell=True,stdout=subpocess.PIPE) + os.remove(filename) set_text("uncrackable pcap") display.update(force=True)