mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2026-07-28 14:47:16 -07:00
Merge pull request #1362 from justcallmekoko/develop
Add commands upload, foxhunt, list bluetooth
This commit is contained in:
@@ -275,6 +275,7 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_LIST_AP_CMD_D);
|
||||
Serial.println(HELP_LIST_AP_CMD_E);
|
||||
Serial.println(HELP_LIST_AP_CMD_F);
|
||||
Serial.println(HELP_LIST_AP_CMD_G);
|
||||
Serial.println(HELP_SEL_CMD_A);
|
||||
Serial.println(HELP_SSID_CMD_A);
|
||||
Serial.println(HELP_SSID_CMD_B);
|
||||
@@ -287,6 +288,7 @@ void CommandLine::runCommand(String input) {
|
||||
Serial.println(HELP_MAC_CMD_D);
|
||||
Serial.println(HELP_ADD_CMD_A);
|
||||
Serial.println(HELP_ADD_CMD_B);
|
||||
Serial.println(HELP_UPLOAD_CMD);
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
#ifdef HAS_BT
|
||||
@@ -496,6 +498,53 @@ void CommandLine::runCommand(String input) {
|
||||
}
|
||||
}
|
||||
|
||||
else if (cmd_args.get(0) == UPLOAD_CMD) {
|
||||
#ifdef HAS_DIRECT_UPLOAD
|
||||
int dest_sw = this->argSearch(&cmd_args, "-d");
|
||||
String upload_dest_arg = cmd_args.get(dest_sw + 1);
|
||||
int upload_dest = -1;
|
||||
|
||||
if (upload_dest_arg == "wdg")
|
||||
upload_dest = WDG_UPLOAD;
|
||||
else if (upload_dest_arg == "wigle")
|
||||
upload_dest = WIGLE_UPLOAD;
|
||||
else if (upload_dest_arg == "both")
|
||||
upload_dest = BOTH_UPLOAD;
|
||||
|
||||
if (upload_dest > -1) {
|
||||
String ssid = settings_obj.loadSetting<String>("ClientSSID");
|
||||
String pw = settings_obj.loadSetting<String>("ClientPW");
|
||||
|
||||
Serial.println("Connecting to " + ssid);
|
||||
|
||||
if (!wifi_scan_obj.joinWiFi(ssid, pw, false)) {
|
||||
Serial.println("Failed to connected to " + ssid);
|
||||
return;
|
||||
}
|
||||
delay(1000);
|
||||
for (int i = 0; i < sd_obj.sd_files->size(); i++) {
|
||||
if (sd_obj.sd_files->get(i).startsWith("wardrive_") || sd_obj.sd_files->get(i).startsWith("wigle-")) {
|
||||
if (!sd_obj.sd_files->get(i).endsWith(".wigle") && !sd_obj.sd_files->get(i).endsWith(".wdg") && !sd_obj.sd_files->get(i).endsWith(".gpx")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, upload_dest)) {
|
||||
Serial.println("Upload OK");
|
||||
} else {
|
||||
Serial.println("WiGLE failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
WiFi.disconnect(true);
|
||||
delay(100);
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF, TFT_RED);
|
||||
|
||||
Serial.println("Upload complete");
|
||||
}
|
||||
#else
|
||||
Serial.println("Direct upload not supported");
|
||||
#endif
|
||||
}
|
||||
|
||||
else if (cmd_args.get(0) == SETTINGS_CMD) {
|
||||
int ss_sw = this->argSearch(&cmd_args, "-s"); // Set setting
|
||||
int re_sw = this->argSearch(&cmd_args, "-r"); // Reset setting
|
||||
@@ -538,14 +587,30 @@ void CommandLine::runCommand(String input) {
|
||||
|
||||
// Signal strength scan
|
||||
if (cmd_args.get(0) == SIGSTREN_CMD) {
|
||||
this->startScanFromCLI(WIFI_SCAN_SIG_STREN, TFT_MAGENTA, "Signal Strength Scan");
|
||||
/*Serial.println(STOPSCAN_CMD);
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.clearScreen();
|
||||
menu_function_obj.drawStatusBar();
|
||||
#endif
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_MAGENTA);*/
|
||||
wifi_scan_obj.renderPacketRate();
|
||||
int bt_sw = this->argSearch(&cmd_args, "-b");
|
||||
int wf_sw = this->argSearch(&cmd_args, "-w");
|
||||
if (wf_sw > -1) {
|
||||
int targ_index = cmd_args.get(wf_sw + 1).toInt();
|
||||
if (targ_index < access_points->size()) {
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
AccessPoint access_point = access_points->get(i);
|
||||
access_point.selected = (i == targ_index);
|
||||
access_points->set(i, access_point);
|
||||
}
|
||||
this->startScanFromCLI(WIFI_SCAN_SIG_STREN, TFT_GREEN, "Fox Hunt");
|
||||
}
|
||||
}
|
||||
else if (bt_sw > -1) {
|
||||
int targ_index = cmd_args.get(bt_sw + 1).toInt();
|
||||
if (targ_index < ble_devices->size()) {
|
||||
for (int i = 0; i < ble_devices->size(); i++) {
|
||||
BleDevice ble_device = ble_devices->get(i);
|
||||
ble_device.selected = (i == targ_index);
|
||||
ble_devices->set(i, ble_device);
|
||||
}
|
||||
this->startScanFromCLI(BT_SCAN_FOX_HUNT, TFT_CYAN, "Bluetooth Fox Hunt");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Packet count
|
||||
else if (cmd_args.get(0) == PACKET_COUNT_CMD) {
|
||||
@@ -1262,6 +1327,7 @@ void CommandLine::runCommand(String input) {
|
||||
int at_sw = this->argSearch(&cmd_args, "-t");
|
||||
int ip_sw = this->argSearch(&cmd_args, "-i");
|
||||
int pr_sw = this->argSearch(&cmd_args, "-p");
|
||||
int bt_sw = this->argSearch(&cmd_args, "-b");
|
||||
|
||||
// List APs
|
||||
if (ap_sw != -1) {
|
||||
@@ -1276,6 +1342,12 @@ void CommandLine::runCommand(String input) {
|
||||
}
|
||||
this->showCounts(count_selected);
|
||||
}
|
||||
else if (bt_sw != -1) {
|
||||
for (int i = 0; i < ble_devices->size(); i++) {
|
||||
BleDevice ble_device = ble_devices->get(i);
|
||||
Serial.println("[" + (String)i + "][RSSI:" + (String)ble_device.rssi + "] " + ble_device.name);
|
||||
}
|
||||
}
|
||||
// List IPs
|
||||
else if (ip_sw != -1) {
|
||||
for (int i = 0; i < ipList->size(); i++) {
|
||||
|
||||
@@ -35,6 +35,7 @@ extern Settings settings_obj;
|
||||
extern LedInterface led_obj;
|
||||
#endif
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
extern LinkedList<BleDevice>* ble_devices;
|
||||
extern LinkedList<AirTag>* airtags;
|
||||
extern LinkedList<ssid>* ssids;
|
||||
extern LinkedList<Station>* stations;
|
||||
@@ -64,7 +65,7 @@ const char PROGMEM GPS_TRACKER_CMD[] = "gpstracker";
|
||||
const char PROGMEM EVIL_PORTAL_CMD[] = "evilportal";
|
||||
const char PROGMEM KARMA_CMD[] = "karma";
|
||||
const char PROGMEM PACKET_COUNT_CMD[] = "packetcount";
|
||||
const char PROGMEM SIGSTREN_CMD[] = "sigmon";
|
||||
const char PROGMEM SIGSTREN_CMD[] = "foxhunt";
|
||||
const char PROGMEM SCAN_ALL_CMD[] = "scanall";
|
||||
//const char PROGMEM SCANSTA_CMD[] = "scansta";
|
||||
const char PROGMEM SNIFF_RAW_CMD[] = "sniffraw";
|
||||
@@ -109,6 +110,7 @@ const char PROGMEM MAC_CMD_B[] = "randstamac";
|
||||
const char PROGMEM MAC_CMD_C[] = "cloneapmac";
|
||||
const char PROGMEM MAC_CMD_D[] = "clonestamac";
|
||||
const char PROGMEM ADD_CMD[] = "add";
|
||||
const char PROGMEM UPLOAD_CMD[] = "upload";
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
const char PROGMEM BT_SPAM_CMD[] = "blespam";
|
||||
@@ -140,7 +142,7 @@ const char PROGMEM HELP_NMEA_CMD[] = "nmea";
|
||||
const char PROGMEM HELP_EVIL_PORTAL_CMD[] = "evilportal [-c start [-w html.html]/sethtml <html.html>]";
|
||||
const char PROGMEM HELP_KARMA_CMD[] = "karma -p <index>";
|
||||
const char PROGMEM HELP_PACKET_COUNT_CMD[] = "packetcount";
|
||||
const char PROGMEM HELP_SIGSTREN_CMD[] = "sigmon";
|
||||
const char PROGMEM HELP_SIGSTREN_CMD[] = "foxhunt -b/-w";
|
||||
const char PROGMEM HELP_SCAN_ALL_CMD[] = "scanall";
|
||||
//const char PROGMEM HELP_SCANSTA_CMD[] = "scansta";
|
||||
const char PROGMEM HELP_SNIFF_RAW_CMD[] = "sniffraw";
|
||||
@@ -169,6 +171,7 @@ const char PROGMEM HELP_LIST_AP_CMD_C[] = "list -c";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_D[] = "list -t";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_E[] = "list -i";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_F[] = "list -p";
|
||||
const char PROGMEM HELP_LIST_AP_CMD_G[] = "list -b";
|
||||
const char PROGMEM HELP_INFO_CMD[] = "info [-a <index>]";
|
||||
const char PROGMEM HELP_SEL_CMD_A[] = "select -a/-s/-c <index (comma separated)>/-f \"equals <String> or contains <String>\"";
|
||||
const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g <count>/-n <name>]";
|
||||
@@ -182,6 +185,7 @@ const char PROGMEM HELP_MAC_CMD_C[] = "cloneapmac [-a <index>]";
|
||||
const char PROGMEM HELP_MAC_CMD_D[] = "clonestamac [-s <index>]";
|
||||
const char PROGMEM HELP_ADD_CMD_A[] = "add -a -b <mac> [-ch <channel>] [-e <ssid>]";
|
||||
const char PROGMEM HELP_ADD_CMD_B[] = "add -c -b <mac> -ap <ap_index>";
|
||||
const char PROGMEM HELP_UPLOAD_CMD[] = "upload -d <wdg/wigle/both>";
|
||||
|
||||
// Bluetooth sniff/scan
|
||||
const char PROGMEM HELP_BT_SNIFF_CMD[] = "sniffbt [-t] <airtag/flipper/flock/meta>";
|
||||
|
||||
@@ -2635,13 +2635,15 @@ void MenuFunctions::RunSetup()
|
||||
delay(1000);
|
||||
for (int i = 0; i < sd_obj.sd_files->size(); i++) {
|
||||
if (sd_obj.sd_files->get(i).startsWith("wardrive_") || sd_obj.sd_files->get(i).startsWith("wigle-")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, WIGLE_UPLOAD)) {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WiGLE OK", TFT_HEIGHT / 2);
|
||||
} else {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WiGLE failed", TFT_HEIGHT / 2);
|
||||
if (!sd_obj.sd_files->get(i).endsWith(".wigle") && !sd_obj.sd_files->get(i).endsWith(".wdg") && !sd_obj.sd_files->get(i).endsWith(".gpx")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, WIGLE_UPLOAD)) {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WiGLE OK", TFT_HEIGHT / 2);
|
||||
} else {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WiGLE failed", TFT_HEIGHT / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2684,13 +2686,15 @@ void MenuFunctions::RunSetup()
|
||||
delay(1000);
|
||||
for (int i = 0; i < sd_obj.sd_files->size(); i++) {
|
||||
if (sd_obj.sd_files->get(i).startsWith("wardrive_") || sd_obj.sd_files->get(i).startsWith("wigle-")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, WDG_UPLOAD)) {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WDG OK", TFT_HEIGHT / 2);
|
||||
} else {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WDG failed", TFT_HEIGHT / 2);
|
||||
if (!sd_obj.sd_files->get(i).endsWith(".wigle") && !sd_obj.sd_files->get(i).endsWith(".wdg") && !sd_obj.sd_files->get(i).endsWith(".gpx")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, WDG_UPLOAD)) {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WDG OK", TFT_HEIGHT / 2);
|
||||
} else {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("WDG failed", TFT_HEIGHT / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2733,13 +2737,15 @@ void MenuFunctions::RunSetup()
|
||||
delay(1000);
|
||||
for (int i = 0; i < sd_obj.sd_files->size(); i++) {
|
||||
if (sd_obj.sd_files->get(i).startsWith("wardrive_") || sd_obj.sd_files->get(i).startsWith("wigle-")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, BOTH_UPLOAD)) {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("Upload OK", TFT_HEIGHT / 2);
|
||||
} else {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("Upload failed", TFT_HEIGHT / 2);
|
||||
if (!sd_obj.sd_files->get(i).endsWith(".wigle") && !sd_obj.sd_files->get(i).endsWith(".wdg") && !sd_obj.sd_files->get(i).endsWith(".gpx")) {
|
||||
Serial.println("Uploading " + sd_obj.sd_files->get(i) + "...");
|
||||
if (wifi_scan_obj.uploadFile("/" + sd_obj.sd_files->get(i), true, BOTH_UPLOAD)) {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("Upload OK", TFT_HEIGHT / 2);
|
||||
} else {
|
||||
display_obj.clearScreen();
|
||||
display_obj.showCenterText("Upload failed", TFT_HEIGHT / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5314,7 +5314,7 @@ void WiFiScan::RunRawScan(uint8_t scan_mode, uint16_t color) {
|
||||
}
|
||||
else {
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.drawCentreString("Signal Monitor", TFT_WIDTH / 2, 16, 2);
|
||||
display_obj.tft.drawCentreString("Fox Hunt", TFT_WIDTH / 2, 16, 2);
|
||||
}
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
|
||||
Reference in New Issue
Block a user