diff --git a/esp8266_deauther/Names.cpp b/esp8266_deauther/Names.cpp index b71167e..ebaf2d8 100644 --- a/esp8266_deauther/Names.cpp +++ b/esp8266_deauther/Names.cpp @@ -12,7 +12,7 @@ void Names::load() { checkFile(FILE_PATH, String(OPEN_BRACKET) + String(CLOSE_BRACKET)); JsonArray &arr = parseJSONFile(FILE_PATH, jsonBuffer); - for (int i = 0; i < arr.size() && i < NAME_LIST_SIZE; i++) { + for (uint32_t i = 0; i < arr.size() && i < NAME_LIST_SIZE; i++) { JsonArray &tmpArray = arr.get(i); internal_add(tmpArray.get(0), tmpArray.get(2), tmpArray.get(3), tmpArray.get(4), false); sort(); diff --git a/esp8266_deauther/SSIDs.cpp b/esp8266_deauther/SSIDs.cpp index c05ac38..538f976 100644 --- a/esp8266_deauther/SSIDs.cpp +++ b/esp8266_deauther/SSIDs.cpp @@ -12,7 +12,7 @@ void SSIDs::load() { JsonObject &obj = parseJSONFile(FILE_PATH, jsonBuffer); JsonArray &arr = obj.get(str(SS_JSON_SSIDS)); - for (int i = 0; i < arr.size() && i < SSID_LIST_SIZE; i++) { + for (uint32_t i = 0; i < arr.size() && i < SSID_LIST_SIZE; i++) { JsonArray &tmpArray = arr.get(i); internal_add(tmpArray.get(0), tmpArray.get(1), tmpArray.get(2)); } diff --git a/esp8266_deauther/Scan.cpp b/esp8266_deauther/Scan.cpp index fa58833..5614c6e 100644 --- a/esp8266_deauther/Scan.cpp +++ b/esp8266_deauther/Scan.cpp @@ -261,7 +261,7 @@ void Scan::save(bool force) { buf = String(); // clear buffer uint32_t apCount = accesspoints.count(); - for (int i = 0; i < apCount; i++) { + for (uint32_t i = 0; i < apCount; i++) { buf += String(OPEN_BRACKET) + String(DOUBLEQUOTES) + escape(accesspoints.getSSID(i)) + String(DOUBLEQUOTES) + String(COMMA); // ["ssid", buf += String(DOUBLEQUOTES) + escape(accesspoints.getNameStr(i)) + String(DOUBLEQUOTES) + String(COMMA); // "name", buf += String(accesspoints.getCh(i)) + String(COMMA); // 1, @@ -287,7 +287,7 @@ void Scan::save(bool force) { buf += String(CLOSE_BRACKET) + String(COMMA) + String(DOUBLEQUOTES) + str(SC_JSON_STATIONS) + String(DOUBLEQUOTES) + String(DOUBLEPOINT) + String(OPEN_BRACKET); // ],"stations":[; uint32_t stationCount = stations.count(); - for (int i = 0; i < stationCount; i++) { + for (uint32_t i = 0; i < stationCount; i++) { buf += String(OPEN_BRACKET) + String(DOUBLEQUOTES) + stations.getMacStr(i) + String(DOUBLEQUOTES) + String(COMMA); // ["00:11:22:00:11:22", buf += String(stations.getCh(i)) + String(COMMA); // 1, buf += String(DOUBLEQUOTES) + stations.getNameStr(i) + String(DOUBLEQUOTES) + String(COMMA); // "name", diff --git a/esp8266_deauther/SerialInterface.cpp b/esp8266_deauther/SerialInterface.cpp index dbb36a5..0f41290 100644 --- a/esp8266_deauther/SerialInterface.cpp +++ b/esp8266_deauther/SerialInterface.cpp @@ -49,7 +49,7 @@ void SerialInterface::parameterError(String parameter) { bool SerialInterface::isInt(String str) { if (eqls(str,STR_TRUE) || eqls(str,STR_FALSE)) return true; - for (int i = 0; i < str.length(); i++) + for (uint32_t i = 0; i < str.length(); i++) if (!isDigit(str.charAt(i))) return false; return true; } @@ -130,7 +130,7 @@ void SerialInterface::update() { void SerialInterface::runCommands(String input) { String tmp; - for (int i = 0; i < input.length(); i++) { + for (uint32_t i = 0; i < input.length(); i++) { // when 2 semicolons in a row without a backslash escaping the first if (input.charAt(i) == SEMICOLON && input.charAt(i + 1) == SEMICOLON && input.charAt(i - 1) != BACKSLASH) { runCommand(tmp); @@ -156,7 +156,7 @@ void SerialInterface::runCommand(String input) { bool withinQuotes = false; bool escaped = false; char c; - for (int i = 0; i < input.length() && i < 512; i++) { + for (uint32_t i = 0; i < input.length() && i < 512; i++) { c = input.charAt(i); // when char is an unescaped diff --git a/esp8266_deauther/functions.h b/esp8266_deauther/functions.h index 941c94e..3ba370f 100644 --- a/esp8266_deauther/functions.h +++ b/esp8266_deauther/functions.h @@ -153,6 +153,117 @@ String replaceUtf8(String str, String r){ return result; } +// ===== LANGUAGE STRING FUNCTIONS ===== // + +// for reading Strings from the PROGMEM +String str(const char* ptr){ + char keyword[strlen_P(ptr)]; + strcpy_P(keyword, ptr); + return String(keyword); +} + +// for converting keywords +String keyword(const char* keywordPtr){ + char keyword[strlen_P(keywordPtr)]; + strcpy_P(keyword, keywordPtr); + + String str = ""; + uint8_t len = strlen(keyword); + uint8_t i = 0; + + while(i 255) return false; // when string too long + + char keyword[strlen_P(keywordPtr) + 1]; + strcpy_P(keyword, keywordPtr); + + uint8_t lenStr = strlen(str); + uint8_t lenKeyword = strlen(keyword); + if(lenStr > lenKeyword) return false; // string can't be longer than keyword (but can be smaller because of '/' and ',') + + uint8_t a = 0; + uint8_t b = 0; + bool result = true; + while(a < lenStr && b < lenKeyword){ + if(keyword[b] == SLASH || keyword[b] == COMMA) b++; + if(tolower(str[a]) != tolower(keyword[b])) result = false; + if((a == lenStr && !result) || !result){ // fast forward to next comma + while(b < lenKeyword && keyword[b] != COMMA) b++; + result = true; + a = 0; + } else { + a++; + b++; + } + } + // comparison correct AND string checked until the end AND keyword checked until the end + return result && a == lenStr && (keyword[b] == COMMA || keyword[b] == SLASH || keyword[b] == ENDOFLINE); +} + +bool eqls(String str, const char* keywordPtr){ + return eqls(str.c_str(), keywordPtr); +} + +// boolean to string +String b2s(bool input){ + return str(input ? STR_TRUE : STR_FALSE); +} + +// boolean to asterix * +String b2a(bool input){ + return (input ? String(ASTERIX) : String(SPACE)); +} + +// string to boolean +bool s2b(String input){ + return eqls(input, STR_TRUE); +} + +// ===== PRINT FUNCTIONS ===== // +void prnt(String s){ + Serial.print(s); +} +void prnt(bool b){ + Serial.print(b2s(b)); +} +void prnt(char c){ + Serial.print(c); +} +void prnt(const char* ptr){ + Serial.print(FPSTR(ptr)); +} +void prnt(int i){ + Serial.print((String)i); +} + +void prntln(){ + Serial.println(); +} +void prntln(String s){ + Serial.println(s); +} +void prntln(bool b){ + Serial.println(b2s(b)); +} +void prntln(char c){ + Serial.println(c); +} +void prntln(const char* ptr){ + Serial.println(FPSTR(ptr)); +} +void prntln(int i){ + Serial.println((String)i); +} + /* ===== WiFi ===== */ void setWifiChannel(uint8_t ch){ if(ch != wifi_channel && ch > 0 && ch < 15){ @@ -593,4 +704,4 @@ String formatBytes(size_t bytes) { #endif - + diff --git a/esp8266_deauther/language.h b/esp8266_deauther/language.h index ce9a366..6e43aff 100644 --- a/esp8266_deauther/language.h +++ b/esp8266_deauther/language.h @@ -1,6 +1,25 @@ #ifndef language_h #define language_h +extern String str(const char* ptr); +extern String keyword(const char* keywordPtr); +extern bool eqls(const char* str, const char* keywordPtr); +extern bool eqls(String str, const char* keywordPtr); +extern String b2s(bool input); +extern String b2a(bool input); +extern bool s2b(String input); +extern void prnt(String s); +extern void prnt(bool b); +extern void prnt(char c); +extern void prnt(const char* ptr); +extern void prnt(int i); +extern void prntln(); +extern void prntln(String s); +extern void prntln(bool b); +extern void prntln(char c); +extern void prntln(const char* ptr); +extern void prntln(int i); + /* The following variables are the strings used for the serial interface, display interface and settings. The keywords for the serial CLI have a simple structure to save a bit of memory and CPU time: @@ -13,644 +32,531 @@ // ===== GLOBAL STRINGS ===== // // Often used characters, therefor in the RAM -static const char CURSOR = '|'; -static const char SPACE = ' '; -static const char DOUBLEPOINT = ':'; -static const char EQUALS = '='; -static const char HASHSIGN = '#'; -static const char ASTERIX = '*'; -static const char PERCENT = '%'; -static const char DASH = '-'; -static const char QUESTIONMARK = '?'; -static const char ZERO = '0'; -static const char S = 's'; -static const char M = 'm'; -static const char D = 'd'; -static const char DOUBLEQUOTES = '\"'; -static const char SLASH = '/'; -static const char NEWLINE = '\n'; -static const char CARRIAGERETURN = '\r'; -static const char SEMICOLON = ';'; -static const char BACKSLASH = '\\'; -static const char POINT = '.'; -static const char VERTICALBAR = '|'; -static const char COMMA = ','; -static const char ENDOFLINE = '\0'; -static const char OPEN_BRACKET = '['; -static const char CLOSE_BRACKET = ']'; -static const char OPEN_CURLY_BRACKET = '{'; -static const char CLOSE_CURLY_BRACKET = '}'; +const char CURSOR = '|'; +const char SPACE = ' '; +const char DOUBLEPOINT = ':'; +const char EQUALS = '='; +const char HASHSIGN = '#'; +const char ASTERIX = '*'; +const char PERCENT = '%'; +const char DASH = '-'; +const char QUESTIONMARK = '?'; +const char ZERO = '0'; +const char S = 's'; +const char M = 'm'; +const char D = 'd'; +const char DOUBLEQUOTES = '\"'; +const char SLASH = '/'; +const char NEWLINE = '\n'; +const char CARRIAGERETURN = '\r'; +const char SEMICOLON = ';'; +const char BACKSLASH = '\\'; +const char POINT = '.'; +const char VERTICALBAR = '|'; +const char COMMA = ','; +const char ENDOFLINE = '\0'; +const char OPEN_BRACKET = '['; +const char CLOSE_BRACKET = ']'; +const char OPEN_CURLY_BRACKET = '{'; +const char CLOSE_CURLY_BRACKET = '}'; -static const char STR_TRUE[] PROGMEM = "true"; -static const char STR_FALSE[] PROGMEM = "false"; -static const char STR_MIN[] PROGMEM = "min"; - -// ===== GLOBAL FUNCTIONS ===== // - -// for reading Strings from the PROGMEM -static String str(const char* ptr){ - char keyword[strlen_P(ptr)]; - strcpy_P(keyword, ptr); - return String(keyword); -} - -// for converting keywords -static String keyword(const char* keywordPtr){ - char keyword[strlen_P(keywordPtr)]; - strcpy_P(keyword, keywordPtr); - - String str = ""; - uint8_t len = strlen(keyword); - uint8_t i = 0; - - while(i 255) return false; // when string too long - - char keyword[strlen_P(keywordPtr) + 1]; - strcpy_P(keyword, keywordPtr); - - uint8_t lenStr = strlen(str); - uint8_t lenKeyword = strlen(keyword); - if(lenStr > lenKeyword) return false; // string can't be longer than keyword (but can be smaller because of '/' and ',') - - uint8_t a = 0; - uint8_t b = 0; - bool result = true; - while(a < lenStr && b < lenKeyword){ - if(keyword[b] == SLASH || keyword[b] == COMMA) b++; - if(tolower(str[a]) != tolower(keyword[b])) result = false; - if((a == lenStr && !result) || !result){ // fast forward to next comma - while(b < lenKeyword && keyword[b] != COMMA) b++; - result = true; - a = 0; - } else { - a++; - b++; - } - } - // comparison correct AND string checked until the end AND keyword checked until the end - return result && a == lenStr && (keyword[b] == COMMA || keyword[b] == SLASH || keyword[b] == ENDOFLINE); -} - -static bool eqls(String str, const char* keywordPtr){ - return eqls(str.c_str(), keywordPtr); -} - -// boolean to string -static String b2s(bool input){ - return str(input ? STR_TRUE : STR_FALSE); -} - -// boolean to asterix * -static String b2a(bool input){ - return (input ? String(ASTERIX) : String(SPACE)); -} - -// string to boolean -static bool s2b(String input){ - return eqls(input, STR_TRUE); -} - -// ===== PRINT FUNCTIONS ===== // -static void prnt(String s){ - Serial.print(s); -} -static void prnt(bool b){ - Serial.print(b2s(b)); -} -static void prnt(char c){ - Serial.print(c); -} -static void prnt(const char* ptr){ - Serial.print(FPSTR(ptr)); -} -static void prnt(int i){ - Serial.print((String)i); -} - -static void prntln(){ - Serial.println(); -} -static void prntln(String s){ - Serial.println(s); -} -static void prntln(bool b){ - Serial.println(b2s(b)); -} -static void prntln(char c){ - Serial.println(c); -} -static void prntln(const char* ptr){ - Serial.println(FPSTR(ptr)); -} -static void prntln(int i){ - Serial.println((String)i); -} +const char STR_TRUE[] PROGMEM = "true"; +const char STR_FALSE[] PROGMEM = "false"; +const char STR_MIN[] PROGMEM = "min"; // ===== SETUP ===== // -static const char SETUP_OK[] PROGMEM = "OK"; -static const char SETUP_ERROR[] PROGMEM = "ERROR"; -static const char SETUP_MOUNT_SPIFFS[] PROGMEM = "Mounting SPIFFS..."; -static const char SETUP_FORMAT_SPIFFS[] PROGMEM = "Formatting SPIFFS..."; -static const char SETUP_SERIAL_WARNING[] PROGMEM = "Warning: Serial deactivated"; -static const char SETUP_STARTED[] PROGMEM = "STARTED! \\o/"; -static const char SETUP_COPYING[] PROGMEM = "Copying "; -static const char SETUP_PROGMEM_TO_SPIFFS[] PROGMEM = " from PROGMEM to SPIFFS..."; +const char SETUP_OK[] PROGMEM = "OK"; +const char SETUP_ERROR[] PROGMEM = "ERROR"; +const char SETUP_MOUNT_SPIFFS[] PROGMEM = "Mounting SPIFFS..."; +const char SETUP_FORMAT_SPIFFS[] PROGMEM = "Formatting SPIFFS..."; +const char SETUP_SERIAL_WARNING[] PROGMEM = "Warning: Serial deactivated"; +const char SETUP_STARTED[] PROGMEM = "STARTED! \\o/"; +const char SETUP_COPYING[] PROGMEM = "Copying "; +const char SETUP_PROGMEM_TO_SPIFFS[] PROGMEM = " from PROGMEM to SPIFFS..."; // ===== SERIAL COMMAND LINE INTERFACE ===== // -static const char CLI_SCAN[] PROGMEM = "scan"; // scan -static const char CLI_REBOOT[] PROGMEM = "reboot"; // reboot -static const char CLI_STATUS[] PROGMEM = "status"; // status -static const char CLI_SHOW[] PROGMEM = "show"; // show -static const char CLI_REMOVE[] PROGMEM = "remove"; // remove -static const char CLI_SET[] PROGMEM = "set"; // set -static const char CLI_STOP[] PROGMEM = "stop"; // stop -static const char CLI_LOAD[] PROGMEM = "load"; // load -static const char CLI_SAVE[] PROGMEM = "save"; // save -static const char CLI_ADD[] PROGMEM = "add"; // add -static const char CLI_DESELECT[] PROGMEM = "deselect"; // deselect -static const char CLI_CLEAR[] PROGMEM = "clear"; // clear -static const char CLI_SYSINFO[] PROGMEM = "sysinfo"; // sysinfo -static const char CLI_RESET[] PROGMEM = "reset"; // reset -static const char CLI_ON[] PROGMEM = "on"; // on -static const char CLI_OFF[] PROGMEM = "off"; // off -static const char CLI_RANDOM[] PROGMEM = "random"; // random -static const char CLI_GET[] PROGMEM = "get"; // get -static const char CLI_INFO[] PROGMEM = "info"; // info -static const char CLI_HELP[] PROGMEM = "help"; // help -static const char CLI_RICE[] PROGMEM = "rice"; // rice -static const char CLI_FORMAT[] PROGMEM = "format"; // format -static const char CLI_DELETE[] PROGMEM = "delete"; // delete -static const char CLI_PRINT[] PROGMEM = "print"; // print -static const char CLI_RUN[] PROGMEM = "run"; // run -static const char CLI_WRITE[] PROGMEM = "write"; // write -static const char CLI_LED[] PROGMEM = "led"; // led -static const char CLI_SEND[] PROGMEM = "send"; // send -static const char CLI_CUSTOM[] PROGMEM = "custom"; // custom -static const char CLI_DELAY[] PROGMEM = "delay"; // delay -static const char CLI_REPLACE[] PROGMEM = "replace"; // replace -static const char CLI_DRAW[] PROGMEM = "draw"; // draw -static const char CLI_SCRIPT[] PROGMEM = "script"; // script -static const char CLI_STARTAP[] PROGMEM = "startap"; // startap -static const char CLI_STOPAP[] PROGMEM = "stopap"; // stopap -static const char CLI_RENAME[] PROGMEM = "rename"; // rename -static const char CLI_COPY[] PROGMEM = "copy"; // copy -static const char CLI_ENABLE[] PROGMEM = "enable/d"; // enable, enabled -static const char CLI_DISABLE[] PROGMEM = "disable/d"; // disable, disabled -static const char CLI_WPA2[] PROGMEM = "wpa/2,-wpa/2"; // wpa, wpa2, -wpa, -wpa2 -static const char CLI_ATTACK[] PROGMEM = "attack/s"; // attack, attacks -static const char CLI_CHICKEN[] PROGMEM = "chicken/s"; // chicken, chickens -static const char CLI_SETTING[] PROGMEM = "setting/s"; // setting, settings -static const char CLI_ID[] PROGMEM = "id,-i/d"; // id, -i, -id -static const char CLI_ALL[] PROGMEM = "all,-a"; // all, -a -static const char CLI_TIME[] PROGMEM = "time,-t"; // time, -t -static const char CLI_CONTINUE[] PROGMEM = "continue,-c"; // continue, -c -static const char CLI_CHANNEL[] PROGMEM = "channel,-ch"; // channel, -ch -static const char CLI_MAC[] PROGMEM = "mac,-m"; // mac, -m -static const char CLI_BSSID[] PROGMEM = "bssid,-b"; // bssid, -b -static const char CLI_BEACON[] PROGMEM = "beacon,-b"; // bssid, -b -static const char CLI_DEAUTH[] PROGMEM = "deauth,-d"; // deauth, -d -static const char CLI_DEAUTHALL[] PROGMEM = "deauthall,-da"; // deauthall, -da -static const char CLI_PROBE[] PROGMEM = "probe,-p"; // probe, -p -static const char CLI_NOOUTPUT[] PROGMEM = "nooutput,-no"; // nooutput, -no -static const char CLI_FORCE[] PROGMEM = "force,-f"; // force, -f -static const char CLI_TIMEOUT[] PROGMEM = "timeout,-t"; // timeout, -t -static const char CLI_WIFI[] PROGMEM = "wifi,-w"; // wifi, -w -static const char CLI_CLONES[] PROGMEM = "clones,-cl"; // clones, -cl -static const char CLI_PATH[] PROGMEM = "path,-p"; // path, -p -static const char CLI_PASSWORD[] PROGMEM = "password,-ps/wd"; // password, -ps, -pswd -static const char CLI_HIDDEN[] PROGMEM = "hidden,-h"; // hidden, -h -static const char CLI_CAPTIVEPORTAL[] PROGMEM = "captiveportal,-cp"; // captiveportal, -cp -static const char CLI_SELECT[] PROGMEM = "select/ed,-s"; // select, selected, -s -static const char CLI_SSID[] PROGMEM = "ssid/s,-s/s"; // ssid, ssids, -s, -ss -static const char CLI_AP[] PROGMEM = "ap/s,-ap/s"; // ap, aps, -ap, -aps -static const char CLI_STATION[] PROGMEM = "station/s,-st"; // station, stations, -st -static const char CLI_NAME[] PROGMEM = "name/s,-n"; // name, names, -n -static const char CLI_LINE[] PROGMEM = "line/s,-l"; // line, lines, -l -static const char CLI_COMMENT[] PROGMEM = "//"; // // -static const char CLI_SCREEN[] PROGMEM = "screen"; // screen -static const char CLI_MODE[] PROGMEM = "mode,-m"; // mode -static const char CLI_MODE_BUTTONTEST[] PROGMEM = "buttontest"; // buttontest -static const char CLI_MODE_PACKETMONITOR[] PROGMEM = "packetmonitor"; // packetmonitor -static const char CLI_MODE_LOADINGSCREEN[] PROGMEM = "loadingscreen"; // loading -static const char CLI_MODE_MENU[] PROGMEM = "menu"; // menu +const char CLI_SCAN[] PROGMEM = "scan"; // scan +const char CLI_REBOOT[] PROGMEM = "reboot"; // reboot +const char CLI_STATUS[] PROGMEM = "status"; // status +const char CLI_SHOW[] PROGMEM = "show"; // show +const char CLI_REMOVE[] PROGMEM = "remove"; // remove +const char CLI_SET[] PROGMEM = "set"; // set +const char CLI_STOP[] PROGMEM = "stop"; // stop +const char CLI_LOAD[] PROGMEM = "load"; // load +const char CLI_SAVE[] PROGMEM = "save"; // save +const char CLI_ADD[] PROGMEM = "add"; // add +const char CLI_DESELECT[] PROGMEM = "deselect"; // deselect +const char CLI_CLEAR[] PROGMEM = "clear"; // clear +const char CLI_SYSINFO[] PROGMEM = "sysinfo"; // sysinfo +const char CLI_RESET[] PROGMEM = "reset"; // reset +const char CLI_ON[] PROGMEM = "on"; // on +const char CLI_OFF[] PROGMEM = "off"; // off +const char CLI_RANDOM[] PROGMEM = "random"; // random +const char CLI_GET[] PROGMEM = "get"; // get +const char CLI_INFO[] PROGMEM = "info"; // info +const char CLI_HELP[] PROGMEM = "help"; // help +const char CLI_RICE[] PROGMEM = "rice"; // rice +const char CLI_FORMAT[] PROGMEM = "format"; // format +const char CLI_DELETE[] PROGMEM = "delete"; // delete +const char CLI_PRINT[] PROGMEM = "print"; // print +const char CLI_RUN[] PROGMEM = "run"; // run +const char CLI_WRITE[] PROGMEM = "write"; // write +const char CLI_LED[] PROGMEM = "led"; // led +const char CLI_SEND[] PROGMEM = "send"; // send +const char CLI_CUSTOM[] PROGMEM = "custom"; // custom +const char CLI_DELAY[] PROGMEM = "delay"; // delay +const char CLI_REPLACE[] PROGMEM = "replace"; // replace +const char CLI_DRAW[] PROGMEM = "draw"; // draw +const char CLI_SCRIPT[] PROGMEM = "script"; // script +const char CLI_STARTAP[] PROGMEM = "startap"; // startap +const char CLI_STOPAP[] PROGMEM = "stopap"; // stopap +const char CLI_RENAME[] PROGMEM = "rename"; // rename +const char CLI_COPY[] PROGMEM = "copy"; // copy +const char CLI_ENABLE[] PROGMEM = "enable/d"; // enable, enabled +const char CLI_DISABLE[] PROGMEM = "disable/d"; // disable, disabled +const char CLI_WPA2[] PROGMEM = "wpa/2,-wpa/2"; // wpa, wpa2, -wpa, -wpa2 +const char CLI_ATTACK[] PROGMEM = "attack/s"; // attack, attacks +const char CLI_CHICKEN[] PROGMEM = "chicken/s"; // chicken, chickens +const char CLI_SETTING[] PROGMEM = "setting/s"; // setting, settings +const char CLI_ID[] PROGMEM = "id,-i/d"; // id, -i, -id +const char CLI_ALL[] PROGMEM = "all,-a"; // all, -a +const char CLI_TIME[] PROGMEM = "time,-t"; // time, -t +const char CLI_CONTINUE[] PROGMEM = "continue,-c"; // continue, -c +const char CLI_CHANNEL[] PROGMEM = "channel,-ch"; // channel, -ch +const char CLI_MAC[] PROGMEM = "mac,-m"; // mac, -m +const char CLI_BSSID[] PROGMEM = "bssid,-b"; // bssid, -b +const char CLI_BEACON[] PROGMEM = "beacon,-b"; // bssid, -b +const char CLI_DEAUTH[] PROGMEM = "deauth,-d"; // deauth, -d +const char CLI_DEAUTHALL[] PROGMEM = "deauthall,-da"; // deauthall, -da +const char CLI_PROBE[] PROGMEM = "probe,-p"; // probe, -p +const char CLI_NOOUTPUT[] PROGMEM = "nooutput,-no"; // nooutput, -no +const char CLI_FORCE[] PROGMEM = "force,-f"; // force, -f +const char CLI_TIMEOUT[] PROGMEM = "timeout,-t"; // timeout, -t +const char CLI_WIFI[] PROGMEM = "wifi,-w"; // wifi, -w +const char CLI_CLONES[] PROGMEM = "clones,-cl"; // clones, -cl +const char CLI_PATH[] PROGMEM = "path,-p"; // path, -p +const char CLI_PASSWORD[] PROGMEM = "password,-ps/wd"; // password, -ps, -pswd +const char CLI_HIDDEN[] PROGMEM = "hidden,-h"; // hidden, -h +const char CLI_CAPTIVEPORTAL[] PROGMEM = "captiveportal,-cp"; // captiveportal, -cp +const char CLI_SELECT[] PROGMEM = "select/ed,-s"; // select, selected, -s +const char CLI_SSID[] PROGMEM = "ssid/s,-s/s"; // ssid, ssids, -s, -ss +const char CLI_AP[] PROGMEM = "ap/s,-ap/s"; // ap, aps, -ap, -aps +const char CLI_STATION[] PROGMEM = "station/s,-st"; // station, stations, -st +const char CLI_NAME[] PROGMEM = "name/s,-n"; // name, names, -n +const char CLI_LINE[] PROGMEM = "line/s,-l"; // line, lines, -l +const char CLI_COMMENT[] PROGMEM = "//"; // // +const char CLI_SCREEN[] PROGMEM = "screen"; // screen +const char CLI_MODE[] PROGMEM = "mode,-m"; // mode +const char CLI_MODE_BUTTONTEST[] PROGMEM = "buttontest"; // buttontest +const char CLI_MODE_PACKETMONITOR[] PROGMEM = "packetmonitor"; // packetmonitor +const char CLI_MODE_LOADINGSCREEN[] PROGMEM = "loadingscreen"; // loading +const char CLI_MODE_MENU[] PROGMEM = "menu"; // menu -static const char CLI_HELP_HELP[] PROGMEM = "help"; -static const char CLI_HELP_SCAN[] PROGMEM = "scan [] [-t