diff --git a/esp32_marauder/CommandLine.cpp b/esp32_marauder/CommandLine.cpp index c39c45b..f6503e3 100644 --- a/esp32_marauder/CommandLine.cpp +++ b/esp32_marauder/CommandLine.cpp @@ -242,6 +242,7 @@ void CommandLine::runCommand(String input) { Serial.println(HELP_LIST_AP_CMD_A); Serial.println(HELP_LIST_AP_CMD_B); Serial.println(HELP_LIST_AP_CMD_C); + Serial.println(HELP_LIST_AP_CMD_D); Serial.println(HELP_SEL_CMD_A); Serial.println(HELP_SSID_CMD_A); Serial.println(HELP_SSID_CMD_B); @@ -252,6 +253,7 @@ void CommandLine::runCommand(String input) { #ifdef HAS_BT Serial.println(HELP_BT_SNIFF_CMD); Serial.println(HELP_BT_SPAM_CMD); + Serial.println(HELP_BT_SPOOFAT_CMD); //Serial.println(HELP_BT_SWIFTPAIR_SPAM_CMD); //Serial.println(HELP_BT_SAMSUNG_SPAM_CMD); //Serial.println(HELP_BT_SPAM_ALL_CMD); @@ -877,6 +879,34 @@ void CommandLine::runCommand(String input) { Serial.println("Bluetooth not supported"); #endif } + else if (cmd_args.get(0) == BT_SPOOFAT_CMD) { + int at_sw = this->argSearch(&cmd_args, "-t"); + if (at_sw != -1) { + #ifdef HAS_BT + int target_mac = cmd_args.get(at_sw + 1).toInt(); + if (target_mac < airtags->size()) { + for (int i = 0; i < airtags->size(); i++) { + AirTag at = airtags->get(i); + if (i == target_mac) + at.selected = true; + else + at.selected = false; + airtags->set(i, at); + } + Serial.println("Spoofing Airtag: " + airtags->get(target_mac).mac); + #ifdef HAS_SCREEN + display_obj.clearScreen(); + menu_function_obj.drawStatusBar(); + #endif + wifi_scan_obj.StartScan(BT_SPOOF_AIRTAG, TFT_WHITE); + } + else { + Serial.println("Provided index is out of range: " + (String)target_mac); + return; + } + #endif + } + } else if (cmd_args.get(0) == BT_SPAM_CMD) { int bt_type_sw = this->argSearch(&cmd_args, "-t"); if (bt_type_sw != -1) { @@ -1093,6 +1123,7 @@ void CommandLine::runCommand(String input) { int ap_sw = this->argSearch(&cmd_args, "-a"); int ss_sw = this->argSearch(&cmd_args, "-s"); int cl_sw = this->argSearch(&cmd_args, "-c"); + int at_sw = this->argSearch(&cmd_args, "-t"); // List APs if (ap_sw != -1) { @@ -1139,6 +1170,12 @@ void CommandLine::runCommand(String input) { } this->showCounts(count_selected); } + // List airtags + else if (at_sw != -1) { + for (int i = 0; i < airtags->size(); i++) { + Serial.println("[" + (String)i + "]MAC: " + airtags->get(i).mac); + } + } else { Serial.println("You did not specify which list to show"); return; diff --git a/esp32_marauder/CommandLine.h b/esp32_marauder/CommandLine.h index f63a6d9..b9e7454 100644 --- a/esp32_marauder/CommandLine.h +++ b/esp32_marauder/CommandLine.h @@ -31,6 +31,7 @@ extern WiFiScan wifi_scan_obj; extern Settings settings_obj; extern LedInterface led_obj; extern LinkedList* access_points; +extern LinkedList* airtags; extern LinkedList* ssids; extern LinkedList* stations; extern const String PROGMEM version_number; @@ -83,6 +84,7 @@ const char PROGMEM LOAD_CMD[] = "load"; // Bluetooth sniff/scan const char PROGMEM BT_SPAM_CMD[] = "blespam"; const char PROGMEM BT_SNIFF_CMD[] = "sniffbt"; +const char PROGMEM BT_SPOOFAT_CMD[] = "spoofat"; //const char PROGMEM BT_SOUR_APPLE_CMD[] = "sourapple"; //const char PROGMEM BT_SWIFTPAIR_SPAM_CMD[] = "swiftpair"; //const char PROGMEM BT_SAMSUNG_SPAM_CMD[] = "samsungblespam"; @@ -127,6 +129,7 @@ const char PROGMEM HELP_ATTACK_CMD[] = "attack -t or contains \""; const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g /-n ]"; const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r "; @@ -136,6 +139,7 @@ const char PROGMEM HELP_LOAD_CMD[] = "load -a/-s"; // Bluetooth sniff/scan const char PROGMEM HELP_BT_SNIFF_CMD[] = "sniffbt [-t] "; const char PROGMEM HELP_BT_SPAM_CMD[] = "blespam -t "; +const char PROGMEM HELP_BT_SPOOFAT_CMD[] = "spoofat -t "; //const char PROGMEM HELP_BT_SOUR_APPLE_CMD[] = "sourapple"; //const char PROGMEM HELP_BT_SWIFTPAIR_SPAM_CMD[] = "swiftpair"; //const char PROGMEM HELP_BT_SAMSUNG_SPAM_CMD[] = "samsungblespam";