diff --git a/applications/external/ble_spam/ble_spam.c b/applications/external/ble_spam/ble_spam.c index 2f7ab4e8b..229eee0d4 100644 --- a/applications/external/ble_spam/ble_spam.c +++ b/applications/external/ble_spam/ble_spam.c @@ -162,11 +162,17 @@ static int32_t adv_thread(void* _ctx) { uint8_t mac[GAP_MAC_ADDR_SIZE]; Payload* payload = &attacks[state->index].payload; const Protocol* protocol = attacks[state->index].protocol; + ProtocolCfg* _cfg = &payload->cfg; if(!payload->random_mac) furi_hal_random_fill_buf(mac, sizeof(mac)); if(state->ctx.led_indicator) start_blink(state); while(state->advertising) { if(protocol) { + if(_cfg->mode == ProtocolModeBruteforce && _cfg->bruteforce.counter++ >= 10) { + _cfg->bruteforce.counter = 0; + _cfg->bruteforce.value = + (_cfg->bruteforce.value + 1) % (1 << (_cfg->bruteforce.size * 8)); + } protocol->make_packet(&size, &packet, &payload->cfg); } else { protocols[rand() % protocols_count]->make_packet(&size, &packet, NULL); @@ -340,7 +346,7 @@ static void draw_callback(Canvas* canvas, void* _ctx) { sizeof(str), "0x%0*lX", payload->cfg.bruteforce.size * 2, - payload->cfg.bruteforce.current); + payload->cfg.bruteforce.value); } else { snprintf(str, sizeof(str), "%ims", delays[state->delay]); } @@ -431,9 +437,9 @@ static bool input_callback(InputEvent* input, void* _ctx) { if(is_attack) { ProtocolCfg* _cfg = &attacks[state->index].payload.cfg; if(_cfg->mode == ProtocolModeBruteforce) { - _cfg->bruteforce.current = - (_cfg->bruteforce.current + 1) % (1 << (_cfg->bruteforce.size * 8)); _cfg->bruteforce.counter = 0; + _cfg->bruteforce.value = + (_cfg->bruteforce.value + 1) % (1 << (_cfg->bruteforce.size * 8)); } else if(state->delay < COUNT_OF(delays) - 1) { state->delay++; if(advertising) start_blink(state); @@ -444,9 +450,9 @@ static bool input_callback(InputEvent* input, void* _ctx) { if(is_attack) { ProtocolCfg* _cfg = &attacks[state->index].payload.cfg; if(_cfg->mode == ProtocolModeBruteforce) { - _cfg->bruteforce.current = - (_cfg->bruteforce.current - 1) % (1 << (_cfg->bruteforce.size * 8)); _cfg->bruteforce.counter = 0; + _cfg->bruteforce.value = + (_cfg->bruteforce.value - 1) % (1 << (_cfg->bruteforce.size * 8)); } else if(state->delay > 0) { state->delay--; if(advertising) start_blink(state); diff --git a/applications/external/ble_spam/protocols/_protocols.h b/applications/external/ble_spam/protocols/_protocols.h index 5bdc91b3f..a34bb1e98 100644 --- a/applications/external/ble_spam/protocols/_protocols.h +++ b/applications/external/ble_spam/protocols/_protocols.h @@ -15,7 +15,7 @@ struct ProtocolCfg { ProtocolMode mode; struct { uint8_t counter; - uint32_t current; + uint32_t value; uint8_t size; } bruteforce; union { diff --git a/applications/external/ble_spam/protocols/continuity.c b/applications/external/ble_spam/protocols/continuity.c index 2391c81bf..5babbd9cd 100644 --- a/applications/external/ble_spam/protocols/continuity.c +++ b/applications/external/ble_spam/protocols/continuity.c @@ -148,11 +148,7 @@ static void make_packet(uint8_t* _size, uint8_t** _packet, ProtocolCfg* _cfg) { model = cfg->data.proximity_pair.model; break; case ProtocolModeBruteforce: - if(_cfg->bruteforce.counter++ >= 10) { - _cfg->bruteforce.counter = 0; - if(_cfg->bruteforce.current++ >= 0xFFFF) _cfg->bruteforce.current = 0x0000; - } - model = cfg->data.proximity_pair.model = _cfg->bruteforce.current; + model = cfg->data.proximity_pair.model = _cfg->bruteforce.value; break; } @@ -229,11 +225,7 @@ static void make_packet(uint8_t* _size, uint8_t** _packet, ProtocolCfg* _cfg) { action = cfg->data.nearby_action.action; break; case ProtocolModeBruteforce: - if(_cfg->bruteforce.counter++ >= 10) { - _cfg->bruteforce.counter = 0; - if(_cfg->bruteforce.current++ >= 0xFF) _cfg->bruteforce.current = 0x00; - } - action = cfg->data.nearby_action.action = _cfg->bruteforce.current; + action = cfg->data.nearby_action.action = _cfg->bruteforce.value; break; } @@ -575,7 +567,7 @@ static void pp_model_callback(void* _ctx, uint32_t index) { case pp_models_count + 2: _cfg->mode = ProtocolModeBruteforce; _cfg->bruteforce.counter = 0; - _cfg->bruteforce.current = cfg->data.proximity_pair.model; + _cfg->bruteforce.value = cfg->data.proximity_pair.model; _cfg->bruteforce.size = 2; scene_manager_previous_scene(ctx->scene_manager); break; @@ -770,7 +762,7 @@ static void na_action_callback(void* _ctx, uint32_t index) { case na_actions_count + 2: _cfg->mode = ProtocolModeBruteforce; _cfg->bruteforce.counter = 0; - _cfg->bruteforce.current = cfg->data.nearby_action.action; + _cfg->bruteforce.value = cfg->data.nearby_action.action; _cfg->bruteforce.size = 1; scene_manager_previous_scene(ctx->scene_manager); break; diff --git a/applications/external/ble_spam/protocols/easysetup.c b/applications/external/ble_spam/protocols/easysetup.c index eaf755b18..8aff3521c 100644 --- a/applications/external/ble_spam/protocols/easysetup.c +++ b/applications/external/ble_spam/protocols/easysetup.c @@ -107,11 +107,7 @@ void make_packet(uint8_t* out_size, uint8_t** out_packet, ProtocolCfg* _cfg) { model = cfg->data.buds.model; break; case ProtocolModeBruteforce: - if(_cfg->bruteforce.counter++ >= 10) { - _cfg->bruteforce.counter = 0; - if(_cfg->bruteforce.current++ >= 0xFFFFFF) _cfg->bruteforce.current = 0x000000; - } - model = cfg->data.buds.model = _cfg->bruteforce.current; + model = cfg->data.buds.model = _cfg->bruteforce.value; break; } @@ -161,11 +157,7 @@ void make_packet(uint8_t* out_size, uint8_t** out_packet, ProtocolCfg* _cfg) { model = cfg->data.watch.model; break; case ProtocolModeBruteforce: - if(_cfg->bruteforce.counter++ >= 10) { - _cfg->bruteforce.counter = 0; - if(_cfg->bruteforce.current++ >= 0xFF) _cfg->bruteforce.current = 0x00; - } - model = cfg->data.watch.model = _cfg->bruteforce.current; + model = cfg->data.watch.model = _cfg->bruteforce.value; break; } @@ -385,7 +377,7 @@ static void buds_model_callback(void* _ctx, uint32_t index) { case buds_models_count + 2: _cfg->mode = ProtocolModeBruteforce; _cfg->bruteforce.counter = 0; - _cfg->bruteforce.current = cfg->data.buds.model; + _cfg->bruteforce.value = cfg->data.buds.model; _cfg->bruteforce.size = 3; scene_manager_previous_scene(ctx->scene_manager); break; @@ -492,7 +484,7 @@ static void watch_model_callback(void* _ctx, uint32_t index) { case watch_models_count + 2: _cfg->mode = ProtocolModeBruteforce; _cfg->bruteforce.counter = 0; - _cfg->bruteforce.current = cfg->data.watch.model; + _cfg->bruteforce.value = cfg->data.watch.model; _cfg->bruteforce.size = 1; scene_manager_previous_scene(ctx->scene_manager); break; diff --git a/applications/external/ble_spam/protocols/fastpair.c b/applications/external/ble_spam/protocols/fastpair.c index fcfb75a67..e4ab936da 100644 --- a/applications/external/ble_spam/protocols/fastpair.c +++ b/applications/external/ble_spam/protocols/fastpair.c @@ -83,11 +83,7 @@ static void make_packet(uint8_t* _size, uint8_t** _packet, ProtocolCfg* _cfg) { model = cfg->model; break; case ProtocolModeBruteforce: - if(_cfg->bruteforce.counter++ >= 10) { - _cfg->bruteforce.counter = 0; - if(_cfg->bruteforce.current++ >= 0xFFFFFF) _cfg->bruteforce.current = 0x000000; - } - model = cfg->model = _cfg->bruteforce.current; + model = cfg->model = _cfg->bruteforce.value; break; } @@ -221,7 +217,7 @@ static void model_callback(void* _ctx, uint32_t index) { case models_count + 2: _cfg->mode = ProtocolModeBruteforce; _cfg->bruteforce.counter = 0; - _cfg->bruteforce.current = cfg->model; + _cfg->bruteforce.value = cfg->model; _cfg->bruteforce.size = 3; scene_manager_previous_scene(ctx->scene_manager); break;