Compare commits

..

26 Commits

Author SHA1 Message Date
Just Call Me Koko
0196c00220 Merge pull request #1065 from justcallmekoko/develop
Add SAE sniff and SAE spam attack
2026-01-19 20:24:55 -05:00
Just Call Me Koko
af9938f8eb Merge pull request #1059 from justcallmekoko/develop
Capture and parse SAE commit frames
2026-01-17 10:26:37 -05:00
Just Call Me Koko
0ba3d0f60a Merge pull request #1056 from justcallmekoko/develop
Remove v7.1 from build list
2026-01-15 16:47:16 -05:00
Just Call Me Koko
140668448f Merge pull request #1055 from justcallmekoko/develop
Remove continuous BT wardrive
2026-01-14 10:03:10 -05:00
Just Call Me Koko
961bcb6cf5 Merge pull request #1052 from justcallmekoko/develop
Fix PCAPs not saving for MAC tracker
2026-01-13 15:42:46 -05:00
Just Call Me Koko
774d5f0707 Merge pull request #1050 from justcallmekoko/develop
Update Sour Apple
2026-01-13 08:13:54 -05:00
Just Call Me Koko
07a684a03e Merge pull request #1045 from justcallmekoko/develop
Following MACs save PCAPs
2026-01-11 14:24:16 -05:00
Just Call Me Koko
e3fe40ede0 Merge pull request #1043 from justcallmekoko/develop
Fix distance threshold
2026-01-11 00:39:49 -05:00
Just Call Me Koko
8e0ed07483 Merge pull request #1042 from justcallmekoko/develop
Oopsie
2026-01-09 23:02:25 -05:00
Just Call Me Koko
249ba6eabe Merge pull request #1041 from justcallmekoko/develop
MAC track BLE and revamp wardrive UI
2026-01-09 17:41:00 -05:00
Just Call Me Koko
88762063ff Merge pull request #1040 from justcallmekoko/develop
Add CLI command for MAC tracking
2026-01-08 12:45:44 -05:00
Just Call Me Koko
9d2a1ab3aa Merge pull request #1036 from justcallmekoko/develop
GPS now operates at 115200 baud
2026-01-07 17:51:54 -05:00
Just Call Me Koko
a20b25a39c Merge pull request #1034 from justcallmekoko/develop
Fix eviction criteria and work mini displays
2026-01-06 16:35:03 -05:00
Just Call Me Koko
a785a3b125 Merge pull request #1033 from justcallmekoko/develop
Add MAC tracking backend
2026-01-05 20:55:24 -05:00
Just Call Me Koko
380875d32f Merge pull request #1029 from justcallmekoko/develop
Update version number
2026-01-03 14:50:37 -05:00
Just Call Me Koko
d03c079080 Merge pull request #1028 from justcallmekoko/develop
Fix wardriving function on CLI
2026-01-03 14:29:58 -05:00
Just Call Me Koko
8ef5cf3b92 Merge pull request #1015 from justcallmekoko/develop
Faster display buffer
2025-12-13 14:48:34 -05:00
Just Call Me Koko
1dd5502c1d Merge pull request #1012 from justcallmekoko/develop
Fix crash during BT wardrive
2025-12-12 18:11:10 -05:00
Just Call Me Koko
f5375eedaf Merge pull request #1006 from justcallmekoko/develop
Wardriving is asynchronous now
2025-12-08 16:45:31 -05:00
Just Call Me Koko
86e2fb206a Merge pull request #1005 from justcallmekoko/develop
Add wifi to flock wardrive
2025-12-08 15:10:53 -05:00
Just Call Me Koko
1d419605f7 Merge pull request #1001 from justcallmekoko/develop
Fix menu navigation for back button
2025-12-04 18:36:50 -05:00
Just Call Me Koko
dfd556da30 Merge pull request #999 from justcallmekoko/develop
Update NimBLE version in actions
2025-12-02 01:09:42 -05:00
Just Call Me Koko
03623e2985 Merge pull request #998 from justcallmekoko/develop
Update arduino esp32
2025-12-02 00:14:12 -05:00
Just Call Me Koko
4e7f48a036 Merge pull request #997 from justcallmekoko/develop
Add 5ghz channels for c5 packet injection
2025-12-01 18:44:52 -05:00
Just Call Me Koko
722b9ad88e Merge pull request #996 from justcallmekoko/develop
Merge develop
2025-12-01 01:44:59 -05:00
Just Call Me Koko
0a5e200294 Merge pull request #990 from justcallmekoko/develop
Add Flock wardriving
2025-11-24 13:27:21 -05:00
6 changed files with 113 additions and 188 deletions

