#include "subbrute_protocols.h" /** * CAME 12bit 303MHz */ const SubBruteProtocol subbrute_protocol_came_12bit_303 = { .frequency = 303875000, .bits = 12, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = CAMEFileProtocol}; /** * CAME 12bit 307MHz */ const SubBruteProtocol subbrute_protocol_came_12bit_307 = { .frequency = 307800000, .bits = 12, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = CAMEFileProtocol}; /** * CAME 12bit 433MHz */ const SubBruteProtocol subbrute_protocol_came_12bit_433 = { .frequency = 433920000, .bits = 12, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = CAMEFileProtocol}; /** * CAME 12bit 868MHz */ const SubBruteProtocol subbrute_protocol_came_12bit_868 = { .frequency = 868350000, .bits = 12, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = CAMEFileProtocol}; /** * NICE 12bit 433MHz */ const SubBruteProtocol subbrute_protocol_nice_12bit_433 = { .frequency = 433920000, .bits = 12, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = NICEFileProtocol}; /** * NICE 12bit 868MHz */ const SubBruteProtocol subbrute_protocol_nice_12bit_868 = { .frequency = 868350000, .bits = 12, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = NICEFileProtocol}; /** * Chamberlain 9bit 300MHz */ const SubBruteProtocol subbrute_protocol_chamberlain_9bit_300 = { .frequency = 300000000, .bits = 9, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = ChamberlainFileProtocol}; /** * Chamberlain 9bit 315MHz */ const SubBruteProtocol subbrute_protocol_chamberlain_9bit_315 = { .frequency = 315000000, .bits = 9, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = ChamberlainFileProtocol}; /** * Chamberlain 9bit 390MHz */ const SubBruteProtocol subbrute_protocol_chamberlain_9bit_390 = { .frequency = 390000000, .bits = 9, .te = 0, .repeat = 3, .preset = FuriHalSubGhzPresetOok650Async, .file = ChamberlainFileProtocol}; /** * Linear 10bit 300MHz */ const SubBruteProtocol subbrute_protocol_linear_10bit_300 = { .frequency = 300000000, .bits = 10, .te = 0, .repeat = 5, .preset = FuriHalSubGhzPresetOok650Async, .file = LinearFileProtocol}; /** * Linear 10bit 310MHz */ const SubBruteProtocol subbrute_protocol_linear_10bit_310 = { .frequency = 310000000, .bits = 10, .te = 0, .repeat = 5, .preset = FuriHalSubGhzPresetOok650Async, .file = LinearFileProtocol}; /** * BF existing dump */ const SubBruteProtocol subbrute_protocol_load_file = {0, 0, 0, 3, FuriHalSubGhzPresetOok650Async, RAWFileProtocol}; //static const SubBruteProtocol subbrute_protocols[SubBruteAttackTotalCount] = { // [SubBruteAttackCAME12bit303] = // {303875000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol}, // [SubBruteAttackCAME12bit307] = // {307800000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol}, // [SubBruteAttackCAME12bit433] = // {433920000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol}, // [SubBruteAttackCAME12bit868] = // {868350000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, CAMEFileProtocol}, // [SubBruteAttackNICE12bit433] = // {433920000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, NICEFileProtocol}, // [SubBruteAttackNICE12bit868] = // {868350000, 12, 0, 3, FuriHalSubGhzPresetOok650Async, NICEFileProtocol}, // [SubBruteAttackChamberlain9bit300] = // {300000000, 9, 0, 3, FuriHalSubGhzPresetOok650Async, ChamberlainFileProtocol}, // [SubBruteAttackChamberlain9bit315] = // {315000000, 9, 0, 3, FuriHalSubGhzPresetOok650Async, ChamberlainFileProtocol}, // [SubBruteAttackChamberlain9bit390] = // {390000000, 9, 0, 3, FuriHalSubGhzPresetOok650Async, ChamberlainFileProtocol}, // [SubBruteAttackLinear10bit300] = // {300000000, 10, 0, 5, FuriHalSubGhzPresetOok650Async, LinearFileProtocol}, // [SubBruteAttackLinear10bit310] = // {300000000, 10, 0, 5, FuriHalSubGhzPresetOok650Async, LinearFileProtocol}, // [SubBruteAttackLoadFile] = {0, 0, 0, 3, FuriHalSubGhzPresetOok650Async, RAWFileProtocol}, //}; static const char* subbrute_protocol_names[] = { [SubBruteAttackCAME12bit303] = "CAME 12bit 303MHz", [SubBruteAttackCAME12bit307] = "CAME 12bit 307MHz", [SubBruteAttackCAME12bit433] = "CAME 12bit 433MHz", [SubBruteAttackCAME12bit868] = "CAME 12bit 868MHz", [SubBruteAttackNICE12bit433] = "NICE 12bit 433MHz", [SubBruteAttackNICE12bit868] = "NICE 12bit 868MHz", [SubBruteAttackChamberlain9bit300] = "Chamberlain 9bit 300MHz", [SubBruteAttackChamberlain9bit315] = "Chamberlain 9bit 315MHz", [SubBruteAttackChamberlain9bit390] = "Chamberlain 9bit 390MHz", [SubBruteAttackLinear10bit300] = "Linear 10bit 300MHz", [SubBruteAttackLinear10bit310] = "Linear 10bit 310MHz", [SubBruteAttackLoadFile] = "BF existing dump", [SubBruteAttackTotalCount] = "Total Count", }; static const char* subbrute_protocol_presets[] = { [FuriHalSubGhzPresetIDLE] = "FuriHalSubGhzPresetIDLE", [FuriHalSubGhzPresetOok270Async] = "FuriHalSubGhzPresetOok270Async", [FuriHalSubGhzPresetOok650Async] = "FuriHalSubGhzPresetOok650Async", [FuriHalSubGhzPreset2FSKDev238Async] = "FuriHalSubGhzPreset2FSKDev238Async", [FuriHalSubGhzPreset2FSKDev476Async] = "FuriHalSubGhzPreset2FSKDev476Async", [FuriHalSubGhzPresetMSK99_97KbAsync] = "FuriHalSubGhzPresetMSK99_97KbAsync", [FuriHalSubGhzPresetGFSK9_99KbAsync] = "FuriHalSubGhzPresetGFSK9_99KbAsync", }; const SubBruteProtocol* subbrute_protocol_registry[] = { [SubBruteAttackCAME12bit303] = &subbrute_protocol_came_12bit_303, [SubBruteAttackCAME12bit307] = &subbrute_protocol_came_12bit_307, [SubBruteAttackCAME12bit433] = &subbrute_protocol_came_12bit_433, [SubBruteAttackCAME12bit868] = &subbrute_protocol_came_12bit_868, [SubBruteAttackNICE12bit433] = &subbrute_protocol_nice_12bit_433, [SubBruteAttackNICE12bit868] = &subbrute_protocol_nice_12bit_868, [SubBruteAttackChamberlain9bit300] = &subbrute_protocol_chamberlain_9bit_300, [SubBruteAttackChamberlain9bit315] = &subbrute_protocol_chamberlain_9bit_315, [SubBruteAttackChamberlain9bit390] = &subbrute_protocol_chamberlain_9bit_390, [SubBruteAttackLinear10bit300] = &subbrute_protocol_linear_10bit_300, [SubBruteAttackLinear10bit310] = &subbrute_protocol_linear_10bit_310, [SubBruteAttackLoadFile] = &subbrute_protocol_load_file}; static const char* subbrute_protocol_file_types[] = { [CAMEFileProtocol] = "CAME", [NICEFileProtocol] = "Nice FLO", [ChamberlainFileProtocol] = "Cham_Code", [LinearFileProtocol] = "Linear", [PrincetonFileProtocol] = "Princeton", [RAWFileProtocol] = "RAW"}; const char* subbrute_protocol_name(SubBruteAttacks index) { return subbrute_protocol_names[index]; } const SubBruteProtocol* subbrute_protocol(SubBruteAttacks index) { return subbrute_protocol_registry[index]; } const char* subbrute_protocol_preset(FuriHalSubGhzPreset preset) { return subbrute_protocol_presets[preset]; } const char* subbrute_protocol_file(SubBruteFileProtocol protocol) { return subbrute_protocol_file_types[protocol]; } FuriHalSubGhzPreset subbrute_protocol_convert_preset(FuriString* preset_name) { for(size_t i = FuriHalSubGhzPresetIDLE; i < FuriHalSubGhzPresetCustom; i++) { if(furi_string_cmp_str(preset_name, subbrute_protocol_presets[i]) == 0) { return i; } } return FuriHalSubGhzPresetIDLE; } SubBruteFileProtocol subbrute_protocol_file_protocol_name(FuriString* name) { for(size_t i = CAMEFileProtocol; i < TotalFileProtocol - 1; i++) { if(furi_string_cmp_str(name, subbrute_protocol_file_types[i]) == 0) { return i; } } return RAWFileProtocol; }