FAAC SLH/Spa 20-bits counter

This commit is contained in:
Eng1n33r
2022-07-17 08:05:09 +03:00
parent 4074aa7d38
commit 420af35f89
5 changed files with 14 additions and 15 deletions

View File

@@ -13,14 +13,14 @@ void subghz_scene_set_cnt_on_enter(void* context) {
// Setup view // Setup view
ByteInput* byte_input = subghz->byte_input; ByteInput* byte_input = subghz->byte_input;
byte_input_set_header_text(byte_input, "Enter COUNTER in hex"); byte_input_set_header_text(byte_input, "Enter COUNTER in hex, 20bits");
byte_input_set_result_callback( byte_input_set_result_callback(
byte_input, byte_input,
subghz_scene_set_cnt_byte_input_callback, subghz_scene_set_cnt_byte_input_callback,
NULL, NULL,
subghz, subghz,
subghz->txrx->secure_data->cnt, subghz->txrx->secure_data->cnt,
2); 3);
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput);
} }

View File

@@ -36,8 +36,9 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) {
subghz->txrx->secure_data->fix[0] << 24 | subghz->txrx->secure_data->fix[1] << 16 | subghz->txrx->secure_data->fix[0] << 24 | subghz->txrx->secure_data->fix[1] << 16 |
subghz->txrx->secure_data->fix[2] << 8 | subghz->txrx->secure_data->fix[3]; subghz->txrx->secure_data->fix[2] << 8 | subghz->txrx->secure_data->fix[3];
uint16_t cnt = subghz->txrx->secure_data->cnt[0] << 8 | uint32_t cnt = subghz->txrx->secure_data->cnt[0] << 16 |
subghz->txrx->secure_data->cnt[1]; subghz->txrx->secure_data->cnt[1] << 8 |
subghz->txrx->secure_data->cnt[2];
uint32_t seed = subghz->txrx->secure_data->seed[0] << 24 | uint32_t seed = subghz->txrx->secure_data->seed[0] << 24 |
subghz->txrx->secure_data->seed[1] << 16 | subghz->txrx->secure_data->seed[1] << 16 |
@@ -52,7 +53,7 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) {
subghz->txrx->fff_data, subghz->txrx->fff_data,
fix_part >> 4, fix_part >> 4,
fix_part & 0xf, fix_part & 0xf,
cnt, (cnt & 0xFFFFF),
seed, seed,
"FAAC_SLH", "FAAC_SLH",
868350000, 868350000,

View File

@@ -43,7 +43,7 @@
typedef struct { typedef struct {
uint8_t fix[4]; uint8_t fix[4];
uint8_t cnt[2]; uint8_t cnt[3];
uint8_t seed[4]; uint8_t seed[4];
} SecureData; } SecureData;

View File

@@ -123,11 +123,9 @@ static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* inst
fixx[i] = (fix >> (shiftby -= 4)) & 0xF; fixx[i] = (fix >> (shiftby -= 4)) & 0xF;
} }
if((instance->generic.cnt % 2) == 0) { if((instance->generic.cnt % 2) == 0) {
decrypt = fixx[6] << 28 | fixx[7] << 24 | fixx[5] << 20 | fixx[1] << 16 | decrypt = fixx[6] << 28 | fixx[7] << 24 | fixx[5] << 20 | (instance->generic.cnt & 0xFFFFF);
instance->generic.cnt;
} else { } else {
decrypt = fixx[2] << 28 | fixx[3] << 24 | fixx[4] << 20 | fixx[1] << 16 | decrypt = fixx[2] << 28 | fixx[3] << 24 | fixx[4] << 20 | (instance->generic.cnt & 0xFFFFF);
instance->generic.cnt;
} }
for for
M_EACH(manufacture_code, *subghz_keystore_get_data(instance->keystore), SubGhzKeyArray_t) { M_EACH(manufacture_code, *subghz_keystore_get_data(instance->keystore), SubGhzKeyArray_t) {
@@ -155,7 +153,7 @@ bool subghz_protocol_faac_slh_create_data(
FlipperFormat* flipper_format, FlipperFormat* flipper_format,
uint32_t serial, uint32_t serial,
uint8_t btn, uint8_t btn,
uint16_t cnt, uint32_t cnt,
uint32_t seed, uint32_t seed,
const char* manufacture_name, const char* manufacture_name,
uint32_t frequency, uint32_t frequency,
@@ -164,7 +162,7 @@ bool subghz_protocol_faac_slh_create_data(
SubGhzProtocolEncoderFaacSLH* instance = context; SubGhzProtocolEncoderFaacSLH* instance = context;
instance->generic.serial = serial; instance->generic.serial = serial;
instance->generic.btn = btn; instance->generic.btn = btn;
instance->generic.cnt = cnt; instance->generic.cnt = (cnt & 0xFFFFF);
instance->generic.seed = seed; instance->generic.seed = seed;
instance->manufacture_name = manufacture_name; instance->manufacture_name = manufacture_name;
instance->generic.data_count_bit = 64; instance->generic.data_count_bit = 64;
@@ -414,7 +412,7 @@ static void subghz_protocol_faac_slh_check_remote_controller(
break; break;
} }
} }
instance->cnt = decrypt & 0xFFFF; instance->cnt = decrypt & 0xFFFFF;
} }
uint8_t subghz_protocol_decoder_faac_slh_get_hash_data(void* context) { uint8_t subghz_protocol_decoder_faac_slh_get_hash_data(void* context) {
@@ -493,7 +491,7 @@ void subghz_protocol_decoder_faac_slh_get_string(void* context, string_t output)
output, output,
"%s %dbit\r\n" "%s %dbit\r\n"
"Key:%lX%08lX\r\n" "Key:%lX%08lX\r\n"
"Fix:%08lX Cnt:%04X\r\n" "Fix:%08lX Cnt:%05X\r\n"
"Hop:%08lX Btn:%lX\r\n" "Hop:%08lX Btn:%lX\r\n"
"Sn:%07lX Sd:%8X", "Sn:%07lX Sd:%8X",
instance->generic.protocol_name, instance->generic.protocol_name,

View File

@@ -42,7 +42,7 @@ bool subghz_protocol_faac_slh_create_data(
FlipperFormat* flipper_format, FlipperFormat* flipper_format,
uint32_t serial, uint32_t serial,
uint8_t btn, uint8_t btn,
uint16_t cnt, uint32_t cnt,
uint32_t seed, uint32_t seed,
const char* manufacture_name, const char* manufacture_name,
uint32_t frequency, uint32_t frequency,