View File

@@ -35,7 +35,7 @@ jobs:
- { name: "Marauder CYD 2432S028 2 USB", flag: "MARAUDER_CYD_2USB", fbqn: "esp32:esp32:d32:PartitionScheme=min_spiffs", file_name: "cyd_2432S028_2usb", tft: true, tft_file: "User_Setup_cyd_2usb.h", build_dir: "d32", addr: "0x1000", idf_ver: "2.0.11", nimble_ver: "1.3.8", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" }
- { name: "Marauder CYD 3.5inch", flag: "MARAUDER_CYD_3_5_INCH", fbqn: "esp32:esp32:d32:PartitionScheme=min_spiffs", file_name: "cyd_3_5_inch", tft: true, tft_file: "User_Setup_cyd_3_5_inch.h", build_dir: "d32", addr: "0x1000", idf_ver: "2.0.11", nimble_ver: "1.3.8", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" }
- { name: "M5Cardputer", flag: "MARAUDER_CARDPUTER", fbqn: "esp32:esp32:esp32s3:PartitionScheme=min_spiffs,FlashSize=8M,PSRAM=disabled", file_name: "m5cardputer", tft: true, tft_file: "User_Setup_marauder_m5cardputer.h", build_dir: "esp32s3", addr: "0x1000", idf_ver: "2.0.11", nimble_ver: "1.3.8", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" }
- { name: "ESP32-C5-DevKitC-1", flag: "MARAUDER_C5", fbqn: "esp32:esp32:esp32c5:FlashSize=8M,PartitionScheme=min_spiffs,PSRAM=enabled", file_name: "esp32c5devkitc1", tft: false, tft_file: "", build_dir: "esp32c5", addr: "0x2000", idf_ver: "3.3.4", nimble_ver: "master", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" }
- { name: "ESP32-C5-DevKitC-1", flag: "MARAUDER_C5", fbqn: "esp32:esp32:esp32c5:FlashSize=8M,PartitionScheme=min_spiffs,PSRAM=enabled", file_name: "esp32c5devkitc1", tft: false, tft_file: "", build_dir: "esp32c5", addr: "0x2000", idf_ver: "3.3.4", nimble_ver: "2.3.6", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" }
steps:
- name: Checkout Code

View File

@@ -240,7 +240,6 @@ void CommandLine::runCommand(String input) {
Serial.println(HELP_SNIFF_ESP_CMD);
Serial.println(HELP_SNIFF_DEAUTH_CMD);
Serial.println(HELP_SNIFF_PMKID_CMD);
Serial.println(HELP_SNIFF_SAE_CMD);
Serial.println(HELP_STOPSCAN_CMD);
#ifdef HAS_GPS
Serial.println(HELP_WARDRIVE_CMD);
@@ -325,8 +324,7 @@ void CommandLine::runCommand(String input) {
else if (cmd_args.get(0) == GPS_DATA_CMD) {
#ifdef HAS_GPS
if (gps_obj.getGpsModuleStatus()) {
Serial.print(F("Getting GPS Data. Stop with "));
Serial.println((String)STOPSCAN_CMD);
Serial.println("Getting GPS Data. Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.currentScanMode = WIFI_SCAN_GPS_DATA;
#ifdef HAS_SCREEN
menu_function_obj.changeMenu(&menu_function_obj.gpsInfoMenu);
@@ -391,8 +389,7 @@ void CommandLine::runCommand(String input) {
nmea_type="beidou_bd";
}
gps_obj.setType(nmea_type);
Serial.print(F("GPS Output Type Set To: "));
Serial.println(nmea_type);
Serial.println("GPS Output Type Set To: " + nmea_type);
}
else
Serial.println(F("You did not provide a valid argument"));
@@ -470,14 +467,12 @@ void CommandLine::runCommand(String input) {
int ch_set = this->argSearch(&cmd_args, "-s");
if (cmd_args.size() == 1) {
Serial.print(F("Current channel: "));
Serial.println(wifi_scan_obj.set_channel);
Serial.println("Current channel: " + (String)wifi_scan_obj.set_channel);
}
else if (ch_set != -1) {
wifi_scan_obj.set_channel = cmd_args.get(ch_set + 1).toInt();
wifi_scan_obj.changeChannel();
Serial.print(F("Set channel: "));
Serial.println(wifi_scan_obj.set_channel);
Serial.println("Set channel: " + (String)wifi_scan_obj.set_channel);
}
}
// Clear APs
@@ -535,8 +530,7 @@ void CommandLine::runCommand(String input) {
}
if (!result) {
Serial.print(F("Could not successfully update setting \""));
Serial.println(setting_name + "\"");
Serial.println("Could not successfully update setting \"" + setting_name + "\"");
return;
}
}
@@ -554,8 +548,7 @@ void CommandLine::runCommand(String input) {
// Signal strength scan
if (cmd_args.get(0) == SIGSTREN_CMD) {
Serial.print(F("Starting Signal Strength Scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Signal Strength Scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -565,8 +558,7 @@ void CommandLine::runCommand(String input) {
}
// Packet count
else if (cmd_args.get(0) == PACKET_COUNT_CMD) {
Serial.print(F("Starting Packet Count Scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Packet Count Scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -581,8 +573,7 @@ void CommandLine::runCommand(String input) {
int flk_sw = this->argSearch(&cmd_args, "-f");
if (flk_sw != -1) {
Serial.print(F("Starting Flock Wardrive. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Flock Wardrive. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -590,8 +581,7 @@ void CommandLine::runCommand(String input) {
wifi_scan_obj.StartScan(BT_SCAN_FLOCK_WARDRIVE, TFT_GREEN);
}
else if (sta_sw != -1) {
Serial.print(F("Starting Station Wardrive. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Station Wardrive. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -599,8 +589,7 @@ void CommandLine::runCommand(String input) {
wifi_scan_obj.StartScan(WIFI_SCAN_STATION_WAR_DRIVE, TFT_GREEN);
}
else {
Serial.print(F("Starting Wardrive. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Wardrive. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -631,10 +620,7 @@ void CommandLine::runCommand(String input) {
}
if (evil_portal_obj.setAP(probe_req_ssids->get(pr_index).essid)) {
Serial.print(F("Starting Karma Attack with "));
Serial.print(probe_req_ssids->get(pr_index).essid);
Serial.print(F(". Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Karma Attack with " + probe_req_ssids->get(pr_index).essid + ". Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -656,8 +642,7 @@ void CommandLine::runCommand(String input) {
if (cmd_sw != -1) {
String et_command = cmd_args.get(cmd_sw + 1);
if (et_command == "start") {
Serial.print(F("Starting Evil Portal. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Evil Portal. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -666,8 +651,7 @@ void CommandLine::runCommand(String input) {
String target_html_name = cmd_args.get(html_sw + 1);
evil_portal_obj.target_html_name = target_html_name;
evil_portal_obj.using_serial_html = false;
Serial.print(F("Set html file as "));
Serial.println(evil_portal_obj.target_html_name);
Serial.println("Set html file as " + evil_portal_obj.target_html_name);
}
//else {
// evil_portal_obj.target_html_name = "index.html";
@@ -684,8 +668,7 @@ void CommandLine::runCommand(String input) {
String target_html_name = cmd_args.get(cmd_sw + 2);
evil_portal_obj.target_html_name = target_html_name;
evil_portal_obj.using_serial_html = false;
Serial.print(F("Set html file as "));
Serial.println(evil_portal_obj.target_html_name);
Serial.println("Set html file as " + evil_portal_obj.target_html_name);
}
else if (et_command == "sethtmlstr") {
evil_portal_obj.setHtmlFromSerial();
@@ -704,8 +687,7 @@ void CommandLine::runCommand(String input) {
}
}
else if (cmd_args.get(0) == SCAN_ALL_CMD) {
Serial.print(F("Scanning for APs and Stations. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Scanning for APs and Stations. Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.StartScan(WIFI_SCAN_AP_STA, TFT_MAGENTA);
}
else if (cmd_args.get(0) == SCANAP_CMD) {
@@ -716,20 +698,17 @@ void CommandLine::runCommand(String input) {
#endif
if (full_sw == -1) {
Serial.print(F("Starting AP scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting AP scan. Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.StartScan(WIFI_SCAN_TARGET_AP, TFT_MAGENTA);
}
else {
Serial.print(F("Starting Full AP scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Full AP scan. Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.StartScan(WIFI_SCAN_TARGET_AP_FULL, TFT_MAGENTA);
}
}
// Raw sniff
else if (cmd_args.get(0) == SNIFF_RAW_CMD) {
Serial.print(F("Starting Raw sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Raw sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -739,11 +718,9 @@ void CommandLine::runCommand(String input) {
// Scan stations
else if (cmd_args.get(0) == SCANSTA_CMD) {
if(access_points->size() < 1)
Serial.print(F("The AP list is empty. Scan APs first with "));
Serial.println(SCANAP_CMD);
Serial.println("The AP list is empty. Scan APs first with " + (String)SCANAP_CMD);
Serial.print(F("Starting Station scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Station scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -752,28 +729,16 @@ void CommandLine::runCommand(String input) {
}
// Beacon sniff
else if (cmd_args.get(0) == SNIFF_BEACON_CMD) {
Serial.print(F("Starting Beacon sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Beacon sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(WIFI_SCAN_AP, TFT_MAGENTA);
}
// SAE sniff
else if (cmd_args.get(0) == SNIFF_SAE_CMD) {
Serial.print(F("Starting SAE Commit sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(WIFI_SCAN_SAE_COMMIT, TFT_MAGENTA);
}
// Probe sniff
else if (cmd_args.get(0) == SNIFF_PROBE_CMD) {
Serial.print(F("Starting Probe sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Probe sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -782,8 +747,7 @@ void CommandLine::runCommand(String input) {
}
// Deauth sniff
else if (cmd_args.get(0) == SNIFF_DEAUTH_CMD) {
Serial.print(F("Starting Deauth sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Deauth sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -792,8 +756,7 @@ void CommandLine::runCommand(String input) {
}
// Pwn sniff
else if (cmd_args.get(0) == SNIFF_PWN_CMD) {
Serial.print(F("Starting Pwnagotchi sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Pwnagotchi sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -802,8 +765,7 @@ void CommandLine::runCommand(String input) {
}
// PineScan sniff
else if (cmd_args.get(0) == SNIFF_PINESCAN_CMD) {
Serial.print(F("Starting Pinescan sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Pinescan sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -812,8 +774,7 @@ void CommandLine::runCommand(String input) {
}
// MultiSSID sniff
else if (cmd_args.get(0) == SNIFF_MULTISSID_CMD) {
Serial.print(F("Starting MultiSSID sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting MultiSSID sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -822,8 +783,7 @@ void CommandLine::runCommand(String input) {
}
// Espressif sniff
else if (cmd_args.get(0) == SNIFF_ESP_CMD) {
Serial.print(F("Starting Espressif device sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Espressif device sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -865,8 +825,7 @@ void CommandLine::runCommand(String input) {
}
// MAC Tracking
else if (cmd_args.get(0) == MAC_TRACK_CMD) {
Serial.print(F("Starting MAC Tracker. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting MAC Tracker. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1119,23 +1078,13 @@ void CommandLine::runCommand(String input) {
wifi_scan_obj.StartScan(WIFI_ATTACK_RICK_ROLL, TFT_YELLOW);
}
else if (attack_type == ATTACK_TYPE_FUNNY) {
Serial.print(F("Starting Funny SSID Beacon spam. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Funny SSID Beacon spam. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(WIFI_ATTACK_FUNNY_BEACON, TFT_CYAN);
}
else if (attack_type == ATTACK_TYPE_SAE) {
Serial.print(F("Starting SAE Commit spam. Stop with "));
Serial.println(STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(WIFI_ATTACK_SAE_COMMIT, TFT_CYAN);
}
else {
Serial.println(F("Attack type not properly defined"));
return;
@@ -1157,8 +1106,7 @@ void CommandLine::runCommand(String input) {
// Airtag sniff
if (bt_type == "airtag") {
Serial.print(F("Starting Airtag sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Airtag sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1166,8 +1114,7 @@ void CommandLine::runCommand(String input) {
wifi_scan_obj.StartScan(BT_SCAN_AIRTAG, TFT_WHITE);
}
else if (bt_type == "flipper") {
Serial.print(F("Starting Flipper sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Flipper sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1175,8 +1122,7 @@ void CommandLine::runCommand(String input) {
wifi_scan_obj.StartScan(BT_SCAN_FLIPPER, TFT_ORANGE);
}
else if (bt_type == "flock") {
Serial.print(F("Starting Flock sniff. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Flock sniff. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1186,8 +1132,7 @@ void CommandLine::runCommand(String input) {
}
// General bluetooth sniff
else {
Serial.print(F("Starting Bluetooth scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Bluetooth scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1212,8 +1157,7 @@ void CommandLine::runCommand(String input) {
at.selected = false;
airtags->set(i, at);
}
Serial.print(F("Spoofing Airtag: "));
Serial.println(airtags->get(target_mac).mac);
Serial.println("Spoofing Airtag: " + airtags->get(target_mac).mac);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1221,8 +1165,7 @@ void CommandLine::runCommand(String input) {
wifi_scan_obj.StartScan(BT_SPOOF_AIRTAG, TFT_WHITE);
}
else {
Serial.print(F("Provided index is out of range: "));
Serial.println(target_mac);
Serial.println("Provided index is out of range: " + (String)target_mac);
return;
}
#endif
@@ -1235,8 +1178,7 @@ void CommandLine::runCommand(String input) {
if (bt_type == "apple") {
#ifdef HAS_BT
Serial.print(F("Starting Sour Apple attack. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Sour Apple attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1248,8 +1190,7 @@ void CommandLine::runCommand(String input) {
}
else if (bt_type == "windows") {
#ifdef HAS_BT
Serial.print(F("Starting Swiftpair Spam attack. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Swiftpair Spam attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1261,8 +1202,7 @@ void CommandLine::runCommand(String input) {
}
else if (bt_type == "samsung") {
#ifdef HAS_BT
Serial.print(F("Starting Samsung Spam attack. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Samsung Spam attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1274,8 +1214,7 @@ void CommandLine::runCommand(String input) {
}
else if (bt_type == "google") {
#ifdef HAS_BT
Serial.print(F("Starting Google Spam attack. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Google Spam attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1287,8 +1226,7 @@ void CommandLine::runCommand(String input) {
}
else if (bt_type == "flipper") {
#ifdef HAS_BT
Serial.print(F("Starting Flipper Spam attack. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Flipper Spam attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1300,8 +1238,7 @@ void CommandLine::runCommand(String input) {
}
else if (bt_type == "all") {
#ifdef HAS_BT
Serial.print(F("Starting BT Spam All attack. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting BT Spam All attack. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1322,8 +1259,7 @@ void CommandLine::runCommand(String input) {
#ifdef HAS_GPS
if (gps_obj.getGpsModuleStatus()) {
Serial.print(F("Starting BT Wardrive. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting BT Wardrive. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1343,8 +1279,7 @@ void CommandLine::runCommand(String input) {
// Bluetooth CC Skimmer scan
else if (cmd_args.get(0) == BT_SKIM_CMD) {
#ifdef HAS_BT
Serial.print(F("Starting Bluetooth CC Skimmer scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Bluetooth CC Skimmer scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1389,8 +1324,7 @@ void CommandLine::runCommand(String input) {
if (wifi_scan_obj.wifi_connected) {
// Ping Scan
if (cmd_args.get(0) == PING_CMD) {
Serial.print(F("Starting Ping Scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting Ping Scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1400,8 +1334,7 @@ void CommandLine::runCommand(String input) {
if (cmd_args.get(0) == ARP_SCAN_CMD) {
#ifndef HAS_DUAL_BAND
Serial.print(F("Starting ARP Scan. Stop with "));
Serial.println(STOPSCAN_CMD);
Serial.println("Starting ARP Scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1509,8 +1442,7 @@ void CommandLine::runCommand(String input) {
target_mode = WIFI_SCAN_RDP;
if (target_mode != 0) {
Serial.print(F("Starting port scan for service "));
Serial.println(port_name);
Serial.println("Starting port scan for service " + port_name);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
@@ -1587,7 +1519,7 @@ void CommandLine::runCommand(String input) {
if (stations->get(access_points->get(x).stations->get(i)).selected) {
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
Serial.print(sta_mac);
Serial.println(F(" (selected)"));
Serial.println(" (selected)");
count_selected += 1;
}
else {
@@ -1708,8 +1640,7 @@ void CommandLine::runCommand(String input) {
for (int i = 0; i < ap_index.size(); i++) {
int index = ap_index.get(i).toInt();
if (!this->inRange(access_points->size(), index)) {
Serial.print(F("Index not in range: "));
Serial.println(index);
Serial.println("Index not in range: " + (String)index);
continue;
}
if (access_points->get(index).selected) {
@@ -1760,8 +1691,7 @@ void CommandLine::runCommand(String input) {
for (int i = 0; i < sta_index.size(); i++) {
int index = sta_index.get(i).toInt();
if (!this->inRange(stations->size(), index)) {
Serial.print(F("Index not in range: "));
Serial.println(index);
Serial.println("Index not in range: " + (String)index);
continue;
}
if (stations->get(index).selected) {
@@ -1809,8 +1739,7 @@ void CommandLine::runCommand(String input) {
for (int i = 0; i < ss_index.size(); i++) {
int index = ss_index.get(i).toInt();
if (!this->inRange(ssids->size(), index)) {
Serial.print(F("Index not in range: "));
Serial.println(index);
Serial.println("Index not in range: " + (String)index);
continue;
}
if (ssids->get(index).selected) {
@@ -1896,8 +1825,7 @@ void CommandLine::runCommand(String input) {
else if (rem_sw != -1) {
int index = cmd_args.get(rem_sw + 1).toInt();
if (!this->inRange(ssids->size(), index)) {
Serial.print(F("Index not in range: "));
Serial.println(index);
Serial.println("Index not in range: " + (String)index);
return;
}
ssids->remove(index);
@@ -1907,4 +1835,41 @@ void CommandLine::runCommand(String input) {
return;
}
}
// Join WiFi
/*else if (cmd_args.get(0) == JOINWIFI_CMD) {
int n_sw = this->argSearch(&cmd_args, "-n"); // name
int a_sw = this->argSearch(&cmd_args, "-a"); // access point
int s_sw = this->argSearch(&cmd_args, "-s"); // ssid
int p_sw = this->argSearch(&cmd_args, "-p");
String essid = "";
String pwx = "";
if (s_sw != -1) {
int index = cmd_args.get(s_sw + 1).toInt();
if (!this->inRange(ssids->size(), index)) {
Serial.println("Index not in range: " + (String)index);
return;
}
essid = ssids->get(index).essid;
} else if (a_sw != -1) {
int index = cmd_args.get(a_sw + 1).toInt();
if (!this->inRange(access_points->size(), index)) {
Serial.println("Index not in range: " + (String)index);
return;
}
essid = access_points->get(index).essid;
} else if (n_sw != -1) {
essid = cmd_args.get(n_sw + 1);
} else {
Serial.println("You must specify an access point or ssid");
return;
}
if (p_sw != -1) {
pwx = cmd_args.get(p_sw + 1);
}
Serial.println("Attempting to join WiFi with ssid " + (String)essid);
wifi_scan_obj.joinWiFi(essid, pwx);
}*/
}

View File

@@ -79,7 +79,6 @@ const char PROGMEM PING_CMD[] = "pingscan";
const char PROGMEM PORT_SCAN_CMD[] = "portscan";
const char PROGMEM ARP_SCAN_CMD[] = "arpscan";
const char PROGMEM MAC_TRACK_CMD[] = "mactrack";
const char PROGMEM SNIFF_SAE_CMD[] = "sniffsae";
// WiFi attack
const char PROGMEM ATTACK_CMD[] = "attack";
@@ -90,7 +89,6 @@ const char PROGMEM ATTACK_TYPE_FUNNY[] = "funny";
const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
const char PROGMEM ATTACK_TYPE_BM[] = "badmsg";
const char PROGMEM ATTACK_TYPE_S[] = "sleep";
const char PROGMEM ATTACK_TYPE_SAE[] = "sae";
// WiFi Aux
const char PROGMEM LIST_AP_CMD[] = "list";
@@ -156,10 +154,9 @@ const char PROGMEM HELP_PING_CMD[] = "pingscan";
const char PROGMEM HELP_PORT_SCAN_CMD[] = "portscan [-a -t <ip index>]/[-s <ssh/telnet/dns/http/smtp/https/rdp>]";
const char PROGMEM HELP_ARP_SCAN_CMD[] = "arpscan [-f]";
const char PROGMEM HELP_MAC_TRACK_CMD[] = "mactrack";
const char PROGMEM HELP_SNIFF_SAE_CMD[] = "sniffsae";
// WiFi attack
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <sae/beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll/badmsg [-c]/sleep [-c]>";
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll/badmsg [-c]/sleep [-c]>";
// WiFi Aux
const char PROGMEM HELP_LIST_AP_CMD_A[] = "list -s";

View File

@@ -16,12 +16,28 @@ static const uint32_t PROBE_MS = 1200;
void GpsInterface::begin() {
/*#ifdef MARAUDER_MINI
pinMode(26, OUTPUT);
delay(1);
analogWrite(26, 243);
delay(1);
Serial.println("Activated GPS");
delay(100);
#endif*/
Serial2.begin(9600, SERIAL_8N1, GPS_TX, GPS_RX);
uint32_t gps_baud = this->initGpsBaudAndForce115200();
if ((gps_baud != 9600) && (gps_baud != 115200))
if (gps_baud == 9600)
Serial.println("GPS running at 9600");
else if (gps_baud == 115200)
Serial.println("GPS running at 115200");
else
Serial.println("Could not detect GPS baudrate");
delay(1000);
@@ -34,6 +50,7 @@ void GpsInterface::begin() {
delay(1000);
if (Serial2.available()) {
Serial.println("GPS Attached Successfully");
this->gps_enabled = true;
while (Serial2.available()) {
//Fetch the character one by one

View File

@@ -2329,9 +2329,9 @@ bool WiFiScan::shutdownBLE() {
pBLEScan->clearResults();
//#ifndef HAS_DUAL_BAND
#ifndef HAS_DUAL_BAND
NimBLEDevice::deinit();
//#endif
#endif
this->_analyzer_value = 0;
this->bt_frames = 0;
@@ -7179,7 +7179,7 @@ void WiFiScan::multiSSIDSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t t
}
}
void WiFiScan::saeAttackLoop(uint32_t currentTime) {
void WiFiScan::saeAttackLoop() {
for (int i = 0; i < access_points->size(); i++) { // Find selected APs
if (access_points->get(i).selected) {
if (this->set_channel != access_points->get(i).channel) // Set channel to AP's channel
@@ -7197,51 +7197,6 @@ void WiFiScan::saeAttackLoop(uint32_t currentTime) {
}
}
}
#ifdef HAS_SCREEN
if (currentTime - this->last_ui_update >= 1000) {
this->last_ui_update = millis();
uint8_t line_count = 0;
display_obj.tft.fillRect(0,
(STATUS_BAR_WIDTH * 2) + 1 + EXT_BUTTON_WIDTH,
TFT_WIDTH,
TFT_HEIGHT - STATUS_BAR_WIDTH + 1,
TFT_BLACK);
#ifndef HAS_MINI_SCREEN
display_obj.tft.setCursor(0, (STATUS_BAR_WIDTH * 4) + CHAR_WIDTH + EXT_BUTTON_WIDTH);
#else
display_obj.tft.setCursor(0, (STATUS_BAR_WIDTH * 3) + CHAR_WIDTH + EXT_BUTTON_WIDTH);
#endif
#ifndef HAS_MINI_SCREEN
display_obj.tft.setTextSize(3);
#else
display_obj.tft.setTextSize(2);
#endif
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
display_obj.tft.print(F("SAE TX: "));
display_obj.tft.println(this->data_frames);
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
display_obj.tft.print(F("SAE RX: "));
display_obj.tft.println((String)this->mgmt_frames + "\n");
#ifndef HAS_MINI_SCREEN
display_obj.tft.setTextSize(2);
#else
display_obj.tft.setTextSize(1);
#endif
display_obj.tft.setTextColor(TFT_WHITE, TFT_BLACK);
if (current_act)
display_obj.tft.print(F("ACT: SET"));
else
display_obj.tft.print(F("ACT: NOT SET"));
}
#endif
}
inline uint16_t WiFiScan::le16(const uint8_t *p) {
@@ -7353,8 +7308,6 @@ bool WiFiScan::sendSAECommitFrame(uint8_t* targ_addr, uint8_t* src_addr) {
if (esp_wifi_80211_tx(WIFI_IF_STA, frame, current_index - frame, false) != ESP_OK)
return false;
this->data_frames++;
return true;
}
@@ -8102,7 +8055,6 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
String dst_addr_str = macToString(dst_addr);
if (wifi_scan_obj.getSAEACT(snifferPacket->payload, len, group, act_len)) {
wifi_scan_obj.mgmt_frames++;
if (wifi_scan_obj.currentScanMode != WIFI_ATTACK_SAE_COMMIT) {
#ifdef HAS_SCREEN
display_string.concat(WHITE_KEY);
@@ -11110,12 +11062,6 @@ void WiFiScan::main(uint32_t currentTime)
channelHop();
}
}
else if (currentScanMode == WIFI_SCAN_SAE_COMMIT) {
if (currentTime - initTime >= 250) {
initTime = millis();
this->channelHop(true);
}
}
else if (currentScanMode == WIFI_SCAN_DETECT_FOLLOW) {
if (currentTime - initTime >= this->channel_hop_delay * HOP_DELAY) {
initTime = millis();
@@ -11487,7 +11433,7 @@ void WiFiScan::main(uint32_t currentTime)
}
}
else if (currentScanMode == WIFI_ATTACK_SAE_COMMIT) {
this->saeAttackLoop(currentTime);
this->saeAttackLoop();
}
else if (currentScanMode == WIFI_ATTACK_DEAUTH) {
for (int i = 0; i < 55; i++) {

View File

@@ -594,7 +594,7 @@ class WiFiScan
void executeSpoofAirtag();
void executeSwiftpairSpam(EBLEPayloadType type);
void startWardriverWiFi();
void saeAttackLoop(uint32_t currentTime);
void saeAttackLoop();
//void generateRandomMac(uint8_t* mac);
//void generateRandomName(char *name, size_t length);
String processPwnagotchiBeacon(const uint8_t* frame, int length);