From 6c44d7f0f68433d1dfd41b7378c4f235e2af253a Mon Sep 17 00:00:00 2001 From: root Date: Thu, 10 Oct 2019 19:42:40 +0100 Subject: [PATCH] quickdic plugin --- pwnagotchi/defaults.yml | 4 +- pwnagotchi/plugins/default/quickdic.py | 53 ++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 pwnagotchi/plugins/default/quickdic.py diff --git a/pwnagotchi/defaults.yml b/pwnagotchi/defaults.yml index f87f7ca..e6787c7 100644 --- a/pwnagotchi/defaults.yml +++ b/pwnagotchi/defaults.yml @@ -55,7 +55,9 @@ main: screen_refresh: enabled: false refresh_interval: 50 - + quickdic: + enabled: false + wordlist_folder: /opt/wordlists/ # 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/quickdic.py b/pwnagotchi/plugins/default/quickdic.py new file mode 100644 index 0000000..7ef7762 --- /dev/null +++ b/pwnagotchi/plugins/default/quickdic.py @@ -0,0 +1,53 @@ +__author__ = 'pwnagotchi [at] rossmarks [dot] uk' +__version__ = '1.0.0' +__name__ = 'quickdic' +__license__ = 'GPL3' +__description__ = 'Run a quick dictionary scan against captured handshakes' + +''' +Aircrack-ng needed, to install: +>apt-get install aircrak-ng +Upload worrdlists files in .txt forrmat to folder in config file (default: /opt/wordlists/) +''' + +import logging +import subprocess +import string +import re + +OPTIONS = dict() + +def on_loaded(): + logging.info("Quick dictionary check plugin loaded") + +def on_handshake(agent, filename, access_point, client_station): + display = agent._view + + 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 not result: + logging.info("[quickdic] No handshake") + else: + logging.info("[quickdic] Handshake confirmed") + result2 = subprocess.run(('aircrack-ng -w '+OPTIONS['wordlist_folder']+'*.txt -q -b '+result+' '+filename+' | grep KEY'),shell=True,stdout=subprocess.PIPE) + result2 = result2.stdout.decode('utf-8').strip() + logging.info("[quickdic] "+result2) + if result2 != "KEY NOT FOUND": + key = re.search('\[(.*)\]', result2) + pwd = str(key.group(1)) + set_text("Cracked password: "+pwd) + agent.set_excited() + display.update(force=True) + +text_to_set = ""; +def set_text(text): + global text_to_set + text_to_set = text + logging.info('[quickdic] setText: '+text) + +def on_ui_update(ui): + global text_to_set + if text_to_set: + logging.info('[quickdic] ui_update: '+text_to_set) + ui.set('status', text_to_set) + text_to_set = "" \ No newline at end of file