Skip to content

Commit 89bab7e

Browse files
committed
v1.1.8
1 parent c1629c7 commit 89bab7e

File tree

10 files changed

+133
-25
lines changed

10 files changed

+133
-25
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## v1.1.8
4+
- Added GPS Info command to view real-time GPS data
5+
- Added Stop GPS Info command
6+
- UART Initialisation tweaks
7+
- Add back EAPOL capture command
8+
- Added BLE Raw Capture command
9+
- Added Stop BLE Raw Capture command
10+
- Expanded Stop on Back to include all stop commands
11+
- Added wrap-around scrolling in command menus
12+
- Miscellaneous bug fixes and improvements
313

414
## v1.1.7
515
- added null checks before freeing resources

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ A Flipper Zero application for interfacing with the Ghost ESP32 firmware
2424
- **Raw Packet Capture**: Capture raw Bluetooth packets for analysis
2525

2626
### 🌍 GPS
27+
- **GPS Information**: View real-time GPS data including position, altitude, speed and signal quality
2728
- **Wardriving Capabilities**: Enable Wardriving for location-based data collection
2829

2930
### ⚙️ Configuration Options

src/main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,6 @@ int32_t ghost_esp_app(void* p) {
287287
}
288288

289289
return 0;
290-
}
290+
}
291+
292+
// 6675636B796F7564656B69

src/menu.c

