Compare commits

...

23 Commits

Author SHA1 Message Date
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
b3eade1e06 Faster display buffer 2025-12-13 14:43:08 -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
1862a5b812 Fix crash during BT wardrive 2025-12-12 18:06:07 -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
2910addb8a Ensure async wardrive 2025-12-08 16:32:25 -05:00
Just Call Me Koko
be3971d081 Wardriving is async 2025-12-08 15:40:24 -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
431fa175a0 Update WiFiScan.cpp 2025-12-08 15:04:09 -05:00
Just Call Me Koko
976687980c Add wifi to flock wardrive 2025-12-08 14:53:55 -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
1624d98183 Fix menu navigation for back button 2025-12-04 18:12:28 -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
9681076542 Update C5 FBQN 2025-12-02 01:00:16 -05:00
Just Call Me Koko
86d35cba6a Update NimBLE version in actions 2025-12-02 00:49:20 -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
fb2b33d538 Maybe I should learn something 2025-12-02 00:09:43 -05:00
Just Call Me Koko
5e47927969 Update arduino esp32 2025-12-02 00:02:34 -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
d7d2b28f9e Add 5ghz channels for c5 packet injection 2025-12-01 18:37:43 -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
5d188bfa62 Merge pull request #995 from justcallmekoko/NimBLE-2.0
Add Bluetooth to C5 hardware
2025-12-01 01:37:32 -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
7 changed files with 250 additions and 202 deletions

View File

