mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 21:18:35 -07:00
BLE Spam base config support ok interaction
This commit is contained in:
1
applications/external/ble_spam/ble_spam.h
vendored
1
applications/external/ble_spam/ble_spam.h
vendored
@@ -26,6 +26,7 @@ typedef struct Attack Attack;
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
Attack* attack;
|
Attack* attack;
|
||||||
uint8_t byte_store[3];
|
uint8_t byte_store[3];
|
||||||
|
VariableItemListEnterCallback fallback_config_enter;
|
||||||
|
|
||||||
ViewDispatcher* view_dispatcher;
|
ViewDispatcher* view_dispatcher;
|
||||||
SceneManager* scene_manager;
|
SceneManager* scene_manager;
|
||||||
|
|||||||
@@ -17,4 +17,5 @@ typedef struct {
|
|||||||
const char* (*get_name)(const ProtocolCfg* _cfg);
|
const char* (*get_name)(const ProtocolCfg* _cfg);
|
||||||
void (*make_packet)(uint8_t* _size, uint8_t** _packet, const ProtocolCfg* _cfg);
|
void (*make_packet)(uint8_t* _size, uint8_t** _packet, const ProtocolCfg* _cfg);
|
||||||
void (*extra_config)(Ctx* ctx);
|
void (*extra_config)(Ctx* ctx);
|
||||||
|
uint8_t (*config_count)(const ProtocolCfg* _cfg);
|
||||||
} Protocol;
|
} Protocol;
|
||||||
|
|||||||
@@ -277,11 +277,19 @@ enum {
|
|||||||
_ConfigPpExtraStart = ConfigExtraStart,
|
_ConfigPpExtraStart = ConfigExtraStart,
|
||||||
ConfigPpModel,
|
ConfigPpModel,
|
||||||
ConfigPpPrefix,
|
ConfigPpPrefix,
|
||||||
|
ConfigPpCOUNT,
|
||||||
};
|
};
|
||||||
enum {
|
enum {
|
||||||
_ConfigNaExtraStart = ConfigExtraStart,
|
_ConfigNaExtraStart = ConfigExtraStart,
|
||||||
ConfigNaAction,
|
ConfigNaAction,
|
||||||
ConfigNaFlags,
|
ConfigNaFlags,
|
||||||
|
ConfigNaCOUNT,
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
_ConfigCcExtraStart = ConfigExtraStart,
|
||||||
|
ConfigCcInfoLock,
|
||||||
|
ConfigCcInfoDevice,
|
||||||
|
ConfigCcCOUNT,
|
||||||
};
|
};
|
||||||
static void config_callback(void* _ctx, uint32_t index) {
|
static void config_callback(void* _ctx, uint32_t index) {
|
||||||
Ctx* ctx = _ctx;
|
Ctx* ctx = _ctx;
|
||||||
@@ -297,6 +305,7 @@ static void config_callback(void* _ctx, uint32_t index) {
|
|||||||
scene_manager_next_scene(ctx->scene_manager, SceneContinuityPpPrefix);
|
scene_manager_next_scene(ctx->scene_manager, SceneContinuityPpPrefix);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -310,11 +319,24 @@ static void config_callback(void* _ctx, uint32_t index) {
|
|||||||
scene_manager_next_scene(ctx->scene_manager, SceneContinuityNaFlags);
|
scene_manager_next_scene(ctx->scene_manager, SceneContinuityNaFlags);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ContinuityTypeCustomCrash: {
|
||||||
|
switch(index) {
|
||||||
|
case ConfigCcInfoLock:
|
||||||
|
case ConfigCcInfoDevice:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -470,11 +492,27 @@ static void continuity_extra_config(Ctx* ctx) {
|
|||||||
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t config_counts[ContinuityTypeCOUNT] = {
|
||||||
|
[ContinuityTypeAirDrop] = 0,
|
||||||
|
[ContinuityTypeProximityPair] = ConfigPpCOUNT - ConfigExtraStart - 1,
|
||||||
|
[ContinuityTypeAirplayTarget] = 0,
|
||||||
|
[ContinuityTypeHandoff] = 0,
|
||||||
|
[ContinuityTypeTetheringSource] = 0,
|
||||||
|
[ContinuityTypeNearbyAction] = ConfigNaCOUNT - ConfigExtraStart - 1,
|
||||||
|
[ContinuityTypeNearbyInfo] = 0,
|
||||||
|
[ContinuityTypeCustomCrash] = ConfigCcCOUNT - ConfigExtraStart - 1,
|
||||||
|
};
|
||||||
|
static uint8_t continuity_config_count(const ProtocolCfg* _cfg) {
|
||||||
|
const ContinuityCfg* cfg = &_cfg->continuity;
|
||||||
|
return config_counts[cfg->type];
|
||||||
|
}
|
||||||
|
|
||||||
const Protocol protocol_continuity = {
|
const Protocol protocol_continuity = {
|
||||||
.icon = &I_apple,
|
.icon = &I_apple,
|
||||||
.get_name = continuity_get_name,
|
.get_name = continuity_get_name,
|
||||||
.make_packet = continuity_make_packet,
|
.make_packet = continuity_make_packet,
|
||||||
.extra_config = continuity_extra_config,
|
.extra_config = continuity_extra_config,
|
||||||
|
.config_count = continuity_config_count,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void pp_model_callback(void* _ctx, uint32_t index) {
|
static void pp_model_callback(void* _ctx, uint32_t index) {
|
||||||
|
|||||||
@@ -171,10 +171,13 @@ void easysetup_make_packet(uint8_t* out_size, uint8_t** out_packet, const Protoc
|
|||||||
enum {
|
enum {
|
||||||
_ConfigBudsExtraStart = ConfigExtraStart,
|
_ConfigBudsExtraStart = ConfigExtraStart,
|
||||||
ConfigBudsModel,
|
ConfigBudsModel,
|
||||||
|
ConfigBudsInfoVersion,
|
||||||
|
ConfigBudsCOUNT,
|
||||||
};
|
};
|
||||||
enum {
|
enum {
|
||||||
_ConfigWatchExtraStart = ConfigExtraStart,
|
_ConfigWatchExtraStart = ConfigExtraStart,
|
||||||
ConfigWatchModel,
|
ConfigWatchModel,
|
||||||
|
ConfigWatchCOUNT,
|
||||||
};
|
};
|
||||||
static void config_callback(void* _ctx, uint32_t index) {
|
static void config_callback(void* _ctx, uint32_t index) {
|
||||||
Ctx* ctx = _ctx;
|
Ctx* ctx = _ctx;
|
||||||
@@ -186,7 +189,10 @@ static void config_callback(void* _ctx, uint32_t index) {
|
|||||||
case ConfigBudsModel:
|
case ConfigBudsModel:
|
||||||
scene_manager_next_scene(ctx->scene_manager, SceneEasysetupBudsModel);
|
scene_manager_next_scene(ctx->scene_manager, SceneEasysetupBudsModel);
|
||||||
break;
|
break;
|
||||||
|
case ConfigBudsInfoVersion:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -197,11 +203,13 @@ static void config_callback(void* _ctx, uint32_t index) {
|
|||||||
scene_manager_next_scene(ctx->scene_manager, SceneEasysetupWatchModel);
|
scene_manager_next_scene(ctx->scene_manager, SceneEasysetupWatchModel);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -297,11 +305,21 @@ static void easysetup_extra_config(Ctx* ctx) {
|
|||||||
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t config_counts[EasysetupTypeCOUNT] = {
|
||||||
|
[EasysetupTypeBuds] = ConfigBudsCOUNT - ConfigExtraStart - 1,
|
||||||
|
[EasysetupTypeWatch] = ConfigWatchCOUNT - ConfigExtraStart - 1,
|
||||||
|
};
|
||||||
|
static uint8_t easysetup_config_count(const ProtocolCfg* _cfg) {
|
||||||
|
const EasysetupCfg* cfg = &_cfg->easysetup;
|
||||||
|
return config_counts[cfg->type];
|
||||||
|
}
|
||||||
|
|
||||||
const Protocol protocol_easysetup = {
|
const Protocol protocol_easysetup = {
|
||||||
.icon = &I_android,
|
.icon = &I_android,
|
||||||
.get_name = easysetup_get_name,
|
.get_name = easysetup_get_name,
|
||||||
.make_packet = easysetup_make_packet,
|
.make_packet = easysetup_make_packet,
|
||||||
.extra_config = easysetup_extra_config,
|
.extra_config = easysetup_extra_config,
|
||||||
|
.config_count = easysetup_config_count,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void buds_model_callback(void* _ctx, uint32_t index) {
|
static void buds_model_callback(void* _ctx, uint32_t index) {
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ static void fastpair_make_packet(uint8_t* _size, uint8_t** _packet, const Protoc
|
|||||||
enum {
|
enum {
|
||||||
_ConfigExtraStart = ConfigExtraStart,
|
_ConfigExtraStart = ConfigExtraStart,
|
||||||
ConfigModel,
|
ConfigModel,
|
||||||
|
ConfigInfoRequire,
|
||||||
|
ConfigCOUNT,
|
||||||
};
|
};
|
||||||
static void config_callback(void* _ctx, uint32_t index) {
|
static void config_callback(void* _ctx, uint32_t index) {
|
||||||
Ctx* ctx = _ctx;
|
Ctx* ctx = _ctx;
|
||||||
@@ -89,7 +91,11 @@ static void config_callback(void* _ctx, uint32_t index) {
|
|||||||
switch(index) {
|
switch(index) {
|
||||||
case ConfigModel:
|
case ConfigModel:
|
||||||
scene_manager_next_scene(ctx->scene_manager, SceneFastpairModel);
|
scene_manager_next_scene(ctx->scene_manager, SceneFastpairModel);
|
||||||
|
break;
|
||||||
|
case ConfigInfoRequire:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -139,11 +145,17 @@ static void fastpair_extra_config(Ctx* ctx) {
|
|||||||
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t fastpair_config_count(const ProtocolCfg* _cfg) {
|
||||||
|
UNUSED(_cfg);
|
||||||
|
return ConfigCOUNT;
|
||||||
|
}
|
||||||
|
|
||||||
const Protocol protocol_fastpair = {
|
const Protocol protocol_fastpair = {
|
||||||
.icon = &I_android,
|
.icon = &I_android,
|
||||||
.get_name = fastpair_get_name,
|
.get_name = fastpair_get_name,
|
||||||
.make_packet = fastpair_make_packet,
|
.make_packet = fastpair_make_packet,
|
||||||
.extra_config = fastpair_extra_config,
|
.extra_config = fastpair_extra_config,
|
||||||
|
.config_count = fastpair_config_count,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void model_callback(void* _ctx, uint32_t index) {
|
static void model_callback(void* _ctx, uint32_t index) {
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ static void swiftpair_make_packet(uint8_t* _size, uint8_t** _packet, const Proto
|
|||||||
enum {
|
enum {
|
||||||
_ConfigExtraStart = ConfigExtraStart,
|
_ConfigExtraStart = ConfigExtraStart,
|
||||||
ConfigName,
|
ConfigName,
|
||||||
|
ConfigInfoRequire,
|
||||||
|
ConfigCOUNT,
|
||||||
};
|
};
|
||||||
static void config_callback(void* _ctx, uint32_t index) {
|
static void config_callback(void* _ctx, uint32_t index) {
|
||||||
Ctx* ctx = _ctx;
|
Ctx* ctx = _ctx;
|
||||||
@@ -56,7 +58,11 @@ static void config_callback(void* _ctx, uint32_t index) {
|
|||||||
switch(index) {
|
switch(index) {
|
||||||
case ConfigName:
|
case ConfigName:
|
||||||
scene_manager_next_scene(ctx->scene_manager, SceneSwiftpairName);
|
scene_manager_next_scene(ctx->scene_manager, SceneSwiftpairName);
|
||||||
|
break;
|
||||||
|
case ConfigInfoRequire:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
|
ctx->fallback_config_enter(ctx, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,11 +79,17 @@ static void swiftpair_extra_config(Ctx* ctx) {
|
|||||||
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t swiftpair_config_count(const ProtocolCfg* _cfg) {
|
||||||
|
UNUSED(_cfg);
|
||||||
|
return ConfigCOUNT;
|
||||||
|
}
|
||||||
|
|
||||||
const Protocol protocol_swiftpair = {
|
const Protocol protocol_swiftpair = {
|
||||||
.icon = &I_windows,
|
.icon = &I_windows,
|
||||||
.get_name = swiftpair_get_name,
|
.get_name = swiftpair_get_name,
|
||||||
.make_packet = swiftpair_make_packet,
|
.make_packet = swiftpair_make_packet,
|
||||||
.extra_config = swiftpair_extra_config,
|
.extra_config = swiftpair_extra_config,
|
||||||
|
.config_count = swiftpair_config_count,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void name_callback(void* _ctx) {
|
static void name_callback(void* _ctx) {
|
||||||
|
|||||||
17
applications/external/ble_spam/scenes/config.c
vendored
17
applications/external/ble_spam/scenes/config.c
vendored
@@ -8,6 +8,21 @@ static void random_mac_changed(VariableItem* item) {
|
|||||||
variable_item_set_current_value_text(item, ctx->attack->payload.random_mac ? "ON" : "OFF");
|
variable_item_set_current_value_text(item, ctx->attack->payload.random_mac ? "ON" : "OFF");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void config_callback(void* _ctx, uint32_t index) {
|
||||||
|
Ctx* ctx = _ctx;
|
||||||
|
scene_manager_set_scene_state(ctx->scene_manager, SceneConfig, index);
|
||||||
|
if(ctx->attack->protocol && ctx->attack->protocol->config_count) {
|
||||||
|
uint8_t extra = ctx->attack->protocol->config_count(&ctx->attack->payload.cfg);
|
||||||
|
if(index > extra) index -= extra;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(index) {
|
||||||
|
case ConfigRandomMac:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
void scene_config_on_enter(void* _ctx) {
|
void scene_config_on_enter(void* _ctx) {
|
||||||
Ctx* ctx = _ctx;
|
Ctx* ctx = _ctx;
|
||||||
VariableItem* item;
|
VariableItem* item;
|
||||||
@@ -20,9 +35,11 @@ void scene_config_on_enter(void* _ctx) {
|
|||||||
variable_item_set_current_value_index(item, ctx->attack->payload.random_mac);
|
variable_item_set_current_value_index(item, ctx->attack->payload.random_mac);
|
||||||
variable_item_set_current_value_text(item, ctx->attack->payload.random_mac ? "ON" : "OFF");
|
variable_item_set_current_value_text(item, ctx->attack->payload.random_mac ? "ON" : "OFF");
|
||||||
|
|
||||||
|
variable_item_list_set_enter_callback(list, config_callback, ctx);
|
||||||
if(!ctx->attack->protocol) {
|
if(!ctx->attack->protocol) {
|
||||||
variable_item_list_add(list, "None shall escape the S I N K", 0, NULL, NULL);
|
variable_item_list_add(list, "None shall escape the S I N K", 0, NULL, NULL);
|
||||||
} else if(ctx->attack->protocol->extra_config) {
|
} else if(ctx->attack->protocol->extra_config) {
|
||||||
|
ctx->fallback_config_enter = config_callback;
|
||||||
ctx->attack->protocol->extra_config(ctx);
|
ctx->attack->protocol->extra_config(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user