diff --git a/CHANGELOG.md b/CHANGELOG.md index a1f38df5a..bc7bf4630 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,9 @@ ### New changes -* PR: RFID Fuzzer - support for HIDProx, update for UI (PR #74 by mvanzanten) (xMasterX -> time between cards set to 6) -* Fix NFC User dict (list) crash, now it displays only first 200 elements for large lists -* Fix SubGHz transmitter GUI button -* Fix SubGHz Magellen protocol GUI -* Fix null pointer dereference crash in Archive -> Info in root folder (+ fix long path names display) -* OFW: SubGHz: Adding checks for get_upload functions +* Plugins: Fix RFID Fuzzer crashes +* SubGHz: Fix Nice Flor S crash +* SubGHz: Allow saving signals for subghz protocols without encoder (sending is not possible) +* Some random names added +* Fix `debug_pack` to allow building debug builds with extra parameter for `./fbt` (check previous releases for info) #### **DFU files no longer included in releases to avoid issues with wrong manual installation of assets - use .tgz file with qFlipper, or install automatically via web updater or use microSD update package** diff --git a/applications/main/application.fam b/applications/main/application.fam index 3bdec8aa6..21e58cd5f 100644 --- a/applications/main/application.fam +++ b/applications/main/application.fam @@ -25,13 +25,13 @@ App( apptype=FlipperAppType.METAPACKAGE, provides=[ "gpio", - "ibutton", + #"ibutton", "infrared", "lfrfid", "nfc", "subghz", - "bad_usb", - "u2f", + #"bad_usb", + #"u2f", "fap_loader", "archive", ], diff --git a/applications/plugins/flipfrid/scene/flipfrid_scene_run_attack.c b/applications/plugins/flipfrid/scene/flipfrid_scene_run_attack.c index f7776fb4d..9d30f4faa 100644 --- a/applications/plugins/flipfrid/scene/flipfrid_scene_run_attack.c +++ b/applications/plugins/flipfrid/scene/flipfrid_scene_run_attack.c @@ -44,6 +44,11 @@ void flipfrid_scene_run_attack_on_enter(FlipFridState* context) { context->attack_step = 0; context->dict = protocol_dict_alloc(lfrfid_protocols, LFRFIDProtocolMax); context->worker = lfrfid_worker_alloc(context->dict); + if(context->proto == HIDProx) { + context->protocol = protocol_dict_get_protocol_by_name(context->dict, "HIDProx"); + } else { + context->protocol = protocol_dict_get_protocol_by_name(context->dict, "EM4100"); + } } void flipfrid_scene_run_attack_on_exit(FlipFridState* context) { @@ -68,9 +73,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { switch(context->attack) { case FlipFridAttackDefaultValues: if(context->proto == EM4100) { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "EM4100"); - context->payload[0] = id_list[context->attack_step][0]; context->payload[1] = id_list[context->attack_step][1]; context->payload[2] = id_list[context->attack_step][2]; @@ -88,9 +90,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { } break; } else { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "HIDProx"); - context->payload[0] = id_list_hid[context->attack_step][0]; context->payload[1] = id_list_hid[context->attack_step][1]; context->payload[2] = id_list_hid[context->attack_step][2]; @@ -113,9 +112,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { case FlipFridAttackBfCustomerId: if(context->proto == EM4100) { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "EM4100"); - context->payload[0] = context->attack_step; context->payload[1] = 0x00; context->payload[2] = 0x00; @@ -133,9 +129,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { } break; } else { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "HIDProx"); - context->payload[0] = context->attack_step; context->payload[1] = 0x00; context->payload[2] = 0x00; @@ -157,9 +150,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { case FlipFridAttackLoadFile: if(context->proto == EM4100) { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "EM4100"); - context->payload[0] = context->data[0]; context->payload[1] = context->data[1]; context->payload[2] = context->data[2]; @@ -180,9 +170,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { } break; } else { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "HIDProx"); - context->payload[0] = context->data[0]; context->payload[1] = context->data[1]; context->payload[2] = context->data[2]; @@ -207,9 +194,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { case FlipFridAttackLoadFileCustomUids: if(context->proto == EM4100) { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "EM4100"); - while(true) { string_reset(context->data_str); if(!stream_read_line(context->uids_stream, context->data_str)) { @@ -236,9 +220,6 @@ void flipfrid_scene_run_attack_on_tick(FlipFridState* context) { } break; } else { - context->protocol = - protocol_dict_get_protocol_by_name(context->dict, "HIDProx"); - while(true) { string_reset(context->data_str); if(!stream_read_line(context->uids_stream, context->data_str)) { @@ -325,7 +306,7 @@ void flipfrid_scene_run_attack_on_draw(Canvas* canvas, FlipFridState* context) { canvas, 64, 8, AlignCenter, AlignTop, string_get_cstr(context->attack_name)); char uid[18]; - if(context->protocol == protocol_dict_get_protocol_by_name(context->dict, "HIDProx")) { + if(context->proto == HIDProx) { snprintf( uid, sizeof(uid), diff --git a/lib/subghz/protocols/came_atomo.c b/lib/subghz/protocols/came_atomo.c index 57f2d3b4c..727cef8ee 100644 --- a/lib/subghz/protocols/came_atomo.c +++ b/lib/subghz/protocols/came_atomo.c @@ -79,7 +79,7 @@ void* subghz_protocol_encoder_came_atomo_alloc(SubGhzEnvironment* environment) { instance->generic.protocol_name = instance->base.protocol->name; instance->encoder.repeat = 10; - instance->encoder.size_upload = 4096; //approx max buffer size + instance->encoder.size_upload = 1024; //actual size about 760 instance->encoder.upload = malloc(instance->encoder.size_upload * sizeof(LevelDuration)); instance->encoder.is_running = false; return instance; @@ -114,7 +114,7 @@ static LevelDuration break; default: - furi_crash("SubGhz: ManchesterEncoderResult is incorrect."); + FURI_LOG_E(TAG, "SubGhz: ManchesterEncoderResult is incorrect."); break; } return level_duration_make(data.level, data.duration); diff --git a/lib/subghz/protocols/ido.c b/lib/subghz/protocols/ido.c index 914468445..fca8fcd76 100644 --- a/lib/subghz/protocols/ido.c +++ b/lib/subghz/protocols/ido.c @@ -61,7 +61,8 @@ const SubGhzProtocolEncoder subghz_protocol_ido_encoder = { const SubGhzProtocol subghz_protocol_ido = { .name = SUBGHZ_PROTOCOL_IDO_NAME, .type = SubGhzProtocolTypeDynamic, - .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable, + .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | + SubGhzProtocolFlag_Save, .decoder = &subghz_protocol_ido_decoder, .encoder = &subghz_protocol_ido_encoder, diff --git a/lib/subghz/protocols/nice_flor_s.c b/lib/subghz/protocols/nice_flor_s.c index d5c3cd665..ef2c73053 100644 --- a/lib/subghz/protocols/nice_flor_s.c +++ b/lib/subghz/protocols/nice_flor_s.c @@ -96,7 +96,7 @@ void* subghz_protocol_encoder_nice_flor_s_alloc(SubGhzEnvironment* environment) TAG, "Loading rainbow table from %s", instance->nice_flor_s_rainbow_table_file_name); } instance->encoder.repeat = 10; - instance->encoder.size_upload = 2976; //max upload 186*16 = 2976 + instance->encoder.size_upload = 1800; //wrong!! upload 186*16 = 2976 - actual size about 1716 instance->encoder.upload = malloc(instance->encoder.size_upload * sizeof(LevelDuration)); instance->encoder.is_running = false; return instance; diff --git a/lib/subghz/protocols/scher_khan.c b/lib/subghz/protocols/scher_khan.c index 1c044e9db..89f2937d8 100644 --- a/lib/subghz/protocols/scher_khan.c +++ b/lib/subghz/protocols/scher_khan.c @@ -69,7 +69,8 @@ const SubGhzProtocolEncoder subghz_protocol_scher_khan_encoder = { const SubGhzProtocol subghz_protocol_scher_khan = { .name = SUBGHZ_PROTOCOL_SCHER_KHAN_NAME, .type = SubGhzProtocolTypeDynamic, - .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable, + .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable | + SubGhzProtocolFlag_Save, .decoder = &subghz_protocol_scher_khan_decoder, .encoder = &subghz_protocol_scher_khan_encoder, diff --git a/lib/subghz/protocols/somfy_keytis.c b/lib/subghz/protocols/somfy_keytis.c index 7a3b2186f..0307a78fa 100644 --- a/lib/subghz/protocols/somfy_keytis.c +++ b/lib/subghz/protocols/somfy_keytis.c @@ -68,7 +68,7 @@ const SubGhzProtocol subghz_protocol_somfy_keytis = { .name = SUBGHZ_PROTOCOL_SOMFY_KEYTIS_NAME, .type = SubGhzProtocolTypeDynamic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_868 | SubGhzProtocolFlag_AM | - SubGhzProtocolFlag_Decodable, + SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Save, .decoder = &subghz_protocol_somfy_keytis_decoder, .encoder = &subghz_protocol_somfy_keytis_encoder, diff --git a/lib/subghz/protocols/somfy_telis.c b/lib/subghz/protocols/somfy_telis.c index b9aac5777..d0b2f82a8 100644 --- a/lib/subghz/protocols/somfy_telis.c +++ b/lib/subghz/protocols/somfy_telis.c @@ -67,7 +67,7 @@ const SubGhzProtocol subghz_protocol_somfy_telis = { .name = SUBGHZ_PROTOCOL_SOMFY_TELIS_NAME, .type = SubGhzProtocolTypeDynamic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_868 | SubGhzProtocolFlag_AM | - SubGhzProtocolFlag_Decodable, + SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Save, .decoder = &subghz_protocol_somfy_telis_decoder, .encoder = &subghz_protocol_somfy_telis_encoder, diff --git a/lib/subghz/protocols/star_line.c b/lib/subghz/protocols/star_line.c index 434cf81e3..3a09e40e7 100644 --- a/lib/subghz/protocols/star_line.c +++ b/lib/subghz/protocols/star_line.c @@ -74,7 +74,7 @@ const SubGhzProtocol subghz_protocol_star_line = { .name = SUBGHZ_PROTOCOL_STAR_LINE_NAME, .type = SubGhzProtocolTypeDynamic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, + SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, .decoder = &subghz_protocol_star_line_decoder, .encoder = &subghz_protocol_star_line_encoder,