diff --git a/Firmware/BeamStalker/main/BeamStalker-cardputer.cpp b/Firmware/BeamStalker/main/BeamStalker-cardputer.cpp index cc12186..b878019 100644 --- a/Firmware/BeamStalker/main/BeamStalker-cardputer.cpp +++ b/Firmware/BeamStalker/main/BeamStalker-cardputer.cpp @@ -73,6 +73,7 @@ int mainTask() { RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -94,8 +95,7 @@ int mainTask() { else if (SELECTp) { - vTaskDelay(pdMS_TO_TICKS(50)); - + vTaskDelay(pdMS_TO_TICKS(300)); switch (MainMenuSelector) { int ret; case 0: // WiFcker diff --git a/Firmware/BeamStalker/main/firmware/apps/BLE/ble_main.cpp b/Firmware/BeamStalker/main/firmware/apps/BLE/ble_main.cpp index 13f9b42..00f97a7 100644 --- a/Firmware/BeamStalker/main/firmware/apps/BLE/ble_main.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/BLE/ble_main.cpp @@ -30,6 +30,7 @@ int bleMenuTask() { RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -41,10 +42,11 @@ int bleMenuTask() { vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); + switch (Selector) { int ret; case 0: // BLESpam - M5GFX_clear_screen(); printf ("ble_spam_task - starting\n"); ret = BLESpam(); if (ret != 0) { diff --git a/Firmware/BeamStalker/main/firmware/apps/BLE/ble_spam.cpp b/Firmware/BeamStalker/main/firmware/apps/BLE/ble_spam.cpp index ef03588..f9c010c 100644 --- a/Firmware/BeamStalker/main/firmware/apps/BLE/ble_spam.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/BLE/ble_spam.cpp @@ -132,7 +132,7 @@ int BLESpam() { int Selector = 0; struct menu Menu; - Menu.name = "~/WiFi/BLE Spm"; + Menu.name = "~/BLE/BleSpm"; Menu.length = 2; // devices, statack Menu.elements = new item[Menu.length]; @@ -176,6 +176,9 @@ int BLESpam() { ESP_ERROR_CHECK(esp_bt_controller_disable()); ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_BLE)); /* END */ + + vTaskDelay(pdMS_TO_TICKS(300)); + return 0; } else if (UPp) { @@ -195,6 +198,7 @@ int BLESpam() { vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); M5GFX_clear_screen(); switch (Selector) { case 1: // Start attack @@ -220,6 +224,7 @@ int BLESpam() { vTaskDelay(pdMS_TO_TICKS(delayMilliseconds)); esp_ble_gap_stop_advertising(); } + vTaskDelay(pdMS_TO_TICKS(300)); break; } } diff --git a/Firmware/BeamStalker/main/firmware/apps/Wifi/app_wifi_sniffer.cpp b/Firmware/BeamStalker/main/firmware/apps/Wifi/app_wifi_sniffer.cpp index 5b440db..1720234 100644 --- a/Firmware/BeamStalker/main/firmware/apps/Wifi/app_wifi_sniffer.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/Wifi/app_wifi_sniffer.cpp @@ -6,7 +6,7 @@ int App_Wifi_Sniffer() { int Selector = 0; struct menu Menu; - Menu.name = "~/WiFi/Wifi sniffer"; + Menu.name = "~/WiFi/WifiSniffer"; Menu.length = 2; // filter, statasniffing Menu.elements = new item[Menu.length]; @@ -42,6 +42,7 @@ int App_Wifi_Sniffer() { if (RETURNp) { stop_wifi(); + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } @@ -62,7 +63,9 @@ int App_Wifi_Sniffer() { // vTaskDelay(pdMS_TO_TICKS(50)); // } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); M5GFX_clear_screen(); + switch (Selector) { case 0: //filter filters = select_filter_menu(&filter_count, t_filter, t_filter_count); @@ -70,9 +73,9 @@ int App_Wifi_Sniffer() { break; case 1: // Start sniffing vTaskDelay(pdMS_TO_TICKS(100)); - - M5GFX_display_text(0, 0, "Sniffing for 60s !\nPress any key to exit...", TFT_WHITE); - sniff(60, filters, 1); + init_sniff_pps_timer(); + sniff(1000, filters, 1); + stop_sniff_pps_timer(); break; } } diff --git a/Firmware/BeamStalker/main/firmware/apps/Wifi/beacon_spam.cpp b/Firmware/BeamStalker/main/firmware/apps/Wifi/beacon_spam.cpp index a15d8e3..6946eff 100644 --- a/Firmware/BeamStalker/main/firmware/apps/Wifi/beacon_spam.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/Wifi/beacon_spam.cpp @@ -122,7 +122,7 @@ int BeaconSpam() { int Selector = 0; struct menu Menu; - Menu.name = "~/WiFi/Bcn Spm"; + Menu.name = "~/WiFi/BcnSpm"; Menu.length = 2; // charset, statack Menu.elements = new item[Menu.length]; @@ -160,6 +160,7 @@ int BeaconSpam() { if (RETURNp) { stop_wifi(); + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } @@ -180,7 +181,9 @@ int BeaconSpam() { vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); M5GFX_clear_screen(); + switch (Selector) { case 1: // Start attack init_pps_timer(); @@ -199,6 +202,7 @@ int BeaconSpam() { } } stop_pps_timer(); + vTaskDelay(pdMS_TO_TICKS(300)); break; } } diff --git a/Firmware/BeamStalker/main/firmware/apps/Wifi/deauther.cpp b/Firmware/BeamStalker/main/firmware/apps/Wifi/deauther.cpp index d86a47f..7002b26 100644 --- a/Firmware/BeamStalker/main/firmware/apps/Wifi/deauther.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/Wifi/deauther.cpp @@ -71,6 +71,7 @@ int Deauther() { if (RETURNp) { stop_wifi(); + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } @@ -92,6 +93,8 @@ int Deauther() { } if (SELECTp) { M5GFX_clear_screen(); + vTaskDelay(pdMS_TO_TICKS(300)); + switch (Selector) { case 0: // Select AP M5GFX_display_text(0, 0, "Scanning...\r", TFT_WHITE); @@ -164,6 +167,7 @@ int Deauther() { stop_wifi(); start_wifi(WIFI_MODE_STA, true); + vTaskDelay(pdMS_TO_TICKS(300)); break; } diff --git a/Firmware/BeamStalker/main/firmware/apps/Wifi/wifi_main.cpp b/Firmware/BeamStalker/main/firmware/apps/Wifi/wifi_main.cpp index c1becd6..1638fd9 100644 --- a/Firmware/BeamStalker/main/firmware/apps/Wifi/wifi_main.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/Wifi/wifi_main.cpp @@ -45,6 +45,7 @@ int wifiMenuTask() { RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -56,10 +57,10 @@ int wifiMenuTask() { vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); switch (Selector) { int ret; case 0: // BeaconSpam - M5GFX_clear_screen(); printf ("beacon_spam_task - starting\n"); ret = BeaconSpam(); if (ret != 0) { @@ -67,7 +68,6 @@ int wifiMenuTask() { } break; case 1: // Deauther - M5GFX_clear_screen(); printf ("deauther_task - starting\n"); ret = Deauther(); if (ret != 0) { @@ -75,7 +75,6 @@ int wifiMenuTask() { } break; case 2: // Sniff Wifi - M5GFX_clear_screen(); printf ("wifi_sniffer_task - starting\n"); ret = App_Wifi_Sniffer(); if (ret != 0) { diff --git a/Firmware/BeamStalker/main/firmware/apps/options.cpp b/Firmware/BeamStalker/main/firmware/apps/options.cpp index 6ebd3a9..f405a62 100644 --- a/Firmware/BeamStalker/main/firmware/apps/options.cpp +++ b/Firmware/BeamStalker/main/firmware/apps/options.cpp @@ -44,6 +44,7 @@ int APP_Options() { RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -56,6 +57,7 @@ int APP_Options() { } if (SELECTp) { M5GFX_clear_screen(); + vTaskDelay(pdMS_TO_TICKS(300)); int wait = 1; switch (Selector) { case 0: diff --git a/Firmware/BeamStalker/main/firmware/helper.h b/Firmware/BeamStalker/main/firmware/helper.h index b52001f..7230ab9 100644 --- a/Firmware/BeamStalker/main/firmware/helper.h +++ b/Firmware/BeamStalker/main/firmware/helper.h @@ -1,7 +1,7 @@ #ifndef HELPER_H #define HELPER_H -#define VERSION "v0-2-7-12" +#define VERSION "v0-2-7-13" #define ROW_SIZE 7 #define COLUMN_SIZE 7 #define SCREEN_WIDTH 128 diff --git a/Firmware/BeamStalker/main/firmware/includes/wifi.cpp b/Firmware/BeamStalker/main/firmware/includes/wifi.cpp index 098c644..8f69531 100644 --- a/Firmware/BeamStalker/main/firmware/includes/wifi.cpp +++ b/Firmware/BeamStalker/main/firmware/includes/wifi.cpp @@ -174,6 +174,7 @@ AP* select_wifi_menu(int *selected_ap_count) { RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -193,6 +194,7 @@ AP* select_wifi_menu(int *selected_ap_count) { vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); if (Selector == (Menu.length - 1)) { // Select for (int i = 0; i < ap_count; i++) { AP* selected_aps = getSelectedAPs(Menu, ap_info_list, selected_ap_count); diff --git a/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.cpp b/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.cpp index 970f5e1..ac34f2f 100644 --- a/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.cpp +++ b/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.cpp @@ -1,5 +1,36 @@ #include "wifi_sniffer.h" +void sniff_pps_timer_callback(TimerHandle_t xTimer) { + char pc_buffer[32]; + snprintf(pc_buffer, sizeof(pc_buffer), "Packet: %d", sniff_packet_count); + char ch_buffer[32]; + snprintf(ch_buffer, sizeof(ch_buffer), "Channel: %d", channel); + + M5.Display.clear(); + M5GFX_display_text(0, 0*charsize, "Sniffing for 1000s", TFT_WHITE); + M5GFX_display_text(0, 2*charsize, pc_buffer, TFT_WHITE); + M5GFX_display_text(0, 3*charsize, ch_buffer, TFT_WHITE); + M5GFX_display_text(0, 7*charsize, "Press any key to exit...", TFT_WHITE); +} + +void init_sniff_pps_timer() { + sniff_packet_count = 0; + pps_timer = xTimerCreate("PPS_Timer", pdMS_TO_TICKS(1000), pdTRUE, (void *)0, sniff_pps_timer_callback); + if (pps_timer == NULL) { + printf("Failed to create timer\n"); + } else { + xTimerStart(pps_timer, 0); + } +} + +void stop_sniff_pps_timer() { + if (pps_timer != NULL) { + xTimerStop(pps_timer, 0); + xTimerDelete(pps_timer, 0); + pps_timer = NULL; + } +} + bool mac_equals(const uint8_t *mac1, const uint8_t *mac2) { for (int i = 0; i < 6; i++) { if (mac1[i] != mac2[i]) { @@ -55,6 +86,8 @@ void add_ap_if_new(const uint8_t *ap_mac) { } void sniffer_log(const wifi_ieee80211_mac_hdr_t *hdr) { + sniff_packet_count++; + printf("frame_ctrl: %04x, duration_id: %u, " "addr1: %02x:%02x:%02x:%02x:%02x:%02x, " "addr2: %02x:%02x:%02x:%02x:%02x:%02x, " @@ -199,8 +232,6 @@ mac_addr_t* getSelectedClients(menu Menu, ap_info_t* ap_info, int* selected_coun return selected_clients; } - - mac_addr_t* select_client_menu(int *selected_client_count, AP* aps, int aps_count) { sniff(10, NULL, 0); int length = 0; @@ -279,6 +310,7 @@ mac_addr_t* select_client_menu(int *selected_client_count, AP* aps, int aps_coun RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -298,6 +330,7 @@ mac_addr_t* select_client_menu(int *selected_client_count, AP* aps, int aps_coun vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); if (Selector == (Menu.length - 1)) { // Select mac_addr_t* selected_clients = getSelectedClients(Menu, sniff_ap_list, selected_client_count); @@ -391,6 +424,7 @@ uint16_t* select_filter_menu(int *selected_filter_count, uint16_t *filters, int RETURNp = M5Cardputer.Keyboard.isKeyPressed('`'); if (RETURNp) { + vTaskDelay(pdMS_TO_TICKS(300)); return 0; } else if (UPp) { @@ -410,6 +444,7 @@ uint16_t* select_filter_menu(int *selected_filter_count, uint16_t *filters, int vTaskDelay(pdMS_TO_TICKS(50)); } if (SELECTp) { + vTaskDelay(pdMS_TO_TICKS(300)); if (Selector == (Menu.length - 1)) { // Select uint16_t* selected_filters = getSelectedFilter(Menu, filters, selected_filter_count); diff --git a/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.h b/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.h index 74bb5d7..79effdc 100644 --- a/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.h +++ b/Firmware/BeamStalker/main/firmware/includes/wifi_sniffer.h @@ -32,6 +32,7 @@ uint16_t *selected_t_filter = NULL; int selected_t_filter_count; int sniffer_verbose = 0; +int sniff_packet_count; typedef struct { uint8_t mac[6]; @@ -61,6 +62,9 @@ typedef struct { uint8_t payload[0]; } wifi_ieee80211_packet_t; +void sniff_pps_timer_callback(TimerHandle_t xTimer); +void init_sniff_pps_timer(); +void stop_sniff_pps_timer(); bool mac_equals(const uint8_t *mac1, const uint8_t *mac2); bool is_broadcast(const uint8_t *mac); void add_client_to_ap(const uint8_t *ap_mac, const uint8_t *client_mac);