|
@@ -24,6 +24,16 @@ static Attack attacks[] = {
|
|
|
.cfg = {},
|
|
.cfg = {},
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
|
|
+ {
|
|
|
|
|
+ .title = "BT Settings Flood",
|
|
|
|
|
+ .text = "Fills available BT devices",
|
|
|
|
|
+ .protocol = &protocol_nameflood,
|
|
|
|
|
+ .payload =
|
|
|
|
|
+ {
|
|
|
|
|
+ .random_mac = true,
|
|
|
|
|
+ .cfg.nameflood = {},
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
.title = "iOS 17 Lockup Crash",
|
|
.title = "iOS 17 Lockup Crash",
|
|
|
.text = "Newer iPhones, long range",
|
|
.text = "Newer iPhones, long range",
|
|
@@ -219,6 +229,9 @@ static int32_t adv_thread(void* _ctx) {
|
|
|
const Protocol* protocol = attacks[state->index].protocol;
|
|
const Protocol* protocol = attacks[state->index].protocol;
|
|
|
if(!payload->random_mac) randomize_mac(state);
|
|
if(!payload->random_mac) randomize_mac(state);
|
|
|
if(state->ctx.led_indicator) start_blink(state);
|
|
if(state->ctx.led_indicator) start_blink(state);
|
|
|
|
|
+ if(furi_hal_bt_extra_beacon_is_active()) {
|
|
|
|
|
+ furi_check(furi_hal_bt_extra_beacon_stop());
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
while(state->advertising) {
|
|
while(state->advertising) {
|
|
|
if(protocol && payload->mode == PayloadModeBruteforce &&
|
|
if(protocol && payload->mode == PayloadModeBruteforce &&
|
|
@@ -231,7 +244,7 @@ static int32_t adv_thread(void* _ctx) {
|
|
|
start_extra_beacon(state);
|
|
start_extra_beacon(state);
|
|
|
|
|
|
|
|
furi_thread_flags_wait(true, FuriFlagWaitAny, delays[state->delay]);
|
|
furi_thread_flags_wait(true, FuriFlagWaitAny, delays[state->delay]);
|
|
|
- furi_hal_bt_extra_beacon_stop();
|
|
|
|
|
|
|
+ furi_check(furi_hal_bt_extra_beacon_stop());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(state->ctx.led_indicator) stop_blink(state);
|
|
if(state->ctx.led_indicator) stop_blink(state);
|
|
@@ -387,10 +400,10 @@ static void draw_callback(Canvas* canvas, void* _ctx) {
|
|
|
48,
|
|
48,
|
|
|
AlignLeft,
|
|
AlignLeft,
|
|
|
AlignTop,
|
|
AlignTop,
|
|
|
- "App+Spam: \e#WillyJL\e# XFW\n"
|
|
|
|
|
|
|
+ "App+Spam: \e#WillyJL\e#\n"
|
|
|
"Apple+Crash: \e#ECTO-1A\e#\n"
|
|
"Apple+Crash: \e#ECTO-1A\e#\n"
|
|
|
"Android+Win: \e#Spooks4576\e#\n"
|
|
"Android+Win: \e#Spooks4576\e#\n"
|
|
|
- " Version \e#5.1\e#",
|
|
|
|
|
|
|
+ " Version \e#" FAP_VERSION "\e#",
|
|
|
false);
|
|
false);
|
|
|
break;
|
|
break;
|
|
|
default: {
|
|
default: {
|
|
@@ -481,12 +494,14 @@ static bool input_callback(InputEvent* input, void* _ctx) {
|
|
|
consumed = true;
|
|
consumed = true;
|
|
|
state->lock_warning = true;
|
|
state->lock_warning = true;
|
|
|
if(state->lock_count == 0) {
|
|
if(state->lock_count == 0) {
|
|
|
|
|
+ furi_timer_set_thread_priority(FuriTimerThreadPriorityElevated);
|
|
|
furi_timer_start(state->lock_timer, 1000);
|
|
furi_timer_start(state->lock_timer, 1000);
|
|
|
}
|
|
}
|
|
|
if(input->type == InputTypeShort && input->key == InputKeyBack) {
|
|
if(input->type == InputTypeShort && input->key == InputKeyBack) {
|
|
|
state->lock_count++;
|
|
state->lock_count++;
|
|
|
}
|
|
}
|
|
|
if(state->lock_count >= 3) {
|
|
if(state->lock_count >= 3) {
|
|
|
|
|
+ furi_timer_set_thread_priority(FuriTimerThreadPriorityElevated);
|
|
|
furi_timer_start(state->lock_timer, 1);
|
|
furi_timer_start(state->lock_timer, 1);
|
|
|
}
|
|
}
|
|
|
} else if(
|
|
} else if(
|
|
@@ -552,13 +567,16 @@ static bool input_callback(InputEvent* input, void* _ctx) {
|
|
|
if(!advertising) {
|
|
if(!advertising) {
|
|
|
Payload* payload = &attacks[state->index].payload;
|
|
Payload* payload = &attacks[state->index].payload;
|
|
|
if(input->type == InputTypeLong && !payload->random_mac) randomize_mac(state);
|
|
if(input->type == InputTypeLong && !payload->random_mac) randomize_mac(state);
|
|
|
|
|
+ if(furi_hal_bt_extra_beacon_is_active()) {
|
|
|
|
|
+ furi_check(furi_hal_bt_extra_beacon_stop());
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
start_extra_beacon(state);
|
|
start_extra_beacon(state);
|
|
|
|
|
|
|
|
if(state->ctx.led_indicator)
|
|
if(state->ctx.led_indicator)
|
|
|
notification_message(state->ctx.notification, &solid_message);
|
|
notification_message(state->ctx.notification, &solid_message);
|
|
|
furi_delay_ms(10);
|
|
furi_delay_ms(10);
|
|
|
- furi_hal_bt_extra_beacon_stop();
|
|
|
|
|
|
|
+ furi_check(furi_hal_bt_extra_beacon_stop());
|
|
|
|
|
|
|
|
if(state->ctx.led_indicator)
|
|
if(state->ctx.led_indicator)
|
|
|
notification_message_block(state->ctx.notification, &sequence_reset_rgb);
|
|
notification_message_block(state->ctx.notification, &sequence_reset_rgb);
|
|
@@ -604,6 +622,7 @@ static void lock_timer_callback(void* _ctx) {
|
|
|
with_view_model(
|
|
with_view_model(
|
|
|
state->main_view, State * *model, { (*model)->lock_warning = false; }, true);
|
|
state->main_view, State * *model, { (*model)->lock_warning = false; }, true);
|
|
|
state->lock_count = 0;
|
|
state->lock_count = 0;
|
|
|
|
|
+ furi_timer_set_thread_priority(FuriTimerThreadPriorityNormal);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void tick_event_callback(void* _ctx) {
|
|
static void tick_event_callback(void* _ctx) {
|