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
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,
subghz_scene_set_cnt_byte_input_callback,
NULL,
subghz,
subghz->txrx->secure_data->cnt,
2);
3);
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[2] << 8 | subghz->txrx->secure_data->fix[3];
uint16_t cnt = subghz->txrx->secure_data->cnt[0] << 8 |
subghz->txrx->secure_data->cnt[1];
uint32_t cnt = subghz->txrx->secure_data->cnt[0] << 16 |
subghz->txrx->secure_data->cnt[1] << 8 |
subghz->txrx->secure_data->cnt[2];
uint32_t seed = subghz->txrx->secure_data->seed[0] << 24 |
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,
fix_part >> 4,
fix_part & 0xf,
cnt,
(cnt & 0xFFFFF),
seed,
"FAAC_SLH",
868350000,

View File

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

View File

@@ -123,11 +123,9 @@ static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* inst
fixx[i] = (fix >> (shiftby -= 4)) & 0xF;
}
if((instance->generic.cnt % 2) == 0) {
decrypt = fixx[6] << 28 | fixx[7] << 24 | fixx[5] << 20 | fixx[1] << 16 |
instance->generic.cnt;
decrypt = fixx[6] << 28 | fixx[7] << 24 | fixx[5] << 20 | (instance->generic.cnt & 0xFFFFF);
} else {
decrypt = fixx[2] << 28 | fixx[3] << 24 | fixx[4] << 20 | fixx[1] << 16 |
instance->generic.cnt;
decrypt = fixx[2] << 28 | fixx[3] << 24 | fixx[4] << 20 | (instance->generic.cnt & 0xFFFFF);
}
for
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,
uint32_t serial,
uint8_t btn,
uint16_t cnt,
uint32_t cnt,
uint32_t seed,
const char* manufacture_name,
uint32_t frequency,
@@ -164,7 +162,7 @@ bool subghz_protocol_faac_slh_create_data(
SubGhzProtocolEncoderFaacSLH* instance = context;
instance->generic.serial = serial;
instance->generic.btn = btn;
instance->generic.cnt = cnt;
instance->generic.cnt = (cnt & 0xFFFFF);
instance->generic.seed = seed;
instance->manufacture_name = manufacture_name;
instance->generic.data_count_bit = 64;
@@ -414,7 +412,7 @@ static void subghz_protocol_faac_slh_check_remote_controller(
break;
}
}
instance->cnt = decrypt & 0xFFFF;
instance->cnt = decrypt & 0xFFFFF;
}
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,
"%s %dbit\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"
"Sn:%07lX Sd:%8X",
instance->generic.protocol_name,

View File

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