diff --git a/pwnagotchi/defaults.toml b/pwnagotchi/defaults.toml index 38e42129..61b27abf 100644 --- a/pwnagotchi/defaults.toml +++ b/pwnagotchi/defaults.toml @@ -1,5 +1,11 @@ main.name = "pwnagotchi" main.lang = "en" +main.whitelist = [ + "EXAMPLE_NETWORK", + "ANOTHER_EXAMPLE_NETWORK", + "fo:od:ba:be:fo:od", + "fo:od:ba" +] main.confd = "/etc/pwnagotchi/conf.d/" main.custom_plugin_repos = [ "https://github.com/jayofelony/pwnagotchi-torch-plugins/archive/master.zip", @@ -55,9 +61,6 @@ main.plugins.gps.device = "/dev/ttyUSB0" # for GPSD: "localhost:2947" main.plugins.grid.enabled = true main.plugins.grid.report = true -main.plugins.grid.exclude = [ - "YourHomeNetworkHere" -] main.plugins.logtail.enabled = false main.plugins.logtail.max-lines = 10000 @@ -73,7 +76,6 @@ main.plugins.onlinehashcrack.enabled = false main.plugins.onlinehashcrack.email = "" main.plugins.onlinehashcrack.dashboard = "" main.plugins.onlinehashcrack.single_files = false -main.plugins.onlinehashcrack.whitelist = [] main.plugins.paw-gps.enabled = false main.plugins.paw-gps.ip = "192.168.44.1:8080" @@ -100,26 +102,19 @@ main.plugins.webgpsmap.enabled = false main.plugins.wigle.enabled = false main.plugins.wigle.api_key = "" -main.plugins.wigle.whitelist = [] -main.plugins.wigle.donate = true +main.plugins.wigle.donate = false 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.whitelist = [] main.iface = "wlan0mon" main.mon_start_cmd = "/usr/bin/monstart" main.mon_stop_cmd = "/usr/bin/monstop" main.mon_max_blind_epochs = 50 main.no_restart = false -main.whitelist = [ - "EXAMPLE_NETWORK", - "ANOTHER_EXAMPLE_NETWORK", - "fo:od:ba:be:fo:od", - "fo:od:ba" -] + main.filter = "" main.log.path = "/home/pi/logs/pwnagotchi.log" diff --git a/pwnagotchi/plugins/default/grid.py b/pwnagotchi/plugins/default/grid.py index 2fbd0427..cdca794e 100644 --- a/pwnagotchi/plugins/default/grid.py +++ b/pwnagotchi/plugins/default/grid.py @@ -58,8 +58,9 @@ class Grid(plugins.Plugin): self.total_messages = 0 self.lock = Lock() - def is_excluded(self, what): - for skip in self.options['exclude']: + def is_excluded(self, what, agent): + config = agent.config() + for skip in config['main']['whitelist']: skip = skip.lower() what = what.lower() if skip in what or skip.replace(':', '') in what: @@ -87,6 +88,7 @@ class Grid(plugins.Plugin): def check_handshakes(self, agent): logging.debug("checking pcaps") + config = agent.config() pcap_files = glob.glob(os.path.join(agent.config()['bettercap']['handshakes'], "*.pcap")) num_networks = len(pcap_files) @@ -98,19 +100,19 @@ class Grid(plugins.Plugin): if self.options['report']: logging.info("grid: %d new networks to report" % num_new) logging.debug("self.options: %s" % self.options) - logging.debug(" exclude: %s" % self.options['exclude']) + logging.debug(" exclude: %s" % config['main']['whitelist']) for pcap_file in pcap_files: net_id = os.path.basename(pcap_file).replace('.pcap', '') if net_id not in reported: - if self.is_excluded(net_id): + if self.is_excluded(net_id, agent): logging.debug("skipping %s due to exclusion filter" % pcap_file) self.set_reported(reported, net_id) continue essid, bssid = parse_pcap(pcap_file) if bssid: - if self.is_excluded(essid) or self.is_excluded(bssid): + if self.is_excluded(essid, agent) or self.is_excluded(bssid, agent): logging.debug("not reporting %s due to exclusion filter" % pcap_file) self.set_reported(reported, net_id) else: diff --git a/pwnagotchi/plugins/default/onlinehashcrack.py b/pwnagotchi/plugins/default/onlinehashcrack.py index b63a2ed6..aeb01dda 100644 --- a/pwnagotchi/plugins/default/onlinehashcrack.py +++ b/pwnagotchi/plugins/default/onlinehashcrack.py @@ -25,6 +25,7 @@ class OnlineHashCrack(plugins.Plugin): self.report = StatusFile('/root/.ohc_uploads', data_format='json') self.skip = list() self.lock = Lock() + self.options = dict() def on_loaded(self): """ @@ -34,13 +35,9 @@ class OnlineHashCrack(plugins.Plugin): logging.error("OHC: Email isn't set. Can't upload to onlinehashcrack.com") return - if 'whitelist' not in self.options: - self.options['whitelist'] = list() - self.ready = True logging.info("OHC: OnlineHashCrack plugin loaded.") - def _upload_to_ohc(self, path, timeout=30): """ Uploads the file to onlinehashcrack.com @@ -78,7 +75,6 @@ class OnlineHashCrack(plugins.Plugin): except OSError as os_e: raise os_e - def on_webhook(self, path, request): import requests from flask import redirect @@ -87,7 +83,6 @@ class OnlineHashCrack(plugins.Plugin): r = s.post('https://www.onlinehashcrack.com/dashboard', data={'emailTasks': self.options['email'], 'submit': ''}) return redirect(r.url, code=302) - def on_internet_available(self, agent): """ Called in manual mode when there's internet connectivity @@ -105,7 +100,7 @@ class OnlineHashCrack(plugins.Plugin): handshake_paths = [os.path.join(handshake_dir, filename) for filename in handshake_filenames if filename.endswith('.pcap')] # pull out whitelisted APs - handshake_paths = remove_whitelisted(handshake_paths, self.options['whitelist']) + handshake_paths = remove_whitelisted(handshake_paths, config['main']['whitelist']) handshake_new = set(handshake_paths) - set(reported) - set(self.skip) if handshake_new: logging.info("OHC: Internet connectivity detected. Uploading new handshakes to onlinehashcrack.com") diff --git a/pwnagotchi/plugins/default/wigle.py b/pwnagotchi/plugins/default/wigle.py index fddefd4e..aec3ae0a 100644 --- a/pwnagotchi/plugins/default/wigle.py +++ b/pwnagotchi/plugins/default/wigle.py @@ -121,9 +121,6 @@ class Wigle(plugins.Plugin): logging.debug("WIGLE: api_key isn't set. Can't upload to wigle.net") return - if not 'whitelist' in self.options: - self.options['whitelist'] = list() - if not 'donate' in self.options: self.options['donate'] = True @@ -148,7 +145,7 @@ class Wigle(plugins.Plugin): for filename in all_files if filename.endswith('.gps.json') or filename.endswith('.paw-gps.json') or filename.endswith('.geo.json')] - all_gps_files = remove_whitelisted(all_gps_files, self.options['whitelist']) + all_gps_files = remove_whitelisted(all_gps_files, config['main']['whitelist']) new_gps_files = set(all_gps_files) - set(reported) - set(self.skip) if new_gps_files: logging.info("WIGLE: Internet connectivity detected. Uploading new handshakes to wigle.net") diff --git a/pwnagotchi/plugins/default/wpa-sec.py b/pwnagotchi/plugins/default/wpa-sec.py index bb65db44..a5f9b444 100644 --- a/pwnagotchi/plugins/default/wpa-sec.py +++ b/pwnagotchi/plugins/default/wpa-sec.py @@ -76,9 +76,6 @@ class WpaSec(plugins.Plugin): logging.error("WPA_SEC: API-URL isn't set. Can't upload, no endpoint configured.") return - if 'whitelist' not in self.options: - self.options['whitelist'] = list() - self.ready = True logging.info("WPA_SEC: plugin loaded") @@ -103,7 +100,7 @@ class WpaSec(plugins.Plugin): handshake_filenames = os.listdir(handshake_dir) handshake_paths = [os.path.join(handshake_dir, filename) for filename in handshake_filenames if filename.endswith('.pcap')] - handshake_paths = remove_whitelisted(handshake_paths, self.options['whitelist']) + handshake_paths = remove_whitelisted(handshake_paths, config['main']['whitelist']) handshake_new = set(handshake_paths) - set(reported) - set(self.skip) if handshake_new: