From 92a62f4bdc6c98d83cbe1b41bfa0601374287963 Mon Sep 17 00:00:00 2001 From: Stefan Kremser Date: Mon, 2 Apr 2018 22:44:27 +0200 Subject: [PATCH] Added Settining serialEcho --- esp8266_deauther/SerialInterface.cpp | 11 ++- esp8266_deauther/Settings.cpp | 133 +++++++++++++++------------ esp8266_deauther/Settings.h | 5 +- esp8266_deauther/language.h | 1 + settings.md | 15 ++- web_interface/lang/de.lang | 1 + web_interface/lang/en.lang | 1 + web_interface/settings.json | 1 + 8 files changed, 98 insertions(+), 70 deletions(-) diff --git a/esp8266_deauther/SerialInterface.cpp b/esp8266_deauther/SerialInterface.cpp index 0d918c0..163cc2a 100644 --- a/esp8266_deauther/SerialInterface.cpp +++ b/esp8266_deauther/SerialInterface.cpp @@ -90,7 +90,8 @@ void SerialInterface::stopScript() { void SerialInterface::update() { if (executing) { - if (execPath.charAt(0) != SLASH) execPath = SLASH + execPath; + if (execPath.charAt(0) != SLASH) + execPath = SLASH + execPath; prnt(CLI_EXECUTING); prntln(execPath); File f = SPIFFS.open(execPath, "r"); @@ -198,9 +199,11 @@ void SerialInterface::runCommand(String input) { return; } - // print command - prnt(CLI_INPUT_PREFIX); - prntln(input); + if(settings.getSerialEcho()){ + // print command + prnt(CLI_INPUT_PREFIX); + prntln(input); + } if (list->size() == 0) return; diff --git a/esp8266_deauther/Settings.cpp b/esp8266_deauther/Settings.cpp index a164161..f6f97bf 100644 --- a/esp8266_deauther/Settings.cpp +++ b/esp8266_deauther/Settings.cpp @@ -28,12 +28,13 @@ void Settings::load() { if(data.containsKey(keyword(S_DISPLAYINTERFACE))) setDisplayInterface(data.get(keyword(S_DISPLAYINTERFACE))); if(data.containsKey(keyword(S_DISPLAY_TIMEOUT))) setDisplayTimeout(data.get(keyword(S_DISPLAY_TIMEOUT))); if(data.containsKey(keyword(S_SERIALINTERFACE))) setSerialInterface(data.get(keyword(S_SERIALINTERFACE))); + if(data.containsKey(keyword(S_SERIAL_ECHO))) setSerialEcho(data.get(keyword(S_SERIAL_ECHO))); if(data.containsKey(keyword(S_WEBINTERFACE))) setWebInterface(data.get(keyword(S_WEBINTERFACE))); if(data.containsKey(keyword(S_LEDENABLED))) setLedEnabled(data.get(keyword(S_LEDENABLED))); if(data.containsKey(keyword(S_MAXCH))) setMaxCh(data.get(keyword(S_MAXCH))); if(data.containsKey(keyword(S_MACAP))) setMacAP(data.get(keyword(S_MACAP))); if(data.containsKey(keyword(S_MACST))) setMacSt(data.get(keyword(S_MACST))); - + // SCAN if(data.containsKey(keyword(S_CHTIME))) setChTime(data.get(keyword(S_CHTIME))); if(data.containsKey(keyword(S_MIN_DEAUTHS))) setMinDeauths(data.get(keyword(S_MIN_DEAUTHS))); @@ -86,12 +87,13 @@ void Settings::reset() { setDisplayInterface(USE_DISPLAY); setDisplayTimeout(600); setSerialInterface(true); + serialEcho = true; setWebInterface(true); setLedEnabled(true); setMaxCh(14); wifi_get_macaddr(0x00, macSt); wifi_get_macaddr(0x01, macAP); - + // SCAN setChTime(384); setMinDeauths(3); @@ -130,6 +132,7 @@ String Settings::getJsonStr() { data.set(keyword(S_DISPLAYINTERFACE), displayInterface); data.set(keyword(S_DISPLAY_TIMEOUT), displayTimeout); data.set(keyword(S_SERIALINTERFACE), serialInterface); + data.set(keyword(S_SERIAL_ECHO), serialEcho); data.set(keyword(S_WEBINTERFACE), webInterface); data.set(keyword(S_LEDENABLED), ledEnabled); data.set(keyword(S_MAXCH), maxCh); @@ -188,42 +191,43 @@ void Settings::print() { void Settings::set(const char* str, String value) { // booleans - if (eqls(str,S_BEACONCHANNEL)) setBeaconChannel(eqls(value,STR_TRUE)); - else if (eqls(str,S_AUTOSAVE)) setAutosave(eqls(value,STR_TRUE)); - else if (eqls(str,S_BEACONINTERVAL)) setBeaconInterval(eqls(value,STR_TRUE)); - else if (eqls(str,S_SERIALINTERFACE)) setSerialInterface(eqls(value,STR_TRUE)); - else if (eqls(str,S_DISPLAYINTERFACE)) setDisplayInterface(eqls(value,STR_TRUE)); - else if (eqls(str,S_WEBINTERFACE)) setWebInterface(eqls(value,STR_TRUE)); - else if (eqls(str,S_RANDOMTX)) setRandomTX(eqls(value,STR_TRUE)); - else if (eqls(str,S_LEDENABLED)) setLedEnabled(eqls(value,STR_TRUE)); - else if (eqls(str,S_HIDDEN)) setHidden(eqls(value,STR_TRUE)); - else if (eqls(str,S_CAPTIVEPORTAL)) setCaptivePortal(eqls(value,STR_TRUE)); - + if (eqls(str, S_BEACONCHANNEL)) setBeaconChannel(s2b(value)); + else if (eqls(str, S_AUTOSAVE)) setAutosave(s2b(value)); + else if (eqls(str, S_BEACONINTERVAL)) setBeaconInterval(s2b(value)); + else if (eqls(str, S_SERIALINTERFACE)) setSerialInterface(s2b(value)); + else if (eqls(str, S_DISPLAYINTERFACE)) setDisplayInterface(s2b(value)); + else if (eqls(str, S_WEBINTERFACE)) setWebInterface(s2b(value)); + else if (eqls(str, S_RANDOMTX)) setRandomTX(s2b(value)); + else if (eqls(str, S_LEDENABLED)) setLedEnabled(s2b(value)); + else if (eqls(str, S_HIDDEN)) setHidden(s2b(value)); + else if (eqls(str, S_CAPTIVEPORTAL)) setCaptivePortal(s2b(value)); + else if (eqls(str, S_SERIAL_ECHO)) setSerialEcho(s2b(value)); + // integer - else if (eqls(str,S_FORCEPACKETS)) setForcePackets(value.toInt()); - else if (eqls(str,S_AUTOSAVETIME)) setAutosaveTime(value.toInt()); - else if (eqls(str,S_DEAUTHSPERTARGET)) setDeauthsPerTarget(value.toInt()); - else if (eqls(str,S_CHTIME)) setChTime(value.toInt()); - else if (eqls(str,S_MAXCH)) setMaxCh(value.toInt()); - else if (eqls(str,S_CHANNEL)) setChannel(value.toInt()); - else if (eqls(str,S_DEAUTHREASON)) setDeauthReason(value.toInt()); - else if (eqls(str,S_ATTACKTIMEOUT)) setAttackTimeout(value.toInt()); - else if (eqls(str,S_PROBESPERSSID)) setProbesPerSSID(value.toInt()); - else if (eqls(str,S_MIN_DEAUTHS)) setMinDeauths(value.toInt()); - else if (eqls(str,S_DISPLAY_TIMEOUT)) setDisplayTimeout(value.toInt()); + else if (eqls(str, S_FORCEPACKETS)) setForcePackets(value.toInt()); + else if (eqls(str, S_AUTOSAVETIME)) setAutosaveTime(value.toInt()); + else if (eqls(str, S_DEAUTHSPERTARGET)) setDeauthsPerTarget(value.toInt()); + else if (eqls(str, S_CHTIME)) setChTime(value.toInt()); + else if (eqls(str, S_MAXCH)) setMaxCh(value.toInt()); + else if (eqls(str, S_CHANNEL)) setChannel(value.toInt()); + else if (eqls(str, S_DEAUTHREASON)) setDeauthReason(value.toInt()); + else if (eqls(str, S_ATTACKTIMEOUT)) setAttackTimeout(value.toInt()); + else if (eqls(str, S_PROBESPERSSID)) setProbesPerSSID(value.toInt()); + else if (eqls(str, S_MIN_DEAUTHS)) setMinDeauths(value.toInt()); + else if (eqls(str, S_DISPLAY_TIMEOUT)) setDisplayTimeout(value.toInt()); // strings - else if (eqls(str,S_LANG)) setLang(value); - else if (eqls(str,S_SSID)) setSSID(value); - else if (eqls(str,S_PASSWORD)) setPassword(value); - else if (eqls(str,S_MACAP)) setMacAP(value); - else if (eqls(str,S_MACST)) setMacSt(value); - else if (eqls(str,S_MAC) && value.equalsIgnoreCase("random")){ + else if (eqls(str, S_LANG)) setLang(value); + else if (eqls(str, S_SSID)) setSSID(value); + else if (eqls(str, S_PASSWORD)) setPassword(value); + else if (eqls(str, S_MACAP)) setMacAP(value); + else if (eqls(str, S_MACST)) setMacSt(value); + else if (eqls(str, S_MAC) && value.equalsIgnoreCase("random")){ setMacSt(value); setMacAP(value); } - else if (eqls(str,S_VERSION)) prntln(S_ERROR_VERSION); + else if (eqls(str, S_VERSION)) prntln(S_ERROR_VERSION); else { prnt(S_ERROR_NOT_FOUND); @@ -236,40 +240,41 @@ void Settings::set(const char* str, String value) { } String Settings::get(const char* str) { - if (eqls(str,S_SETTINGS)) print(); + if (eqls(str, S_SETTINGS)) print(); // booleans - else if (eqls(str,S_BEACONCHANNEL)) return b2s(getBeaconChannel()); - else if (eqls(str,S_AUTOSAVE)) return b2s(getAutosave()); - else if (eqls(str,S_BEACONINTERVAL)) return b2s(getBeaconInterval()); - else if (eqls(str,S_SERIALINTERFACE)) return b2s(getSerialInterface()); - else if (eqls(str,S_DISPLAYINTERFACE)) return b2s(getDisplayInterface()); - else if (eqls(str,S_WEBINTERFACE)) return b2s(getWebInterface()); - else if (eqls(str,S_RANDOMTX)) return b2s(getRandomTX()); - else if (eqls(str,S_LEDENABLED)) return b2s(getLedEnabled()); - else if (eqls(str,S_HIDDEN)) return b2s(getHidden()); - else if (eqls(str,S_CAPTIVEPORTAL)) return b2s(getCaptivePortal()); + else if (eqls(str, S_BEACONCHANNEL)) return b2s(beaconChannel); + else if (eqls(str, S_AUTOSAVE)) return b2s(autosave); + else if (eqls(str, S_BEACONINTERVAL)) return b2s(beaconInterval); + else if (eqls(str, S_SERIALINTERFACE)) return b2s(serialInterface); + else if (eqls(str, S_DISPLAYINTERFACE)) return b2s(displayInterface); + else if (eqls(str, S_WEBINTERFACE)) return b2s(webInterface); + else if (eqls(str, S_RANDOMTX)) return b2s(randomTX); + else if (eqls(str, S_LEDENABLED)) return b2s(ledEnabled); + else if (eqls(str, S_HIDDEN)) return b2s(hidden); + else if (eqls(str, S_CAPTIVEPORTAL)) return b2s(captivePortal); + else if (eqls(str, S_SERIAL_ECHO)) return b2s(serialEcho); // integer - else if (eqls(str,S_FORCEPACKETS)) return (String)getForcePackets(); - else if (eqls(str,S_AUTOSAVETIME)) return (String)getAutosaveTime(); - else if (eqls(str,S_DEAUTHSPERTARGET)) return (String)getDeauthsPerTarget(); - else if (eqls(str,S_CHTIME)) return (String)getChTime(); - else if (eqls(str,S_ATTACKTIMEOUT)) return (String)getAttackTimeout(); - else if (eqls(str,S_MAXCH)) return (String)getMaxCh(); - else if (eqls(str,S_CHANNEL)) return (String)getChannel(); - else if (eqls(str,S_DEAUTHREASON)) return (String)getDeauthReason(); - else if (eqls(str,S_PROBESPERSSID)) return (String)getProbesPerSSID(); - else if (eqls(str,S_MIN_DEAUTHS)) return (String)getMinDeauths(); - else if (eqls(str,S_DISPLAY_TIMEOUT)) return (String)getDisplayTimeout(); + else if (eqls(str, S_FORCEPACKETS)) return (String)forcePackets; + else if (eqls(str, S_AUTOSAVETIME)) return (String)autosaveTime; + else if (eqls(str, S_DEAUTHSPERTARGET)) return (String)deauthsPerTarget; + else if (eqls(str, S_CHTIME)) return (String)chTime; + else if (eqls(str, S_ATTACKTIMEOUT)) return (String)attackTimeout; + else if (eqls(str, S_MAXCH)) return (String)maxCh; + else if (eqls(str, S_CHANNEL)) return (String)channel; + else if (eqls(str, S_DEAUTHREASON)) return (String)deauthReason; + else if (eqls(str, S_PROBESPERSSID)) return (String)probesPerSSID; + else if (eqls(str, S_MIN_DEAUTHS)) return (String)minDeauths; + else if (eqls(str, S_DISPLAY_TIMEOUT)) return (String)displayTimeout; // strings - else if (eqls(str,S_SSID)) return getSSID(); - else if (eqls(str,S_LANG)) return getLang(); - else if (eqls(str,S_PASSWORD)) return getPassword(); - else if (eqls(str,S_MACAP)) return macToStr(getMacAP()); - else if (eqls(str,S_MACST)) return macToStr(getMacSt()); - else if (eqls(str,S_MAC)) return "AP: " + macToStr(getMacAP()) + ", Station: " + macToStr(getMacSt()); - else if (eqls(str,S_VERSION)) return getVersion(); + else if (eqls(str, S_SSID)) return ssid; + else if (eqls(str, S_LANG)) return lang; + else if (eqls(str, S_PASSWORD)) return password; + else if (eqls(str, S_MACAP)) return macToStr(getMacAP()); + else if (eqls(str, S_MACST)) return macToStr(getMacSt()); + else if (eqls(str, S_MAC)) return "AP: " + macToStr(macAP) + ", Station: " + macToStr(macSt); + else if (eqls(str, S_VERSION)) return version; else { prnt(S_ERROR_NOT_FOUND); @@ -388,6 +393,10 @@ String Settings::getLang(){ return lang; } +bool Settings::getSerialEcho(){ + return serialEcho; +} + // ===== SETTERS ===== // void Settings::setDeauthsPerTarget(uint16_t deauthsPerTarget) { @@ -572,4 +581,8 @@ void Settings::setLang(String lang){ changed = true; } +void Settings::setSerialEcho(bool serialEcho){ + Settings::serialEcho = serialEcho; + changed = true; +} diff --git a/esp8266_deauther/Settings.h b/esp8266_deauther/Settings.h index cdb10bf..389287e 100644 --- a/esp8266_deauther/Settings.h +++ b/esp8266_deauther/Settings.h @@ -10,7 +10,7 @@ extern "C" { #include "language.h" #include "A_config.h" -#define VERSION "v2.0.1" +#define VERSION "v2.0.2" extern void checkFile(String path, String data); extern JsonVariant parseJSONFile(String path, DynamicJsonBuffer &jsonBuffer); @@ -63,6 +63,7 @@ class Settings { uint16_t getMinDeauths(); uint32_t getDisplayTimeout(); String getLang(); + bool getSerialEcho(); void setDeauthsPerTarget(uint16_t deauthsPerTarget); void setDeauthReason(uint8_t deauthReason); @@ -92,6 +93,7 @@ class Settings { void setMinDeauths(uint16_t minDeauths); void setDisplayTimeout(uint32_t displayTimeout); void setLang(String lang); + void setSerialEcho(bool serialEcho); private: bool changed = false; @@ -105,6 +107,7 @@ class Settings { bool webInterface = true; bool randomTX = false; bool ledEnabled = true; + bool serialEcho = true; uint32_t attackTimeout = 600; uint32_t autosaveTime = 10000; diff --git a/esp8266_deauther/language.h b/esp8266_deauther/language.h index 5d95d93..a2305df 100644 --- a/esp8266_deauther/language.h +++ b/esp8266_deauther/language.h @@ -469,6 +469,7 @@ static const char S_SSID[] PROGMEM = "ssid"; static const char S_MAC[] PROGMEM = "mac"; static const char S_MIN_DEAUTHS[] PROGMEM = "minDeauths"; static const char S_DISPLAY_TIMEOUT[] PROGMEM = "displayTimeout"; +static const char S_SERIAL_ECHO[] PROGMEM = "serialEcho"; static const char S_SETTINGS_LOADED[] PROGMEM = "Settings loaded from "; static const char S_SETTINGS_RESETED[] PROGMEM = "Settings reseted"; diff --git a/settings.md b/settings.md index 10f2e50..5b2d82f 100644 --- a/settings.md +++ b/settings.md @@ -3,21 +3,22 @@ - [`ssid`](#ssid) - [`password`](#password) - [`channel`](#channel) - - [`hidden`](#HIDDEN) - - [`captivePortal`](#CAPTIVEPORTAL) + - [`hidden`](#hidden) + - [`captivePortal`](#captiveportal) - [`lang`](#lang) - [`autosave`](#autosave) - [`autosaveTime`](#autosave-time) - [`displayInterface`](#display-interface) - - [`displayTimeout`](#DISPLAYTIMEOUT) + - [`displayTimeout`](#displaytimeout) - [`serialInterface`](#serial-interface) + - [`serialEcho`](#serial-echo) - [`webInterface`](#web-interface) - [`ledEnabled`](#ledEnabled) - [`maxCh`](#max-ch) - [`macAP`](#macap) - [`macSt`](#macst) - [`chTime`](#ch-time) - - [`minDeauths`](#MINDEAUTHS) + - [`minDeauths`](#mindeauths) - [`attackTimeout`](#attacktimeout) - [`forcePackets`](#force-packets) - [`deauthsPerTarget`](#deauths-per-target) @@ -25,7 +26,7 @@ - [`beaconChannel`](#beacon-channel) - [`beaconInterval`](#beacon-interval) - [`randomTx`](#randomtx) - - [`probesPerSSID`](#PROBESPERSSID) + - [`probesPerSSID`](#probesperssid) ## VERSION `String version = VERSION;` @@ -80,6 +81,10 @@ To disable the display timeout, set it to 0. `bool serialInterface = true;` Enables serial interface. +## SERIAL-ECHO +`bool serialEcho = true` +Enables echo for each incoming message over serial. + ## WEB-INTERFACE `bool webInterface = false;` Enables web interface. diff --git a/web_interface/lang/de.lang b/web_interface/lang/de.lang index c831c3e..0a8f1f2 100644 --- a/web_interface/lang/de.lang +++ b/web_interface/lang/de.lang @@ -53,6 +53,7 @@ "setting_display": "Aktiviert Display-Interface.", "setting_displayTimeout": "Zeit in Sekunden nachdem der Display automatisch ausschaltet, wenn inaktiv.\nZum Deaktivieren des Timeouts, setze es auf 0.", "setting_serial": "Aktiviere Serial-Interface.\nEs wird empfohlen es immer aktiviert zu lassen!", + "setting_serialEcho": "Erlaubt Echo für jede Nachricht über die serielle Verbindung.", "setting_web": "Aktiviert Webinterface.", "setting_led": "Aktiviert (RGB) LED.", "setting_maxch": "Max. Kanal zum Scannen.\nUS = 11, EU = 13, Japan = 14.", diff --git a/web_interface/lang/en.lang b/web_interface/lang/en.lang index 42926d4..42fae87 100644 --- a/web_interface/lang/en.lang +++ b/web_interface/lang/en.lang @@ -53,6 +53,7 @@ "setting_display": "Enables display interface.", "setting_displayTimeout": "Time in seconds after which the display turns off when inactive.\nTo disable the display timeout, set it to 0.", "setting_serial": "Enables serial interface.\nIt's recommended not to disable it!", + "setting_serialEcho": "Enables echo for each incoming message over serial.", "setting_web": "Enables web interface.", "setting_led": "Enables the (RGB) LED feature.", "setting_maxch": "Max. channel to scan on.\nUS = 11, EU = 13, Japan = 14.", diff --git a/web_interface/settings.json b/web_interface/settings.json index b151408..2327672 100644 --- a/web_interface/settings.json +++ b/web_interface/settings.json @@ -11,6 +11,7 @@ "display":false, "displayTimeout":600, "serial":true, + "serialEcho":true, "web":true, "led":true, "maxch":14,