Deauth with evil portal

This commit is contained in:
Just Call Me Koko
2025-07-23 18:51:25 -04:00
parent fd1a34e567
commit 1398dbe00d
5 changed files with 81 additions and 41 deletions
+3 -2
View File
@@ -1540,7 +1540,7 @@ void MenuFunctions::updateStatusBar()
}
// Force PMKID stuff
if (wifi_scan_obj.force_pmkid) {
if ((wifi_scan_obj.force_pmkid) || (wifi_scan_obj.ep_deauth)) {
#ifdef HAS_FULL_SCREEN
display_obj.tft.drawXBitmap(170 - (16 * 2),
0,
@@ -1732,7 +1732,7 @@ void MenuFunctions::drawStatusBar()
}
// Force PMKID stuff
if (wifi_scan_obj.force_pmkid) {
if ((wifi_scan_obj.force_pmkid) || (wifi_scan_obj.ep_deauth)) {
#ifdef HAS_FULL_SCREEN
display_obj.tft.drawXBitmap(170 - (16 * 2),
0,
@@ -3140,6 +3140,7 @@ void MenuFunctions::RunSetup()
wifi_scan_obj.force_pmkid = settings_obj.loadSetting<bool>(text_table4[5]);
wifi_scan_obj.force_probe = settings_obj.loadSetting<bool>(text_table4[6]);
wifi_scan_obj.save_pcap = settings_obj.loadSetting<bool>(text_table4[7]);
wifi_scan_obj.ep_deauth = settings_obj.loadSetting<bool>("EPDeauth");
}, settings_obj.loadSetting<bool>(settings_obj.setting_index_to_name(i)));
}
+11
View File
@@ -855,6 +855,7 @@ void WiFiScan::initWiFi(uint8_t scan_mode) {
this->force_pmkid = settings_obj.loadSetting<bool>(text_table4[5]);
this->force_probe = settings_obj.loadSetting<bool>(text_table4[6]);
this->save_pcap = settings_obj.loadSetting<bool>(text_table4[7]);
this->ep_deauth = settings_obj.loadSetting<bool>("EPDeauth");
//Serial.println(F("Initialization complete"));
}
}
@@ -7575,6 +7576,16 @@ void WiFiScan::main(uint32_t currentTime)
}
}
else if (currentScanMode == WIFI_SCAN_EVIL_PORTAL) {
if (currentTime - initTime >= this->channel_hop_delay * HOP_DELAY) {
initTime = millis();
if (this->ep_deauth) {
for (int i = 0; i < access_points->size(); i++) {
if (access_points->get(i).selected) {
this->sendDeauthFrame(access_points->get(i).bssid, access_points->get(i).channel);
}
}
}
}
evil_portal_obj.main(currentScanMode);
}
else if (currentScanMode == WIFI_PACKET_MONITOR)
+1
View File
@@ -500,6 +500,7 @@ class WiFiScan
bool force_pmkid = false;
bool force_probe = false;
bool save_pcap = false;
bool ep_deauth = false;
String analyzer_name_string = "";
+65 -38
View File
@@ -91,7 +91,7 @@ bool Settings::loadSetting<bool>(String key) {
DynamicJsonDocument json(1024); // ArduinoJson v6
if (deserializeJson(json, this->json_settings_string)) {
Serial.println("\nCould not parse json");
Serial.println("Could not parse json to load");
}
for (int i = 0; i < json["Settings"].size(); i++) {
@@ -99,6 +99,10 @@ bool Settings::loadSetting<bool>(String key) {
return json["Settings"][i]["value"];
}
Serial.println("Did not find setting named " + (String)key + ". Creating...");
if (this->createDefaultSettings(SPIFFS, true, json["Settings"].size(), "bool", key))
return true;
return false;
}
@@ -239,7 +243,7 @@ void Settings::printJsonSettings(String json_string) {
}
}
bool Settings::createDefaultSettings(fs::FS &fs) {
bool Settings::createDefaultSettings(fs::FS &fs, bool spec, uint8_t index, String typeStr, String name) {
Serial.println(F("Creating default settings file: settings.json"));
File settingsFile = fs.open("/settings.json", FILE_WRITE);
@@ -249,51 +253,74 @@ bool Settings::createDefaultSettings(fs::FS &fs) {
return false;
}
DynamicJsonDocument jsonBuffer(1024);
String settings_string;
//jsonBuffer["Settings"][0]["name"] = "Channel";
//jsonBuffer["Settings"][0]["type"] = "uint8_t";
//jsonBuffer["Settings"][0]["value"] = 11;
//jsonBuffer["Settings"][0]["range"]["min"] = 1;
//jsonBuffer["Settings"][0]["range"]["max"] = 14;
if (!spec) {
DynamicJsonDocument jsonBuffer(1024);
//jsonBuffer["Settings"][1]["name"] = "Channel Hop Delay";
//jsonBuffer["Settings"][1]["type"] = "int";
//jsonBuffer["Settings"][1]["value"] = 1;
//jsonBuffer["Settings"][1]["range"]["min"] = 1;
//jsonBuffer["Settings"][1]["range"]["max"] = 10;
jsonBuffer["Settings"][0]["name"] = "ForcePMKID";
jsonBuffer["Settings"][0]["type"] = "bool";
jsonBuffer["Settings"][0]["value"] = false;
jsonBuffer["Settings"][0]["range"]["min"] = false;
jsonBuffer["Settings"][0]["range"]["max"] = true;
jsonBuffer["Settings"][0]["name"] = "ForcePMKID";
jsonBuffer["Settings"][0]["type"] = "bool";
jsonBuffer["Settings"][0]["value"] = true;
jsonBuffer["Settings"][0]["range"]["min"] = false;
jsonBuffer["Settings"][0]["range"]["max"] = true;
jsonBuffer["Settings"][1]["name"] = "ForceProbe";
jsonBuffer["Settings"][1]["type"] = "bool";
jsonBuffer["Settings"][1]["value"] = false;
jsonBuffer["Settings"][1]["range"]["min"] = false;
jsonBuffer["Settings"][1]["range"]["max"] = true;
jsonBuffer["Settings"][1]["name"] = "ForceProbe";
jsonBuffer["Settings"][1]["type"] = "bool";
jsonBuffer["Settings"][1]["value"] = true;
jsonBuffer["Settings"][1]["range"]["min"] = false;
jsonBuffer["Settings"][1]["range"]["max"] = true;
jsonBuffer["Settings"][2]["name"] = "SavePCAP";
jsonBuffer["Settings"][2]["type"] = "bool";
jsonBuffer["Settings"][2]["value"] = true;
jsonBuffer["Settings"][2]["range"]["min"] = false;
jsonBuffer["Settings"][2]["range"]["max"] = true;
jsonBuffer["Settings"][2]["name"] = "SavePCAP";
jsonBuffer["Settings"][2]["type"] = "bool";
jsonBuffer["Settings"][2]["value"] = true;
jsonBuffer["Settings"][2]["range"]["min"] = false;
jsonBuffer["Settings"][2]["range"]["max"] = true;
jsonBuffer["Settings"][3]["name"] = "EnableLED";
jsonBuffer["Settings"][3]["type"] = "bool";
jsonBuffer["Settings"][3]["value"] = true;
jsonBuffer["Settings"][3]["range"]["min"] = false;
jsonBuffer["Settings"][3]["range"]["max"] = true;
jsonBuffer["Settings"][3]["name"] = "EnableLED";
jsonBuffer["Settings"][3]["type"] = "bool";
jsonBuffer["Settings"][3]["value"] = true;
jsonBuffer["Settings"][3]["range"]["min"] = false;
jsonBuffer["Settings"][3]["range"]["max"] = true;
jsonBuffer["Settings"][4]["name"] = "EPDeauth";
jsonBuffer["Settings"][4]["type"] = "bool";
jsonBuffer["Settings"][4]["value"] = false;
jsonBuffer["Settings"][4]["range"]["min"] = false;
jsonBuffer["Settings"][4]["range"]["max"] = true;
//jsonBuffer.printTo(settingsFile);
if (serializeJson(jsonBuffer, settingsFile) == 0) {
Serial.println(F("Failed to write to file"));
//jsonBuffer.printTo(settingsFile);
if (serializeJson(jsonBuffer, settingsFile) == 0) {
Serial.println(F("Failed to write to file"));
}
if (serializeJson(jsonBuffer, settings_string) == 0) {
Serial.println(F("Failed to write to string"));
}
}
if (serializeJson(jsonBuffer, settings_string) == 0) {
Serial.println(F("Failed to write to string"));
else {
DynamicJsonDocument json(1024); // ArduinoJson v6
if (deserializeJson(json, this->json_settings_string)) {
Serial.println("Could not parse json to create new setting");
return false;
}
if (typeStr == "bool") {
Serial.println("Creating bool setting...");
json["Settings"][index]["name"] = name;
json["Settings"][index]["type"] = typeStr;
json["Settings"][index]["value"] = false;
json["Settings"][index]["range"]["min"] = false;
json["Settings"][index]["range"]["max"] = true;
if (serializeJson(json, settings_string) == 0) {
Serial.println("Failed to write to string");
}
if (serializeJson(json, settingsFile) == 0) {
Serial.println("Failed to write to file");
}
}
}
// Close the file
+1 -1
View File
@@ -49,7 +49,7 @@ class Settings {
//uint8_t loadSetting<uint8_t>(String key);
String getSettingsString();
bool createDefaultSettings(fs::FS &fs);
bool createDefaultSettings(fs::FS &fs, bool spec = false, uint8_t index = 0, String typeStr = "bool", String name = "");
void printJsonSettings(String json_string);
void main(uint32_t currentTime);
};