Lines changed: 102 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,24 @@ static const MenuCommand wifi_commands[] = {
387387
"Saves to PCAP file.\n"
388388
"Range: ~50-100m\n",
389389
},
390-
390+
{
391+
.label = "Sniff EAPOL",
392+
.command = "capture -eapol\n",
393+
.capture_prefix = "eapol_capture",
394+
.file_ext = "pcap",
395+
.folder = GHOST_ESP_APP_FOLDER_PCAPS,
396+
.needs_input = false,
397+
.input_text = NULL,
398+
.needs_confirmation = false,
399+
.confirm_header = NULL,
400+
.confirm_text = NULL,
401+
.details_header = "EAPOL Capture",
402+
.details_text = "Captures EAPOL/4-way\n"
403+
"handshake frames.\n"
404+
"Saves to PCAP file.\n"
405+
"Range: ~50-100m\n",
406+
},
407+
391408
// Portal & Network Operations
392409
{
393410
.label = "Evil Portal",
@@ -516,24 +533,40 @@ static const MenuCommand ble_commands[] = {
516533
"- Last seen time\n",
517534
},
518535
{
519-
.label = "Sniff BLE",
536+
.label = "Stop BLE Scan",
520537
.command = "blescan -s\n",
521-
.capture_prefix = "ble_capture",
538+
.capture_prefix = NULL,
539+
.file_ext = NULL,
540+
.folder = NULL,
541+
.needs_input = false,
542+
.input_text = NULL,
543+
.needs_confirmation = false,
544+
.confirm_header = NULL,
545+
.confirm_text = NULL,
546+
.details_header = "Stop BLE Scan",
547+
.details_text = "Stops any active\n"
548+
"Bluetooth scanning\n"
549+
"operations.\n",
550+
},
551+
{
552+
.label = "BLE Raw Capture",
553+
.command = "capture -ble\n",
554+
.capture_prefix = "ble_raw_capture",
522555
.file_ext = "pcap",
523556
.folder = GHOST_ESP_APP_FOLDER_PCAPS,
524557
.needs_input = false,
525558
.input_text = NULL,
526559
.needs_confirmation = false,
527560
.confirm_header = NULL,
528561
.confirm_text = NULL,
529-
.details_header = "BLE Sniffer",
530-
.details_text = "Captures Bluetooth Low\n"
531-
"Energy traffic.\n"
562+
.details_header = "BLE Raw Capture",
563+
.details_text = "Captures raw BLE\n"
564+
"traffic and data.\n"
532565
"Range: ~10-30m\n",
533566
},
534567
{
535-
.label = "Stop BLE Scan",
536-
.command = "blescan -s\n",
568+
.label = "Stop BLE Capture",
569+
.command = "capture -blestop\n",
537570
.capture_prefix = NULL,
538571
.file_ext = NULL,
539572
.folder = NULL,
@@ -542,15 +575,49 @@ static const MenuCommand ble_commands[] = {
542575
.needs_confirmation = false,
543576
.confirm_header = NULL,
544577
.confirm_text = NULL,
545-
.details_header = "Stop BLE Scan",
578+
.details_header = "Stop BLE Capture",
546579
.details_text = "Stops any active\n"
547-
"Bluetooth scanning\n"
580+
"BLE packet capture\n"
548581
"operations.\n",
549582
},
550583
};
551584

552585
// GPS menu command definitions
553586
static const MenuCommand gps_commands[] = {
587+
{
588+
.label = "GPS Info",
589+
.command = "gpsinfo\n",
590+
.capture_prefix = NULL,
591+
.file_ext = NULL,
592+
.folder = NULL,
593+
.needs_input = false,
594+
.input_text = NULL,
595+
.needs_confirmation = false,
596+
.confirm_header = NULL,
597+
.confirm_text = NULL,
598+
.details_header = "GPS Information",
599+
.details_text = "Shows GPS details:\n"
600+
"- Position (Lat/Long)\n"
601+
"- Altitude & Speed\n"
602+
"- Direction & Quality\n"
603+
"- Satellite Status\n",
604+
},
605+
{
606+
.label = "Stop GPS Info",
607+
.command = "gpsinfo -s\n",
608+
.capture_prefix = NULL,
609+
.file_ext = NULL,
610+
.folder = NULL,
611+
.needs_input = false,
612+
.input_text = NULL,
613+
.needs_confirmation = false,
614+
.confirm_header = NULL,
615+
.confirm_text = NULL,
616+
.details_header = "Stop GPS Info",
617+
.details_text = "Stops displaying\n"
618+
"GPS information\n"
619+
"updates.\n",
620+
},
554621
{
555622
.label = "Start Wardriving",
556623
.command = "startwd\n",
@@ -965,12 +1032,16 @@ bool back_event_callback(void* context) {
9651032

9661033
// Stop operations in a logical order
9671034
const char* stop_commands[] = {
968-
"stopscan\n",
969-
"stopspam\n",
970-
"stopdeauth\n",
971-
"stopportal\n",
972-
"blescan -s\n",
973-
"stop\n"
1035+
"capture -stop\n", // Stop any WiFi packet captures
1036+
"capture -blestop\n", // Stop any BLE captures
1037+
"stopscan\n", // Stop WiFi scanning
1038+
"stopspam\n", // Stop beacon spam attacks
1039+
"stopdeauth\n", // Stop deauth attacks
1040+
"stopportal\n", // Stop evil portal
1041+
"blescan -s\n", // Stop BLE scanning
1042+
"gpsinfo -s\n", // Stop GPS info updates
1043+
"startwd -s\n", // Stop wardriving
1044+
"stop\n" // General stop command
9741045
};
9751046

9761047
for(size_t i = 0; i < COUNT_OF(stop_commands); i++) {
@@ -1139,13 +1210,19 @@ static bool menu_input_handler(InputEvent* event, void* context) {
11391210
case InputKeyUp:
11401211
if(current_index > 0) {
11411212
submenu_set_selected_item(current_menu, current_index - 1);
1213+
} else {
1214+
// Wrap to bottom
1215+
submenu_set_selected_item(current_menu, commands_count - 1);
11421216
}
11431217
consumed = true;
11441218
break;
11451219

11461220
case InputKeyDown:
11471221
if(current_index < commands_count - 1) {
11481222
submenu_set_selected_item(current_menu, current_index + 1);
1223+
} else {
1224+
// Wrap to top
1225+
submenu_set_selected_item(current_menu, 0);
11491226
}
11501227
consumed = true;
11511228
break;
@@ -1198,13 +1275,19 @@ static bool menu_input_handler(InputEvent* event, void* context) {
11981275
case InputKeyUp:
11991276
if(current_index > 0) {
12001277
submenu_set_selected_item(current_menu, current_index - 1);
1278+
} else {
1279+
// Wrap to bottom
1280+
submenu_set_selected_item(current_menu, commands_count - 1);
12011281
}
12021282
consumed = true;
12031283
break;
12041284

12051285
case InputKeyDown:
12061286
if(current_index < commands_count - 1) {
12071287
submenu_set_selected_item(current_menu, current_index + 1);
1288+
} else {
1289+
// Wrap to top
1290+
submenu_set_selected_item(current_menu, 0);
12081291
}
12091292
consumed = true;
12101293
break;
@@ -1225,4 +1308,6 @@ static bool menu_input_handler(InputEvent* event, void* context) {
12251308
}
12261309

12271310
return consumed;
1228-
}
1311+
}
1312+
1313+
// 6675636B796F7564656B69

src/menu.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ void handle_gps_menu(AppState* state, uint32_t index);
2828

2929
void show_wifi_menu(AppState* state);
3030
void show_ble_menu(AppState* state);
31-
void show_gps_menu(AppState* state);
31+
void show_gps_menu(AppState* state);
32+
33+
// 6675636B796F7564656B69

src/settings_def.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,6 @@ const SettingMetadata* settings_get_metadata(SettingKey key) {
124124
return NULL;
125125
}
126126
return &SETTING_METADATA[key];
127-
}
127+
}
128+
129+
// 6675636B796F7564656B69

src/settings_ui.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ bool settings_custom_event_callback(void* context, uint32_t event_id) {
401401
"Updated by: Jay Candel\n"
402402
"Built with <3";
403403

404-
confirmation_view_set_header(app_state->confirmation_view, "Ghost ESP v1.1.7");
404+
confirmation_view_set_header(app_state->confirmation_view, "Ghost ESP v1.1.8");
405405
confirmation_view_set_text(app_state->confirmation_view, info_text);
406406

407407
// Save current view before switching
@@ -426,4 +426,5 @@ bool settings_custom_event_callback(void* context, uint32_t event_id) {
426426
}
427427

428428
return true;
429-
}
429+
}
430+
// 6675636B796F7564656B69

src/uart_utils.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,4 +612,6 @@ bool uart_receive_data(
612612
view_dispatcher_switch_to_view(view_dispatcher, 5);
613613

614614
return true;
615-
}
615+
}
616+
617+
// 6675636B796F7564656B69

src/uart_utils.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,6 @@ bool uart_is_esp_connected(UartContext* uart);
9797
void uart_storage_reset_logs(UartStorageContext *ctx);
9898
void uart_storage_safe_cleanup(UartStorageContext* ctx);
9999

100-
#endif
100+
#endif
101+
102+
// 6675636B796F7564656B69

src/utils.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,5 @@ void show_confirmation_view_wrapper(void* context, ConfirmationView* view) {
6666
(void)view; // Mark parameter as unused to avoid compiler warning
6767
// Redirect to show_confirmation_dialog_ex with the stored dialog data
6868
show_confirmation_dialog_ex(context, current_dialog.header, current_dialog.text, current_dialog.ok_callback, current_dialog.cancel_callback);
69-
}
69+
}
70+
// 6675636B796F7564656B69

0 commit comments

Comments
 (0)