@@ -36,7 +36,7 @@ jobs:
- { 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: "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: "Marauder v7.1", flag: "MARAUDER_V7_1", fbqn: "esp32:esp32:dfrobot_firebeetle2_esp32e:FlashSize=16M,PartitionScheme=min_spiffs,PSRAM=enabled", file_name: "marauder_v7_1", tft: true, tft_file: "User_Setup_dual_nrf24.h", build_dir: "dfrobot_firebeetle2_esp32e", addr: "0x1000", idf_ver: "2.0.11", nimble_ver: "1.3.8", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" } - { name: "Marauder v7.1", flag: "MARAUDER_V7_1", fbqn: "esp32:esp32:dfrobot_firebeetle2_esp32e:FlashSize=16M,PartitionScheme=min_spiffs,PSRAM=enabled", file_name: "marauder_v7_1", tft: true, tft_file: "User_Setup_dual_nrf24.h", build_dir: "dfrobot_firebeetle2_esp32e", 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: "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:PartitionScheme=min_spiffs", file_name: "esp32c5devkitc1", tft: false, tft_file: "", build_dir: "esp32c5", addr: "0x2000", idf_ver: "3.3.0", nimble_ver: "2.3.0", 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: steps:
- name: Checkout Code - name: Checkout Code
@@ -212,7 +212,7 @@ jobs:
done done
fi fi
if [[ ${{ matrix.board.idf_ver }} == "3.3.0" ]]; then if [[ ${{ matrix.board.idf_ver }} == "3.3.4" ]]; then
for i in $(find /home/runner/.arduino15/packages/esp32/hardware/esp32/ -name "platform.txt"); do for i in $(find /home/runner/.arduino15/packages/esp32/hardware/esp32/ -name "platform.txt"); do
sed -i 's/compiler.c.elf.extra_flags=/compiler.c.elf.extra_flags=-Wl,-zmuldefs /' "$i" sed -i 's/compiler.c.elf.extra_flags=/compiler.c.elf.extra_flags=-Wl,-zmuldefs /' "$i"
done done

View File

@@ -85,7 +85,7 @@ jobs:
- { 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: "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: "Marauder v7.1", flag: "MARAUDER_V7_1", fbqn: "esp32:esp32:dfrobot_firebeetle2_esp32e:FlashSize=16M,PartitionScheme=min_spiffs,PSRAM=enabled", file_name: "marauder_v7_1", tft: true, tft_file: "User_Setup_dual_nrf24.h", build_dir: "dfrobot_firebeetle2_esp32e", addr: "0x1000", idf_ver: "2.0.11", nimble_ver: "1.3.8", esp_async: "bigbrodude6119/ESPAsyncWebServer", esp_async_ver: "master" } - { name: "Marauder v7.1", flag: "MARAUDER_V7_1", fbqn: "esp32:esp32:dfrobot_firebeetle2_esp32e:FlashSize=16M,PartitionScheme=min_spiffs,PSRAM=enabled", file_name: "marauder_v7_1", tft: true, tft_file: "User_Setup_dual_nrf24.h", build_dir: "dfrobot_firebeetle2_esp32e", 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: "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:PartitionScheme=min_spiffs", file_name: "esp32c5devkitc1", tft: false, tft_file: "", build_dir: "esp32c5", addr: "0x2000", idf_ver: "3.3.0", nimble_ver: "2.3.0", 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: steps:
- name: Checkout Code - name: Checkout Code
@@ -252,7 +252,7 @@ jobs:
done done
fi fi
if [[ ${{ matrix.board.idf_ver }} == "3.3.0" ]]; then if [[ ${{ matrix.board.idf_ver }} == "3.3.4" ]]; then
for i in $(find /home/runner/.arduino15/packages/esp32/hardware/esp32/ -name "platform.txt"); do for i in $(find /home/runner/.arduino15/packages/esp32/hardware/esp32/ -name "platform.txt"); do
sed -i 's/compiler.c.elf.extra_flags=/compiler.c.elf.extra_flags=-Wl,-zmuldefs /' "$i" sed -i 's/compiler.c.elf.extra_flags=/compiler.c.elf.extra_flags=-Wl,-zmuldefs /' "$i"
done done

1
FlashFiles/flash_cmd.txt Normal file
View File

@@ -0,0 +1 @@
./esptool.exe --chip esp32 --port COM4 --baud 921600 write_flash -z 0x1000 /c/Users/culrP/Downloads/esp32_marauder.ino.bootloader.bin 0x8000 /c/Users/culrP/Downloads/esp32_marauder.ino.partitions.bin 0xE000 /c/Users/culrP/Downloads/boot_app0.bin 0x10000 /c/Users/culrP/Downloads/esp32_marauder_v1_8_9_20251030_v6_1.bin

View File

@@ -475,33 +475,37 @@ void Display::processAndPrintString(TFT_eSPI& tft, const String& originalString)
String new_string = originalString; String new_string = originalString;
// Check for color macros at the start of the string // Check for color macros at the start of the string
if (new_string.startsWith(RED_KEY)) { if (new_string.startsWith(";")) {
text_color = TFT_RED; if (new_string.startsWith(RED_KEY)) {
new_string.remove(0, strlen(RED_KEY)); // Remove the macro text_color = TFT_RED;
} else if (new_string.startsWith(GREEN_KEY)) { new_string.remove(0, strlen(RED_KEY)); // Remove the macro
text_color = TFT_GREEN; } else if (new_string.startsWith(GREEN_KEY)) {
new_string.remove(0, strlen(GREEN_KEY)); // Remove the macro text_color = TFT_GREEN;
} else if (new_string.startsWith(CYAN_KEY)) { new_string.remove(0, strlen(GREEN_KEY)); // Remove the macro
text_color = TFT_CYAN; } else if (new_string.startsWith(CYAN_KEY)) {
new_string.remove(0, strlen(CYAN_KEY)); // Remove the macro text_color = TFT_CYAN;
} else if (new_string.startsWith(WHITE_KEY)) { new_string.remove(0, strlen(CYAN_KEY)); // Remove the macro
text_color = TFT_WHITE; } else if (new_string.startsWith(WHITE_KEY)) {
new_string.remove(0, strlen(WHITE_KEY)); // Remove the macro text_color = TFT_WHITE;
} else if (new_string.startsWith(MAGENTA_KEY)) { new_string.remove(0, strlen(WHITE_KEY)); // Remove the macro
text_color = TFT_MAGENTA; } else if (new_string.startsWith(MAGENTA_KEY)) {
new_string.remove(0, strlen(MAGENTA_KEY)); // Remove the macro text_color = TFT_MAGENTA;
new_string.remove(0, strlen(MAGENTA_KEY)); // Remove the macro
}
} }
String spaces = String(' ', TFT_WIDTH / CHAR_WIDTH);
// Set text color and print the string // Set text color and print the string
tft.setTextColor(text_color, background_color); tft.setTextColor(text_color, background_color);
tft.print(new_string); tft.print(new_string + spaces);
} }
void Display::displayBuffer(bool do_clear) void Display::displayBuffer(bool do_clear)
{ {
if (this->display_buffer->size() > 0) if (this->display_buffer->size() > 0)
{ {
int print_count = 1; int print_count = 10;
while ((display_buffer->size() > 0) && (print_count > 0)) while ((display_buffer->size() > 0) && (print_count > 0))
{ {
@@ -530,9 +534,9 @@ void Display::displayBuffer(bool do_clear)
screen_buffer->add(display_buffer->shift()); screen_buffer->add(display_buffer->shift());
for (int i = 0; i < this->screen_buffer->size(); i++) { for (int i = 0; i < this->screen_buffer->size(); i++) {
tft.setCursor(xPos, (i * 12) + (SCREEN_HEIGHT / 6)); //tft.setCursor(xPos, (i * 12) + (SCREEN_HEIGHT / 6));
String spaces = String(' ', TFT_WIDTH / CHAR_WIDTH); //String spaces = String(' ', TFT_WIDTH / CHAR_WIDTH);
tft.print(spaces); //tft.print(spaces);
tft.setCursor(xPos, (i * 12) + (SCREEN_HEIGHT / 6)); tft.setCursor(xPos, (i * 12) + (SCREEN_HEIGHT / 6));
this->processAndPrintString(tft, this->screen_buffer->get(i)); this->processAndPrintString(tft, this->screen_buffer->get(i));

View File

@@ -2039,6 +2039,8 @@ void MenuFunctions::RunSetup()
}); });
this->addNodes(&wifiGeneralMenu, "View AP Info", TFTCYAN, NULL, KEYBOARD_ICO, [this](){ this->addNodes(&wifiGeneralMenu, "View AP Info", TFTCYAN, NULL, KEYBOARD_ICO, [this](){
wifiAPMenu.parentMenu = &wifiGeneralMenu;
// Add the back button // Add the back button
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
@@ -2074,6 +2076,8 @@ void MenuFunctions::RunSetup()
// Select Stations on Mini v2 // Select Stations on Mini v2
this->addNodes(&wifiGeneralMenu, "Select Stations", TFTCYAN, NULL, KEYBOARD_ICO, [this](){ this->addNodes(&wifiGeneralMenu, "Select Stations", TFTCYAN, NULL, KEYBOARD_ICO, [this](){
wifiAPMenu.parentMenu = &wifiGeneralMenu;
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
this->changeMenu(wifiAPMenu.parentMenu, true); this->changeMenu(wifiAPMenu.parentMenu, true);
@@ -2140,6 +2144,9 @@ void MenuFunctions::RunSetup()
}); });
this->addNodes(&wifiGeneralMenu, "Join WiFi", TFTWHITE, NULL, KEYBOARD_ICO, [this](){ this->addNodes(&wifiGeneralMenu, "Join WiFi", TFTWHITE, NULL, KEYBOARD_ICO, [this](){
wifiAPMenu.parentMenu = &wifiGeneralMenu;
// Add the back button // Add the back button
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
@@ -2186,6 +2193,8 @@ void MenuFunctions::RunSetup()
this->changeMenu(&wifiGeneralMenu, true); this->changeMenu(&wifiGeneralMenu, true);
} }
else { else {
wifiAPMenu.parentMenu = &wifiGeneralMenu;
// Add the back button // Add the back button
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
@@ -2303,6 +2312,8 @@ void MenuFunctions::RunSetup()
// Clone AP MAC to ESP32 for button folks // Clone AP MAC to ESP32 for button folks
//#ifndef HAS_ILI9341 //#ifndef HAS_ILI9341
this->addNodes(&setMacMenu, "Clone AP MAC", TFTRED, NULL, CLEAR_ICO, [this](){ this->addNodes(&setMacMenu, "Clone AP MAC", TFTRED, NULL, CLEAR_ICO, [this](){
wifiAPMenu.parentMenu = &wifiGeneralMenu;
// Add the back button // Add the back button
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
@@ -2321,6 +2332,8 @@ void MenuFunctions::RunSetup()
}); });
this->addNodes(&setMacMenu, "Clone STA MAC", TFTMAGENTA, NULL, CLEAR_ICO, [this](){ this->addNodes(&setMacMenu, "Clone STA MAC", TFTMAGENTA, NULL, CLEAR_ICO, [this](){
wifiAPMenu.parentMenu = &wifiGeneralMenu;
// Add the back button // Add the back button
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
@@ -2474,6 +2487,8 @@ void MenuFunctions::RunSetup()
#ifdef HAS_BT #ifdef HAS_BT
// Select Airtag on Mini // Select Airtag on Mini
this->addNodes(&bluetoothAttackMenu, "Spoof Airtag", TFTWHITE, NULL, ATTACKS, [this](){ this->addNodes(&bluetoothAttackMenu, "Spoof Airtag", TFTWHITE, NULL, ATTACKS, [this](){
wifiAPMenu.parentMenu = &bluetoothAttackMenu;
// Clear nodes and add back button // Clear nodes and add back button
wifiAPMenu.list->clear(); wifiAPMenu.list->clear();
this->addNodes(&wifiAPMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() { this->addNodes(&wifiAPMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {

View File

@@ -432,7 +432,16 @@ extern "C" {
if (gps_obj.getGpsModuleStatus()) { if (gps_obj.getGpsModuleStatus()) {
bool do_save = false; bool do_save = false;
if (buf >= 0) if (buf >= 0)
{ {
unsigned char mac_char[6];
wifi_scan_obj.copyNimbleMac(advertisedDevice->getAddress(), mac_char);
if (wifi_scan_obj.currentScanMode != BT_SCAN_WAR_DRIVE_CONT) {
if (wifi_scan_obj.seen_mac(mac_char))
return;
}
Serial.print(F("Device: ")); Serial.print(F("Device: "));
if(advertisedDevice->getName().length() != 0) if(advertisedDevice->getName().length() != 0)
{ {
@@ -476,6 +485,10 @@ extern "C" {
if (do_save) if (do_save)
buffer_obj.append(wardrive_line); buffer_obj.append(wardrive_line);
if (wifi_scan_obj.currentScanMode != BT_SCAN_WAR_DRIVE_CONT) {
wifi_scan_obj.save_mac(mac_char);
}
} }
} }
#endif #endif
@@ -1153,6 +1166,14 @@ extern "C" {
bool do_save = false; bool do_save = false;
if (buf >= 0) if (buf >= 0)
{ {
unsigned char mac_char[6];
wifi_scan_obj.copyNimbleMac(advertisedDevice->getAddress(), mac_char);
if (wifi_scan_obj.currentScanMode != BT_SCAN_WAR_DRIVE_CONT) {
if (wifi_scan_obj.seen_mac(mac_char))
return;
}
Serial.print(F("Device: ")); Serial.print(F("Device: "));
if(advertisedDevice->getName().length() != 0) if(advertisedDevice->getName().length() != 0)
{ {
@@ -1196,6 +1217,10 @@ extern "C" {
if (do_save) if (do_save)
buffer_obj.append(wardrive_line); buffer_obj.append(wardrive_line);
if (wifi_scan_obj.currentScanMode != BT_SCAN_WAR_DRIVE_CONT) {
wifi_scan_obj.save_mac(mac_char);
}
} }
} }
#endif #endif
@@ -1835,7 +1860,11 @@ int WiFiScan::clearSSIDs() {
} }
bool WiFiScan::addSSID(String essid) { bool WiFiScan::addSSID(String essid) {
ssid s = {essid, random(1, 12), {random(256), random(256), random(256), random(256), random(256), random(256)}, false}; #ifndef HAS_DUAL_BAND
ssid s = {essid, random(1, 12), {random(256), random(256), random(256), random(256), random(256), random(256)}, false};
#else
ssid s = {essid, dual_band_channels[random(0, DUAL_BAND_CHANNELS)], {random(256), random(256), random(256), random(256), random(256), random(256)}, false};
#endif
ssids->add(s); ssids->add(s);
Serial.println(ssids->get(ssids->size() - 1).essid); Serial.println(ssids->get(ssids->size() - 1).essid);
@@ -1850,7 +1879,11 @@ int WiFiScan::generateSSIDs(int count) {
for (uint8_t i = 0; i < 6; i++) for (uint8_t i = 0; i < 6; i++)
essid.concat(alfa[random(65)]); essid.concat(alfa[random(65)]);
ssid s = {essid, random(1, 12), {random(256), random(256), random(256), random(256), random(256), random(256)}, false}; #ifndef HAS_DUAL_BAND
ssid s = {essid, random(1, 12), {random(256), random(256), random(256), random(256), random(256), random(256)}, false};
#else
ssid s = {essid, dual_band_channels[random(0, DUAL_BAND_CHANNELS)], {random(256), random(256), random(256), random(256), random(256), random(256)}, false};
#endif
ssids->add(s); ssids->add(s);
Serial.println(ssids->get(ssids->size() - 1).essid); Serial.println(ssids->get(ssids->size() - 1).essid);
} }
@@ -2252,7 +2285,8 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_
esp_wifi_set_config(WIFI_IF_AP, &ap_config); esp_wifi_set_config(WIFI_IF_AP, &ap_config);
esp_wifi_start(); esp_wifi_start();
this->setMac(); this->setMac();
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
//WiFi.mode(WIFI_AP_STA); //WiFi.mode(WIFI_AP_STA);
@@ -2490,6 +2524,7 @@ void WiFiScan::StopScan(uint8_t scan_mode)
#endif #endif
this->shutdownBLE(); this->shutdownBLE();
this->ble_scanning = false;
#endif #endif
} }
@@ -3289,7 +3324,8 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&apSnifferCallbackFull); esp_wifi_set_promiscuous_rx_cb(&apSnifferCallbackFull);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -3987,7 +4023,8 @@ void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&wifiSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&wifiSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
uint32_t initTime = millis(); uint32_t initTime = millis();
} }
@@ -4099,7 +4136,8 @@ void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous_rx_cb(&activeEapolSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&activeEapolSnifferCallback);
else else
esp_wifi_set_promiscuous_rx_cb(&eapolSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&eapolSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4190,7 +4228,8 @@ void WiFiScan::RunPineScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&pineScanSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&pineScanSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4243,7 +4282,8 @@ void WiFiScan::RunMultiSSIDScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&multiSSIDSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&multiSSIDSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4293,7 +4333,8 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4399,19 +4440,37 @@ void WiFiScan::executeWarDrive() {
bool do_save; bool do_save;
String display_string; String display_string;
while (WiFi.scanComplete() == WIFI_SCAN_RUNNING) { /*while (WiFi.scanComplete() == WIFI_SCAN_RUNNING) {
Serial.println(F("Scan running...")); Serial.println(F("Scan running..."));
delay(500); delay(500);
}*/
int scan_status = WiFi.scanComplete();
if (scan_status == WIFI_SCAN_RUNNING) {
delay(1);
return;
}
else if (scan_status == WIFI_SCAN_FAILED) {
Serial.println("WiFi scan failed to start. Restarting...");
this->wifi_initialized = true;
this->shutdownWiFi();
this->startWardriverWiFi();
this->wifi_initialized = true;
delay(100);
} }
#ifndef HAS_DUAL_BAND /*#ifndef HAS_DUAL_BAND
int n = WiFi.scanNetworks(false, true, false, 110, this->set_channel); int n = WiFi.scanNetworks(false, true, false, 110, this->set_channel);
#else #else
int n = WiFi.scanNetworks(false, true, false, 110); int n = WiFi.scanNetworks(false, true, false, 110);
#endif #endif*/
if (n > 0) { bool do_continue = false;
for (int i = 0; i < n; i++) {
if (scan_status > 0) {
for (int i = 0; i < scan_status; i++) {
do_continue = true;
display_string = ""; display_string = "";
do_save = false; do_save = false;
uint8_t *this_bssid_raw = WiFi.BSSID(i); uint8_t *this_bssid_raw = WiFi.BSSID(i);
@@ -4424,6 +4483,24 @@ void WiFiScan::executeWarDrive() {
this->save_mac(this_bssid_raw); this->save_mac(this_bssid_raw);
String ssid = WiFi.SSID(i); String ssid = WiFi.SSID(i);
//Serial.println(ssid);
if (this->currentScanMode == BT_SCAN_FLOCK_WARDRIVE) {
for (int x = 0; x < sizeof(flock_ssid)/sizeof(this->flock_ssid[0]); x++) {
//Serial.print("Comparing ");
//Serial.print(ssid);
//Serial.print(" to ");
//Serial.println(this->flock_ssid[x]);
if (strcasestr(ssid.c_str(), this->flock_ssid[x])) {
do_continue = false;
break;
}
}
if (do_continue)
continue;
}
ssid.replace(",","_"); ssid.replace(",","_");
if (ssid != "") { if (ssid != "") {
@@ -4461,11 +4538,17 @@ void WiFiScan::executeWarDrive() {
buffer_obj.append(wardrive_line); buffer_obj.append(wardrive_line);
} }
} }
}
this->channelHop();
// Free up that memory, you sexy devil // Free up that memory, you sexy devil
WiFi.scanDelete(); WiFi.scanDelete();
}
/*#ifndef HAS_DUAL_BAND
this->channelHop();
#endif*/
if (!this->ble_scanning)
WiFi.scanNetworks(true, true, false, 80);
} }
#endif #endif
} }
@@ -4537,7 +4620,8 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
} }
else { else {
this->startWardriverWiFi(); this->startWardriverWiFi();
@@ -4611,7 +4695,8 @@ void WiFiScan::RunStationScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&stationSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&stationSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4682,7 +4767,8 @@ void WiFiScan::RunRawScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4733,7 +4819,8 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&deauthSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&deauthSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4809,7 +4896,8 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
esp_wifi_set_promiscuous(true); esp_wifi_set_promiscuous(true);
esp_wifi_set_promiscuous_filter(&filt); esp_wifi_set_promiscuous_filter(&filt);
esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback); esp_wifi_set_promiscuous_rx_cb(&beaconSnifferCallback);
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
//esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
this->wifi_initialized = true; this->wifi_initialized = true;
initTime = millis(); initTime = millis();
} }
@@ -4921,6 +5009,8 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
NimBLEDevice::init(""); NimBLEDevice::init("");
pBLEScan = NimBLEDevice::getScan(); //create new scan pBLEScan = NimBLEDevice::getScan(); //create new scan
if ((scan_mode == BT_SCAN_ALL) || if ((scan_mode == BT_SCAN_ALL) ||
(scan_mode == BT_SCAN_WAR_DRIVE) ||
(scan_mode == BT_SCAN_WAR_DRIVE_CONT) ||
(scan_mode == BT_SCAN_AIRTAG) || (scan_mode == BT_SCAN_AIRTAG) ||
(scan_mode == BT_SCAN_AIRTAG_MON) || (scan_mode == BT_SCAN_AIRTAG_MON) ||
(scan_mode == BT_SCAN_FLIPPER) || (scan_mode == BT_SCAN_FLIPPER) ||
@@ -4929,6 +5019,28 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
(scan_mode == BT_SCAN_SIMPLE) || (scan_mode == BT_SCAN_SIMPLE) ||
(scan_mode == BT_SCAN_SIMPLE_TWO)) (scan_mode == BT_SCAN_SIMPLE_TWO))
{ {
#ifdef HAS_GPS
if (gps_obj.getGpsModuleStatus()) {
if (scan_mode == BT_SCAN_WAR_DRIVE) {
startLog("bt_wardrive");
}
else if (scan_mode == BT_SCAN_WAR_DRIVE_CONT) {
startLog("bt_wardrive_cont");
}
else if (scan_mode == BT_SCAN_FLOCK_WARDRIVE) {
startLog("flock_wardrive");
this->startWardriverWiFi();
this->wifi_initialized = true;
}
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
buffer_obj.append(header_line);
} else {
return;
}
#else
return;
#endif
#ifdef HAS_SCREEN #ifdef HAS_SCREEN
display_obj.TOP_FIXED_AREA_2 = 48; display_obj.TOP_FIXED_AREA_2 = 48;
display_obj.tteBar = true; display_obj.tteBar = true;
@@ -4953,6 +5065,10 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
display_obj.tft.drawCentreString("Simple Sniff", TFT_WIDTH / 2, 16, 2); display_obj.tft.drawCentreString("Simple Sniff", TFT_WIDTH / 2, 16, 2);
else if (scan_mode == BT_SCAN_SIMPLE_TWO) else if (scan_mode == BT_SCAN_SIMPLE_TWO)
display_obj.tft.drawCentreString("Simple Sniff 2", TFT_WIDTH / 2, 16, 2); display_obj.tft.drawCentreString("Simple Sniff 2", TFT_WIDTH / 2, 16, 2);
if (scan_mode == BT_SCAN_WAR_DRIVE)
display_obj.tft.drawCentreString("BT Wardrive",TFT_WIDTH / 2,16,2);
else if (scan_mode == BT_SCAN_WAR_DRIVE_CONT)
display_obj.tft.drawCentreString("BT Wardrive Continuous",TFT_WIDTH / 2,16,2);
#ifdef HAS_ILI9341 #ifdef HAS_ILI9341
display_obj.touchToExit(); display_obj.touchToExit();
#endif #endif
@@ -4967,6 +5083,8 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
pBLEScan->setScanCallbacks(new bluetoothScanAllCallback(), false); pBLEScan->setScanCallbacks(new bluetoothScanAllCallback(), false);
#endif #endif
else if ((scan_mode == BT_SCAN_FLIPPER) || else if ((scan_mode == BT_SCAN_FLIPPER) ||
(scan_mode == BT_SCAN_WAR_DRIVE) ||
(scan_mode == BT_SCAN_WAR_DRIVE_CONT) ||
(scan_mode == BT_SCAN_FLOCK) || (scan_mode == BT_SCAN_FLOCK) ||
(scan_mode == BT_SCAN_FLOCK_WARDRIVE) || (scan_mode == BT_SCAN_FLOCK_WARDRIVE) ||
(scan_mode == BT_SCAN_SIMPLE) || (scan_mode == BT_SCAN_SIMPLE) ||
@@ -4996,6 +5114,8 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
} }
else if (scan_mode == BT_SCAN_FLOCK_WARDRIVE) { else if (scan_mode == BT_SCAN_FLOCK_WARDRIVE) {
startLog("flock_wardrive"); startLog("flock_wardrive");
this->startWardriverWiFi();
this->wifi_initialized = true;
} }
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n"; String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
buffer_obj.append(header_line); buffer_obj.append(header_line);
@@ -5038,8 +5158,7 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
#endif #endif
} }
else if (scan_mode == BT_SCAN_SKIMMERS) else if (scan_mode == BT_SCAN_SKIMMERS) {
{
#ifdef HAS_SCREEN #ifdef HAS_SCREEN
display_obj.TOP_FIXED_AREA_2 = 160; display_obj.TOP_FIXED_AREA_2 = 160;
display_obj.tteBar = true; display_obj.tteBar = true;
@@ -7698,8 +7817,12 @@ void WiFiScan::beaconListSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t
} }
void WiFiScan::broadcastCustomBeacon(uint32_t current_time, AccessPoint custom_ssid) { void WiFiScan::broadcastCustomBeacon(uint32_t current_time, AccessPoint custom_ssid) {
set_channel = random(1,12); #ifndef HAS_DUAL_BAND
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); set_channel = random(1,12);
#else
set_channel = dual_band_channels[random(0, DUAL_BAND_CHANNELS)];
#endif
this->changeChannel(this->set_channel);
delay(1); delay(1);
//if (custom_ssid.beacon->size() == 0) //if (custom_ssid.beacon->size() == 0)
@@ -7760,7 +7883,7 @@ void WiFiScan::broadcastCustomBeacon(uint32_t current_time, AccessPoint custom_s
void WiFiScan::broadcastCustomBeacon(uint32_t current_time, ssid custom_ssid) { void WiFiScan::broadcastCustomBeacon(uint32_t current_time, ssid custom_ssid) {
set_channel = custom_ssid.channel; set_channel = custom_ssid.channel;
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
delay(1); delay(1);
// Randomize SRC MAC // Randomize SRC MAC
@@ -7806,8 +7929,13 @@ void WiFiScan::broadcastCustomBeacon(uint32_t current_time, ssid custom_ssid) {
// Function to send beacons with random ESSID length // Function to send beacons with random ESSID length
void WiFiScan::broadcastSetSSID(uint32_t current_time, const char* ESSID) { void WiFiScan::broadcastSetSSID(uint32_t current_time, const char* ESSID) {
set_channel = random(1,12); #ifndef HAS_DUAL_BAND
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); set_channel = random(1,12);
#else
set_channel = dual_band_channels[random(0, DUAL_BAND_CHANNELS)];
#endif
this->changeChannel(this->set_channel);
delay(1); delay(1);
// Randomize SRC MAC // Randomize SRC MAC
@@ -7852,8 +7980,12 @@ void WiFiScan::broadcastSetSSID(uint32_t current_time, const char* ESSID) {
// Function for sending crafted beacon frames // Function for sending crafted beacon frames
void WiFiScan::broadcastRandomSSID(uint32_t currentTime) { void WiFiScan::broadcastRandomSSID(uint32_t currentTime) {
set_channel = random(1,12); #ifndef HAS_DUAL_BAND
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); set_channel = random(1,12);
#else
set_channel = dual_band_channels[random(0, DUAL_BAND_CHANNELS)];
#endif
this->changeChannel(this->set_channel);
delay(1); delay(1);
// Randomize SRC MAC // Randomize SRC MAC
@@ -7901,7 +8033,7 @@ void WiFiScan::sendProbeAttack(uint32_t currentTime) {
// Check if active // Check if active
if (access_points->get(i).selected) { if (access_points->get(i).selected) {
this->set_channel = access_points->get(i).channel; this->set_channel = access_points->get(i).channel;
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
delay(1); delay(1);
// Build packet // Build packet
@@ -7956,7 +8088,7 @@ void WiFiScan::sendProbeAttack(uint32_t currentTime) {
void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel, uint8_t mac[6]) { void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel, uint8_t mac[6]) {
WiFiScan::set_channel = channel; WiFiScan::set_channel = channel;
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(channel);
delay(1); delay(1);
// Build AP source packet // Build AP source packet
@@ -8022,7 +8154,7 @@ void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel, String dst_mac_str
// Itterate through all access points in list // Itterate through all access points in list
// Check if active // Check if active
WiFiScan::set_channel = channel; WiFiScan::set_channel = channel;
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(channel);
delay(1); delay(1);
// Build packet // Build packet
@@ -8054,7 +8186,7 @@ void WiFiScan::sendDeauthFrame(uint8_t bssid[6], int channel, String dst_mac_str
void WiFiScan::sendEapolBagMsg1(uint8_t bssid[6], int channel, uint8_t mac[6], uint8_t sec) { void WiFiScan::sendEapolBagMsg1(uint8_t bssid[6], int channel, uint8_t mac[6], uint8_t sec) {
WiFiScan::set_channel = channel; WiFiScan::set_channel = channel;
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(channel);
delay(1); delay(1);
uint8_t frame_size = 153; uint8_t frame_size = 153;
@@ -8106,7 +8238,7 @@ void WiFiScan::sendEapolBagMsg1(uint8_t bssid[6], int channel, uint8_t mac[6], u
void WiFiScan::sendEapolBagMsg1(uint8_t bssid[6], int channel, String dst_mac_str, uint8_t sec) { void WiFiScan::sendEapolBagMsg1(uint8_t bssid[6], int channel, String dst_mac_str, uint8_t sec) {
WiFiScan::set_channel = channel; WiFiScan::set_channel = channel;
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(channel);
delay(1); delay(1);
uint8_t frame_size = 153; uint8_t frame_size = 153;
@@ -8154,7 +8286,7 @@ void WiFiScan::sendEapolBagMsg1(uint8_t bssid[6], int channel, String dst_mac_st
void WiFiScan::sendAssociationSleep(const char* ESSID, uint8_t bssid[6], int channel, uint8_t mac[6]) { void WiFiScan::sendAssociationSleep(const char* ESSID, uint8_t bssid[6], int channel, uint8_t mac[6]) {
WiFiScan::set_channel = channel; WiFiScan::set_channel = channel;
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(channel);
delay(1); delay(1);
static uint16_t sequence_number = 0; static uint16_t sequence_number = 0;
@@ -8281,7 +8413,7 @@ void WiFiScan::sendAssociationSleep(const char* ESSID, uint8_t bssid[6], int cha
void WiFiScan::sendAssociationSleep(const char* ESSID, uint8_t bssid[6], int channel, String dst_mac_str) { void WiFiScan::sendAssociationSleep(const char* ESSID, uint8_t bssid[6], int channel, String dst_mac_str) {
WiFiScan::set_channel = channel; WiFiScan::set_channel = channel;
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(channel);
delay(1); delay(1);
static uint16_t sequence_number = 0; static uint16_t sequence_number = 0;
@@ -8465,7 +8597,7 @@ void WiFiScan::sendDeauthAttack(uint32_t currentTime, String dst_mac_str) {
// Check if active // Check if active
if (access_points->get(i).selected) { if (access_points->get(i).selected) {
this->set_channel = access_points->get(i).channel; this->set_channel = access_points->get(i).channel;
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE); this->changeChannel(this->set_channel);
delay(1); delay(1);
// Build packet // Build packet
@@ -9363,7 +9495,8 @@ void WiFiScan::channelHop(bool filtered, bool ranged)
#endif #endif
} }
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE); //esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE);
this->changeChannel(this->set_channel);
delay(1); delay(1);
} }
@@ -10071,13 +10204,21 @@ void WiFiScan::main(uint32_t currentTime)
this->ble_scanning = false; this->ble_scanning = false;
} }
else { else {
pBLEScan->start(0, scanCompleteCB, false); if (WiFi.scanComplete() != WIFI_SCAN_RUNNING) {
this->ble_scanning = true; pBLEScan->start(0, scanCompleteCB, false);
return; this->ble_scanning = true;
return;
}
} }
#endif #endif
if (currentScanMode == BT_SCAN_FLOCK) if (currentScanMode == BT_SCAN_FLOCK)
channelHop(); channelHop();
else if (currentScanMode == BT_SCAN_FLOCK_WARDRIVE) {
#ifdef HAS_GPS
if (gps_obj.getGpsModuleStatus())
this->executeWarDrive();
#endif
}
} }
} }
else if (currentScanMode == WIFI_PING_SCAN) { else if (currentScanMode == WIFI_PING_SCAN) {
@@ -10479,13 +10620,23 @@ void WiFiScan::main(uint32_t currentTime)
// Need this for loop because getTouch causes ~10ms delay // Need this for loop because getTouch causes ~10ms delay
// which makes beacon spam less effective // which makes beacon spam less effective
for (int i = 0; i < access_points->size(); i++) { for (int i = 0; i < access_points->size(); i++) {
if (access_points->get(i).selected) if (access_points->get(i).selected) {
this->broadcastCustomBeacon(currentTime, ssid{access_points->get(i).essid, random(1, 12), {random(256), #ifndef HAS_DUAL_BAND
random(256), this->broadcastCustomBeacon(currentTime, ssid{access_points->get(i).essid, random(1, 12), {random(256),
random(256), random(256),
random(256), random(256),
random(256), random(256),
random(256)}}); random(256),
random(256)}});
#else
this->broadcastCustomBeacon(currentTime, ssid{access_points->get(i).essid, dual_band_channels[random(0, DUAL_BAND_CHANNELS)], {random(256),
random(256),
random(256),
random(256),
random(256),
random(256)}});
#endif
}
} }

View File

@@ -8,7 +8,7 @@
#include "configs.h" #include "configs.h"
//#include "esp_heap_caps.h" #include "esp_heap_caps.h"
struct mac_addr { struct mac_addr {
unsigned char bytes[6]; unsigned char bytes[6];
@@ -27,128 +27,6 @@ struct ProbeReqSsid {
uint8_t requests; uint8_t requests;
}; };
/*const char apple_ouis[][9] PROGMEM = {
"00:17:F2", "00:1E:C2", "00:26:08", "F8:1E:DF", "BC:92:6B",
"28:E0:2C", "3C:07:54", "7C:D1:C3", "DC:A9:04", "F0:D1:A9",
"C0:2C:5C", "00:03:93", "00:03:94", "00:03:95", "00:03:96",
"00:03:97", "00:03:98", "00:03:99", "00:03:9A", "00:03:9B",
"00:03:9C", "00:03:9D", "00:03:9E", "00:03:9F", "00:03:A0",
"00:03:A1", "00:03:A2", "00:03:A3", "00:03:A4", "00:03:A5",
"00:03:A6", "00:03:A7", "00:03:A8", "00:03:A9", "00:03:AA",
"00:03:AB", "00:03:AC", "00:03:AD", "00:03:AE", "00:03:AF",
"00:03:B0", "00:03:B1", "00:03:B2", "00:03:B3", "00:03:B4",
"00:03:B5", "00:03:B6", "00:03:B7", "00:03:B8", "00:03:B9",
"00:03:BA", "00:03:BB", "00:03:BC", "00:03:BD", "00:03:BE",
"00:03:BF", "00:03:C0", "00:03:C1", "00:03:C2", "00:03:C3",
"00:03:C4", "00:03:C5", "00:03:C6", "00:03:C7", "00:03:C8",
"00:03:C9", "00:03:CA", "00:03:CB", "00:03:CC", "00:03:CD",
"00:03:CE", "00:03:CF", "00:03:D0", "00:03:D1", "00:03:D2",
"00:03:D3", "00:03:D4", "00:03:D5", "00:03:D6", "00:03:D7",
"00:03:D8", "00:03:D9", "00:03:DA", "00:03:DB", "00:03:DC",
"00:03:DD", "00:03:DE", "00:03:DF", "00:03:E0", "00:03:E1",
"00:03:E2", "00:03:E3", "00:03:E4", "00:03:E5", "00:03:E6",
"00:03:E7", "00:03:E8", "00:03:E9", "00:03:EA", "00:03:EB",
"00:03:EC", "00:03:ED", "00:03:EE", "00:03:EF", "00:03:F0",
"00:03:F1", "00:03:F2", "00:03:F3", "00:03:F4", "00:03:F5",
"00:03:F6", "00:03:F7", "00:03:F8", "00:03:F9", "00:03:FA",
"00:03:FB", "00:03:FC", "00:03:FD", "00:03:FE", "00:03:FF"
};
const char asus_ouis[][9] PROGMEM = {
"00:0C:6E", "00:0E:A6", "00:11:2F", "00:11:D8", "00:13:D4", "00:15:F2", "00:17:31", "00:18:F3", "00:1A:92",
"00:1B:FC", "00:1D:60", "00:1E:8C", "00:1F:C6", "00:22:15", "00:23:54", "00:24:8C", "00:26:18", "00:E0:18",
"04:42:1A", "04:92:26", "04:D4:C4", "04:D9:F5", "08:60:6E", "08:62:66", "08:BF:B8", "0C:9D:92", "10:7B:44",
"10:7C:61", "10:BF:48", "10:C3:7B", "14:DA:E9", "14:DD:A9", "18:31:BF", "1C:87:2C", "1C:B7:2C", "20:CF:30",
"24:4B:FE", "2C:4D:54", "2C:56:DC", "2C:FD:A1", "30:5A:3A", "30:85:A9", "34:97:F6", "38:2C:4A", "38:D5:47",
"3C:7C:3F", "40:16:7E", "40:B0:76", "48:5B:39", "4C:ED:FB", "50:46:5D", "50:EB:F6", "54:04:A6", "54:A0:50",
"58:11:22", "60:45:CB", "60:A4:4C", "60:CF:84", "70:4D:7B", "70:8B:CD", "74:D0:2B", "78:24:AF", "7C:10:C9",
"88:D7:F6", "90:E6:BA", "9C:5C:8E", "A0:36:BC", "A8:5E:45", "AC:22:0B", "AC:9E:17", "B0:6E:BF", "BC:AE:C5",
"BC:EE:7B", "C8:60:00", "C8:7F:54", "CC:28:AA", "D0:17:C2", "D4:5D:64", "D8:50:E6", "E0:3F:49", "E0:CB:4E",
"E8:9C:25", "F0:2F:74", "F0:79:59", "F4:6D:04", "F8:32:E4", "FC:34:97", "FC:C2:33"
};
const char belkin_ouis[][9] PROGMEM = {
"00:11:50", "00:17:3F", "00:30:BD", "08:BD:43", "14:91:82", "24:F5:A2", "30:23:03", "80:69:1A", "94:10:3E",
"94:44:52", "B4:75:0E", "C0:56:27", "C4:41:1E", "D8:EC:5E", "E8:9F:80", "EC:1A:59", "EC:22:80"
};
const char cisco_ouis[][9] PROGMEM = {
"00:1B:0D", "00:1D:45", "00:1E:7A", "00:25:9C", "00:50:56",
"40:55:39", "58:8D:09", "A4:4C:C8", "F8:0F:F9"
};
const char dlink_ouis[][9] PROGMEM = {
"00:05:5D", "00:0D:88", "00:0F:3D", "00:11:95", "00:13:46", "00:15:E9", "00:17:9A", "00:19:5B", "00:1B:11",
"00:1C:F0", "00:1E:58", "00:21:91", "00:22:B0", "00:24:01", "00:26:5A", "00:AD:24", "04:BA:D6", "08:5A:11",
"0C:0E:76", "0C:B6:D2", "10:62:EB", "10:BE:F5", "14:D6:4D", "18:0F:76", "1C:5F:2B", "1C:7E:E5", "1C:AF:F7",
"1C:BD:B9", "28:3B:82", "30:23:03", "34:08:04", "34:0A:33", "3C:1E:04", "3C:33:32", "40:86:CB", "40:9B:CD",
"54:B8:0A", "5C:D9:98", "60:63:4C", "64:29:43", "6C:19:8F", "6C:72:20", "74:44:01", "74:DA:DA", "78:32:1B",
"78:54:2E", "78:98:E8", "80:26:89", "84:C9:B2", "88:76:B9", "90:8D:78", "90:94:E4", "9C:D6:43", "A0:63:91",
"A0:AB:1B", "A4:2A:95", "A8:63:7D", "AC:F1:DF", "B4:37:D8", "B8:A3:86", "BC:0F:9A", "BC:22:28", "BC:F6:85",
"C0:A0:BB", "C4:A8:1D", "C4:E9:0A", "C8:78:7D", "C8:BE:19", "C8:D3:A3", "CC:B2:55", "D8:FE:E3", "DC:EA:E7",
"E0:1C:FC", "E4:6F:13", "E8:CC:18", "EC:22:80", "EC:AD:E0", "F0:7D:68", "F0:B4:D2", "F4:8C:EB", "F8:E9:03",
"FC:75:16"
};
const char google_ouis[][9] PROGMEM = {
"3C:5A:B4", "5C:BF:C0", "78:4F:43", "A4:77:33", "D4:97:0B", "F0:72:8C"
};
const char huawei_ouis[][9] PROGMEM = {
"00:1A:2B", "28:FF:3C", "5C:4C:A9", "8C:71:F8", "C8:D1:5E",
"E4:4C:A9", "F4:12:FA"
};
const char lg_ouis[][9] PROGMEM = {
"00:17:C0", "18:AF:8F", "38:2D:AE", "5C:87:9C", "68:27:37",
"78:5D:C8", "94:65:2D", "A4:77:33", "C4:43:8F"
};
const char linksys_ouis[][9] PROGMEM = {
"00:04:5A", "00:06:25", "00:0C:41", "00:0E:08", "00:0F:66", "00:12:17", "00:13:10", "00:14:BF", "00:16:B6",
"00:18:39", "00:18:F8", "00:1A:70", "00:1C:10", "00:1D:7E", "00:1E:E5", "00:21:29", "00:22:6B", "00:23:69",
"00:25:9C", "00:23:54", "00:24:B2", "00:31:92", "00:5F:67", "10:27:F5", "14:EB:B6", "1C:61:B4", "20:36:26",
"28:87:BA", "30:5A:3A", "2C:FD:A1", "30:23:03", "30:46:9A", "40:ED:00", "48:22:54", "50:91:E3", "54:AF:97",
"5C:A2:F4", "5C:A6:E6", "5C:E9:31", "60:A4:B7", "68:7F:F0", "6C:5A:B0", "78:8C:B5", "7C:C2:C6", "9C:53:22",
"9C:A2:F4", "A8:42:A1", "AC:15:A2", "B0:A7:B9", "B4:B0:24", "C0:06:C3", "CC:68:B6", "E8:48:B8", "F0:A7:31"
};
const char netgear_ouis[][9] PROGMEM = {
"00:09:5B", "00:0F:B5", "00:14:6C"
};
const char oneplus_ouis[][9] PROGMEM = {
"08:EC:A9", "30:9C:23", "38:78:62", "64:A2:F9", "74:AC:B9",
"A8:14:51", "B4:86:55", "D8:CB:8A", "F4:8C:50"
};
const char samsung_ouis[][9] PROGMEM = {
"00:12:47", "00:15:99", "00:16:6B", "00:1B:FC", "10:5F:06",
"18:59:36", "20:02:AF", "24:4B:03", "38:2D:3D", "40:B8:37",
"00:1F:12", "00:1D:0F", "00:1A:9A", "00:19:E1", "00:18:FF",
"00:17:77", "00:16:72", "00:14:69", "00:13:65", "00:12:60",
"30:37:0D", "40:8C:47", "50:55:5F", "60:47:A1", "70:0A:AD",
"80:61:43", "90:48:F7", "A0:4C:CB", "B0:5E:93", "C0:3D:F5",
"D0:31:AA", "E0:4F:02", "F0:3B:94"
};
const char sony_ouis[][9] PROGMEM = {
"00:19:C5", "00:1B:59", "00:1E:DC", "10:68:3F", "54:42:49",
"A8:E3:EE", "B8:F9:34", "CC:5D:4E", "E8:89:2F"
};
const char tplink_ouis[][9] PROGMEM = {
"00:31:92", "00:5F:67", "10:27:F5", "14:EB:B6", "1C:61:B4", "20:36:26", "28:87:BA", "30:DE:4B", "34:60:F9",
"3C:52:A1", "40:ED:00", "48:22:54", "50:91:E3", "54:AF:97", "5C:62:8B", "5C:A6:E6", "5C:E9:31", "60:A4:B7",
"68:7F:F0", "6C:5A:B0", "78:8C:B5", "7C:C2:C6", "9C:53:22", "9C:A2:F4", "A8:42:A1", "AC:15:A2", "B0:A7:B9",
"B4:B0:24", "C0:06:C3", "CC:68:B6", "E8:48:B8", "F0:A7:31"
};
const char xiaomi_ouis[][9] PROGMEM = {
"04:CF:8C", "18:59:36", "38:1A:2D", "64:B4:73", "78:02:F8",
"90:4E:91", "C4:0B:CB", "D0:DB:32"
};*/
uint8_t getDRAMUsagePercent() { uint8_t getDRAMUsagePercent() {
//size_t total = heap_caps_get_total_size(MALLOC_CAP_8BIT); //size_t total = heap_caps_get_total_size(MALLOC_CAP_8BIT);
//size_t free = heap_caps_get_free_size(MALLOC_CAP_8BIT); //size_t free = heap_caps_get_free_size(MALLOC_CAP_8BIT);
@@ -164,7 +42,7 @@ uint8_t getDRAMUsagePercent() {
#ifdef HAS_PSRAM #ifdef HAS_PSRAM
uint8_t getPSRAMUsagePercent() { uint8_t getPSRAMUsagePercent() {
/*//size_t total = heap_caps_get_total_size(MALLOC_CAP_SPIRAM); //size_t total = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
//size_t free = heap_caps_get_free_size(MALLOC_CAP_SPIRAM); //size_t free = heap_caps_get_free_size(MALLOC_CAP_SPIRAM);
size_t total = ESP.getPsramSize(); size_t total = ESP.getPsramSize();
@@ -174,8 +52,7 @@ uint8_t getDRAMUsagePercent() {
size_t used = total - free; size_t used = total - free;
uint8_t percent = (used * 100) / total; uint8_t percent = (used * 100) / total;
return percent;*/ return percent;
return getDRAMUsagePercent();
} }
#endif #endif