diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c b/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c index 71b6b7aee..b7abfd2fe 100644 --- a/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c +++ b/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c @@ -1,4 +1,5 @@ #include "../lfrfid_i.h" +#include #include "tools/t5577.h" #define TAG "Clear T5577" @@ -21,8 +22,7 @@ static void lfrfid_clear_t5577_password_and_config_to_EM(LfRfid* app) { }; // Clear custom password - uint32_t custom_pass = (app->password[0] << 24) | (app->password[1] << 16) | - (app->password[2] << 8) | (app->password[3]); + uint32_t custom_pass = bit_lib_bytes_to_num_be(app->password, 4); snprintf(curr_buf, sizeof(curr_buf), "Custom password"); view_dispatcher_switch_to_view(app->view_dispatcher, LfRfidViewPopup); diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_enter_password.c b/applications/main/lfrfid/scenes/lfrfid_scene_enter_password.c index 4809ef669..d387122eb 100644 --- a/applications/main/lfrfid/scenes/lfrfid_scene_enter_password.c +++ b/applications/main/lfrfid/scenes/lfrfid_scene_enter_password.c @@ -1,4 +1,5 @@ #include "../lfrfid_i.h" +#include "bit_lib.h" #include "gui/scene_manager.h" int next_scene; @@ -16,7 +17,7 @@ void lfrfid_scene_enter_password_on_enter(void* context) { const uint32_t* password_list = lfrfid_get_t5577_default_passwords(&password_list_size); uint32_t pass = password_list[furi_get_tick() % password_list_size]; - for(uint8_t i = 0; i < 4; i++) app->password[4 - (i + 1)] = (pass >> (8 * i)) & 0xFF; + bit_lib_num_to_bytes_be(pass, 4, app->password); } byte_input_set_header_text(byte_input, "Enter the password in hex"); diff --git a/applications/main/nfc/plugins/supported_cards/aime.c b/applications/main/nfc/plugins/supported_cards/aime.c index 0794d61c1..c4cd6d8bc 100644 --- a/applications/main/nfc/plugins/supported_cards/aime.c +++ b/applications/main/nfc/plugins/supported_cards/aime.c @@ -1,11 +1,10 @@ #include "nfc_supported_card_plugin.h" +#include -#include - -#include -#include #include +#include + #define TAG "Aime" static const uint64_t aime_key = 0x574343467632; diff --git a/applications/main/nfc/plugins/supported_cards/all_in_one.c b/applications/main/nfc/plugins/supported_cards/all_in_one.c index 1be23d1f3..1378629e2 100644 --- a/applications/main/nfc/plugins/supported_cards/all_in_one.c +++ b/applications/main/nfc/plugins/supported_cards/all_in_one.c @@ -1,6 +1,6 @@ #include "nfc_supported_card_plugin.h" +#include -#include #include #define TAG "AllInOne" diff --git a/applications/main/nfc/plugins/supported_cards/clipper.c b/applications/main/nfc/plugins/supported_cards/clipper.c index 2878b6f3c..c24043be0 100644 --- a/applications/main/nfc/plugins/supported_cards/clipper.c +++ b/applications/main/nfc/plugins/supported_cards/clipper.c @@ -19,10 +19,11 @@ * along with this program. If not, see . */ #include "nfc_supported_card_plugin.h" +#include -#include #include -#include + +#include #include #include #include diff --git a/applications/main/nfc/plugins/supported_cards/emv.c b/applications/main/nfc/plugins/supported_cards/emv.c index a8253edff..26bfe265b 100644 --- a/applications/main/nfc/plugins/supported_cards/emv.c +++ b/applications/main/nfc/plugins/supported_cards/emv.c @@ -16,17 +16,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "core/string.h" -#include "furi_hal_rtc.h" -#include "helpers/nfc_emv_parser.h" + #include "nfc_supported_card_plugin.h" +#include #include "protocols/emv/emv.h" -#include "protocols/nfc_protocol.h" -#include +#include "helpers/nfc_emv_parser.h" -#include -#include +#include #define TAG "EMV" diff --git a/applications/main/nfc/plugins/supported_cards/gallagher.c b/applications/main/nfc/plugins/supported_cards/gallagher.c index 5772b46d7..869d74563 100644 --- a/applications/main/nfc/plugins/supported_cards/gallagher.c +++ b/applications/main/nfc/plugins/supported_cards/gallagher.c @@ -5,12 +5,11 @@ */ #include "nfc_supported_card_plugin.h" +#include + #include "../../api/gallagher/gallagher_util.h" -#include -#include -#include -#include +#include static bool gallagher_parse(const NfcDevice* device, FuriString* parsed_data) { furi_assert(device); diff --git a/applications/main/nfc/plugins/supported_cards/hi.c b/applications/main/nfc/plugins/supported_cards/hi.c index 2c93196ac..4ab66ddd2 100644 --- a/applications/main/nfc/plugins/supported_cards/hi.c +++ b/applications/main/nfc/plugins/supported_cards/hi.c @@ -1,9 +1,10 @@ #include "nfc_supported_card_plugin.h" -#include -#include -#include +#include + #include +#include + #define TAG "HI!" #define KEY_LENGTH 6 #define HI_KEY_TO_GEN 5 diff --git a/applications/main/nfc/plugins/supported_cards/hid.c b/applications/main/nfc/plugins/supported_cards/hid.c index 496ff00db..39ab66351 100644 --- a/applications/main/nfc/plugins/supported_cards/hid.c +++ b/applications/main/nfc/plugins/supported_cards/hid.c @@ -1,11 +1,10 @@ #include "nfc_supported_card_plugin.h" +#include -#include - -#include -#include #include +#include + #define TAG "HID" static const uint64_t hid_key = 0x484944204953; diff --git a/applications/main/nfc/plugins/supported_cards/itso.c b/applications/main/nfc/plugins/supported_cards/itso.c index a4e0c8869..94d258025 100644 --- a/applications/main/nfc/plugins/supported_cards/itso.c +++ b/applications/main/nfc/plugins/supported_cards/itso.c @@ -1,7 +1,7 @@ /* itso.c - Parser for ITSO cards (United Kingdom). */ #include "nfc_supported_card_plugin.h" +#include -#include #include #include diff --git a/applications/main/nfc/plugins/supported_cards/kazan.c b/applications/main/nfc/plugins/supported_cards/kazan.c index 135e96830..216e0a15c 100644 --- a/applications/main/nfc/plugins/supported_cards/kazan.c +++ b/applications/main/nfc/plugins/supported_cards/kazan.c @@ -17,14 +17,11 @@ * along with this program. If not, see . */ #include "nfc_supported_card_plugin.h" +#include -#include "protocols/mf_classic/mf_classic.h" -#include - -#include -#include #include +#include #include #define TAG "Kazan" diff --git a/applications/main/nfc/plugins/supported_cards/metromoney.c b/applications/main/nfc/plugins/supported_cards/metromoney.c index e686c83e8..338515f90 100644 --- a/applications/main/nfc/plugins/supported_cards/metromoney.c +++ b/applications/main/nfc/plugins/supported_cards/metromoney.c @@ -17,14 +17,12 @@ * along with this program. If not, see . */ #include "nfc_supported_card_plugin.h" +#include -#include "protocols/mf_classic/mf_classic.h" -#include - -#include -#include #include +#include + #define TAG "Metromoney" typedef struct { diff --git a/applications/main/nfc/plugins/supported_cards/microel.c b/applications/main/nfc/plugins/supported_cards/microel.c index b18581e6a..91e5b2286 100644 --- a/applications/main/nfc/plugins/supported_cards/microel.c +++ b/applications/main/nfc/plugins/supported_cards/microel.c @@ -1,9 +1,10 @@ #include "nfc_supported_card_plugin.h" -#include -#include -#include +#include + #include +#include + #define TAG "Microel" #define KEY_LENGTH 6 #define UID_LENGTH 4 diff --git a/applications/main/nfc/plugins/supported_cards/mizip.c b/applications/main/nfc/plugins/supported_cards/mizip.c index 8aa5e5f92..a533e6c77 100644 --- a/applications/main/nfc/plugins/supported_cards/mizip.c +++ b/applications/main/nfc/plugins/supported_cards/mizip.c @@ -1,9 +1,10 @@ #include "nfc_supported_card_plugin.h" -#include -#include -#include +#include + #include +#include + #define TAG "MiZIP" #define KEY_LENGTH 6 #define MIZIP_KEY_TO_GEN 5 diff --git a/applications/main/nfc/plugins/supported_cards/mykey.c b/applications/main/nfc/plugins/supported_cards/mykey.c index 61619ddf3..8e2d5cf11 100644 --- a/applications/main/nfc/plugins/supported_cards/mykey.c +++ b/applications/main/nfc/plugins/supported_cards/mykey.c @@ -1,6 +1,6 @@ #include "nfc_supported_card_plugin.h" +#include -#include #include #include diff --git a/applications/main/nfc/plugins/supported_cards/myki.c b/applications/main/nfc/plugins/supported_cards/myki.c index 70a696371..4da5d30af 100644 --- a/applications/main/nfc/plugins/supported_cards/myki.c +++ b/applications/main/nfc/plugins/supported_cards/myki.c @@ -5,8 +5,8 @@ * Reference: https://github.com/metrodroid/metrodroid/wiki/Myki */ #include "nfc_supported_card_plugin.h" +#include -#include #include static const MfDesfireApplicationId myki_app_id = {.data = {0x00, 0x11, 0xf2}}; diff --git a/applications/main/nfc/plugins/supported_cards/ndef.c b/applications/main/nfc/plugins/supported_cards/ndef.c index f3aadda1e..1ed3a6365 100644 --- a/applications/main/nfc/plugins/supported_cards/ndef.c +++ b/applications/main/nfc/plugins/supported_cards/ndef.c @@ -5,11 +5,12 @@ // Made by @Willy-JL #include "nfc_supported_card_plugin.h" +#include -#include -#include #include +#include + #define TAG "NDEF" static bool is_text(const uint8_t* buf, size_t len) { diff --git a/applications/main/nfc/plugins/supported_cards/opal.c b/applications/main/nfc/plugins/supported_cards/opal.c index c71635d53..4ec38208c 100644 --- a/applications/main/nfc/plugins/supported_cards/opal.c +++ b/applications/main/nfc/plugins/supported_cards/opal.c @@ -29,13 +29,13 @@ */ #include "nfc_supported_card_plugin.h" - -#include -#include -#include +#include #include +#include +#include + static const MfDesfireApplicationId opal_app_id = {.data = {0x31, 0x45, 0x53}}; static const MfDesfireFileId opal_file_id = 0x07; diff --git a/applications/main/nfc/plugins/supported_cards/plantain.c b/applications/main/nfc/plugins/supported_cards/plantain.c index 2ed02f49c..ebdc902e8 100644 --- a/applications/main/nfc/plugins/supported_cards/plantain.c +++ b/applications/main/nfc/plugins/supported_cards/plantain.c @@ -1,11 +1,10 @@ #include "nfc_supported_card_plugin.h" +#include -#include - -#include -#include #include +#include + #define TAG "Plantain" typedef struct { diff --git a/applications/main/nfc/plugins/supported_cards/saflok.c b/applications/main/nfc/plugins/supported_cards/saflok.c index a330183bc..ba2383f8c 100644 --- a/applications/main/nfc/plugins/supported_cards/saflok.c +++ b/applications/main/nfc/plugins/supported_cards/saflok.c @@ -3,11 +3,11 @@ // FZ plugin by @noproto #include "nfc_supported_card_plugin.h" -#include -#include -#include +#include + #include -#include + +#include #define TAG "Saflok" #define MAGIC_TABLE_SIZE 192 diff --git a/applications/main/nfc/plugins/supported_cards/social_moscow.c b/applications/main/nfc/plugins/supported_cards/social_moscow.c index ba1536b66..13ce953de 100644 --- a/applications/main/nfc/plugins/supported_cards/social_moscow.c +++ b/applications/main/nfc/plugins/supported_cards/social_moscow.c @@ -1,14 +1,10 @@ #include "nfc_supported_card_plugin.h" -#include +#include -#include - -#include -#include -#include #include + +#include #include -#include #define TAG "Social_Moscow" @@ -63,39 +59,6 @@ static const MfClassicKeyPair social_moscow_4k_keys[] = { {.a = 0xa229e68ad9e5, .b = 0x49c2b5296ef4}, {.a = 0xa229e68ad9e5, .b = 0x49c2b5296ef4}, }; -#define FURI_HAL_RTC_SECONDS_PER_MINUTE 60 -#define FURI_HAL_RTC_SECONDS_PER_HOUR (FURI_HAL_RTC_SECONDS_PER_MINUTE * 60) -#define FURI_HAL_RTC_SECONDS_PER_DAY (FURI_HAL_RTC_SECONDS_PER_HOUR * 24) -#define FURI_HAL_RTC_EPOCH_START_YEAR 1970 -#define FURI_HAL_RTC_IS_LEAP_YEAR(year) \ - ((((year) % 4 == 0) && ((year) % 100 != 0)) || ((year) % 400 == 0)) - -void timestamp_to_datetime(uint32_t timestamp, FuriHalRtcDateTime* datetime) { - uint32_t days = timestamp / FURI_HAL_RTC_SECONDS_PER_DAY; - uint32_t seconds_in_day = timestamp % FURI_HAL_RTC_SECONDS_PER_DAY; - - datetime->year = FURI_HAL_RTC_EPOCH_START_YEAR; - - while(days >= furi_hal_rtc_get_days_per_year(datetime->year)) { - days -= furi_hal_rtc_get_days_per_year(datetime->year); - (datetime->year)++; - } - - datetime->month = 1; - while(days >= furi_hal_rtc_get_days_per_month( - FURI_HAL_RTC_IS_LEAP_YEAR(datetime->year), datetime->month)) { - days -= furi_hal_rtc_get_days_per_month( - FURI_HAL_RTC_IS_LEAP_YEAR(datetime->year), datetime->month); - (datetime->month)++; - } - - datetime->day = days + 1; - datetime->hour = seconds_in_day / FURI_HAL_RTC_SECONDS_PER_HOUR; - datetime->minute = - (seconds_in_day % FURI_HAL_RTC_SECONDS_PER_HOUR) / FURI_HAL_RTC_SECONDS_PER_MINUTE; - datetime->second = seconds_in_day % FURI_HAL_RTC_SECONDS_PER_MINUTE; -} - void from_days_to_datetime(uint16_t days, FuriHalRtcDateTime* datetime, uint16_t start_year) { uint32_t timestamp = days * 24 * 60 * 60; FuriHalRtcDateTime start_datetime = {0}; @@ -103,7 +66,7 @@ void from_days_to_datetime(uint16_t days, FuriHalRtcDateTime* datetime, uint16_t start_datetime.month = 12; start_datetime.day = 31; timestamp += furi_hal_rtc_datetime_to_timestamp(&start_datetime); - timestamp_to_datetime(timestamp, datetime); + furi_hal_rtc_timestamp_to_datetime(timestamp, datetime); } void from_minutes_to_datetime(uint32_t minutes, FuriHalRtcDateTime* datetime, uint16_t start_year) { @@ -113,7 +76,7 @@ void from_minutes_to_datetime(uint32_t minutes, FuriHalRtcDateTime* datetime, ui start_datetime.month = 12; start_datetime.day = 31; timestamp += furi_hal_rtc_datetime_to_timestamp(&start_datetime); - timestamp_to_datetime(timestamp, datetime); + furi_hal_rtc_timestamp_to_datetime(timestamp, datetime); } bool parse_transport_block(const MfClassicBlock* block, FuriString* result) { diff --git a/applications/main/nfc/plugins/supported_cards/troika.c b/applications/main/nfc/plugins/supported_cards/troika.c index 2f5f0607a..347b9f5eb 100644 --- a/applications/main/nfc/plugins/supported_cards/troika.c +++ b/applications/main/nfc/plugins/supported_cards/troika.c @@ -1,14 +1,10 @@ #include "nfc_supported_card_plugin.h" -#include +#include -#include - -#include -#include -#include #include + +#include #include -#include #define TAG "Troika" @@ -64,39 +60,6 @@ static const MfClassicKeyPair troika_4k_keys[] = { {.a = 0x518dc6eea089, .b = 0x97c64ac98ca4}, {.a = 0xbb52f8cce07f, .b = 0x6b6119752c70}, }; -#define FURI_HAL_RTC_SECONDS_PER_MINUTE 60 -#define FURI_HAL_RTC_SECONDS_PER_HOUR (FURI_HAL_RTC_SECONDS_PER_MINUTE * 60) -#define FURI_HAL_RTC_SECONDS_PER_DAY (FURI_HAL_RTC_SECONDS_PER_HOUR * 24) -#define FURI_HAL_RTC_EPOCH_START_YEAR 1970 -#define FURI_HAL_RTC_IS_LEAP_YEAR(year) \ - ((((year) % 4 == 0) && ((year) % 100 != 0)) || ((year) % 400 == 0)) - -void timestamp_to_datetime(uint32_t timestamp, FuriHalRtcDateTime* datetime) { - uint32_t days = timestamp / FURI_HAL_RTC_SECONDS_PER_DAY; - uint32_t seconds_in_day = timestamp % FURI_HAL_RTC_SECONDS_PER_DAY; - - datetime->year = FURI_HAL_RTC_EPOCH_START_YEAR; - - while(days >= furi_hal_rtc_get_days_per_year(datetime->year)) { - days -= furi_hal_rtc_get_days_per_year(datetime->year); - (datetime->year)++; - } - - datetime->month = 1; - while(days >= furi_hal_rtc_get_days_per_month( - FURI_HAL_RTC_IS_LEAP_YEAR(datetime->year), datetime->month)) { - days -= furi_hal_rtc_get_days_per_month( - FURI_HAL_RTC_IS_LEAP_YEAR(datetime->year), datetime->month); - (datetime->month)++; - } - - datetime->day = days + 1; - datetime->hour = seconds_in_day / FURI_HAL_RTC_SECONDS_PER_HOUR; - datetime->minute = - (seconds_in_day % FURI_HAL_RTC_SECONDS_PER_HOUR) / FURI_HAL_RTC_SECONDS_PER_MINUTE; - datetime->second = seconds_in_day % FURI_HAL_RTC_SECONDS_PER_MINUTE; -} - void from_days_to_datetime(uint16_t days, FuriHalRtcDateTime* datetime, uint16_t start_year) { uint32_t timestamp = days * 24 * 60 * 60; FuriHalRtcDateTime start_datetime = {0}; @@ -104,7 +67,7 @@ void from_days_to_datetime(uint16_t days, FuriHalRtcDateTime* datetime, uint16_t start_datetime.month = 12; start_datetime.day = 31; timestamp += furi_hal_rtc_datetime_to_timestamp(&start_datetime); - timestamp_to_datetime(timestamp, datetime); + furi_hal_rtc_timestamp_to_datetime(timestamp, datetime); } void from_minutes_to_datetime(uint32_t minutes, FuriHalRtcDateTime* datetime, uint16_t start_year) { @@ -114,7 +77,7 @@ void from_minutes_to_datetime(uint32_t minutes, FuriHalRtcDateTime* datetime, ui start_datetime.month = 12; start_datetime.day = 31; timestamp += furi_hal_rtc_datetime_to_timestamp(&start_datetime); - timestamp_to_datetime(timestamp, datetime); + furi_hal_rtc_timestamp_to_datetime(timestamp, datetime); } bool parse_transport_block(const MfClassicBlock* block, FuriString* result) { diff --git a/applications/main/nfc/plugins/supported_cards/two_cities.c b/applications/main/nfc/plugins/supported_cards/two_cities.c index 3d4a82845..86c90ebba 100644 --- a/applications/main/nfc/plugins/supported_cards/two_cities.c +++ b/applications/main/nfc/plugins/supported_cards/two_cities.c @@ -3,7 +3,7 @@ #include #include -#include +#include #include #define TAG "TwoCities" diff --git a/applications/main/nfc/plugins/supported_cards/umarsh.c b/applications/main/nfc/plugins/supported_cards/umarsh.c index ca9eb7697..959b2eeb0 100644 --- a/applications/main/nfc/plugins/supported_cards/umarsh.c +++ b/applications/main/nfc/plugins/supported_cards/umarsh.c @@ -23,16 +23,12 @@ * along with this program. If not, see . */ -#include "core/core_defines.h" #include "nfc_supported_card_plugin.h" +#include #include "protocols/mf_classic/mf_classic.h" -#include - -#include -#include -#include +#include #include #define TAG "Umarsh" diff --git a/applications/main/nfc/plugins/supported_cards/washcity.c b/applications/main/nfc/plugins/supported_cards/washcity.c index cae82510b..e4610fb94 100644 --- a/applications/main/nfc/plugins/supported_cards/washcity.c +++ b/applications/main/nfc/plugins/supported_cards/washcity.c @@ -19,14 +19,12 @@ * along with this program. If not, see . */ #include "nfc_supported_card_plugin.h" +#include -#include "protocols/mf_classic/mf_classic.h" -#include - -#include -#include #include +#include + #define TAG "WashCity" typedef struct { diff --git a/applications/main/nfc/plugins/supported_cards/zolotaya_korona.c b/applications/main/nfc/plugins/supported_cards/zolotaya_korona.c index af5db8a78..e1aa9abcf 100644 --- a/applications/main/nfc/plugins/supported_cards/zolotaya_korona.c +++ b/applications/main/nfc/plugins/supported_cards/zolotaya_korona.c @@ -18,15 +18,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "furi_hal_rtc.h" #include "nfc_supported_card_plugin.h" +#include #include "protocols/mf_classic/mf_classic.h" -#include -#include -#include -#include +#include +#include #define TAG "Zolotaya Korona" @@ -40,26 +38,6 @@ static const uint8_t info_sector_signature[] = {0xE2, 0x87, 0x80, 0x8E, 0x20, 0x 0xAE, 0xE0, 0xAE, 0xAD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -uint64_t bytes2num_bcd(const uint8_t* src, uint8_t len_bytes, bool* is_bcd) { - furi_assert(src); - furi_assert(len_bytes <= 9); - - uint64_t result = 0; - *is_bcd = true; - - for(uint8_t i = 0; i < len_bytes; i++) { - if(((src[i] / 16) > 9) || ((src[i] % 16) > 9)) *is_bcd = false; - - result *= 10; - result += src[i] / 16; - - result *= 10; - result += src[i] % 16; - } - - return result; -} - static bool zolotaya_korona_parse(const NfcDevice* device, FuriString* parsed_data) { furi_assert(device); @@ -90,12 +68,14 @@ static bool zolotaya_korona_parse(const NfcDevice* device, FuriString* parsed_da // INFO SECTOR // block 1 - const uint8_t region_number = bytes2num_bcd(block_start_ptr + 10, 1, &verified); + const uint8_t region_number = bit_lib_bytes_to_num_bcd(block_start_ptr + 10, 1, &verified); // block 2 block_start_ptr = &data->block[start_info_block_number + 2].data[4]; - const uint16_t card_number_prefix = bytes2num_bcd(block_start_ptr, 2, &verified); - const uint64_t card_number_postfix = bytes2num_bcd(block_start_ptr + 2, 8, &verified) / 10; + const uint16_t card_number_prefix = + bit_lib_bytes_to_num_bcd(block_start_ptr, 2, &verified); + const uint64_t card_number_postfix = + bit_lib_bytes_to_num_bcd(block_start_ptr + 2, 8, &verified) / 10; // TRIP SECTOR const uint8_t start_trip_block_number = @@ -123,7 +103,7 @@ static bool zolotaya_korona_parse(const NfcDevice* device, FuriString* parsed_da // block 2: trip block block_start_ptr = &data->block[start_trip_block_number + 2].data[0]; const char validator_first_letter = bit_lib_bytes_to_num_le(block_start_ptr + 1, 1); - const uint32_t validator_id = bytes2num_bcd(block_start_ptr + 2, 3, &verified); + const uint32_t validator_id = bit_lib_bytes_to_num_bcd(block_start_ptr + 2, 3, &verified); const uint32_t last_trip_timestamp = bit_lib_bytes_to_num_le(block_start_ptr + 6, 4); const uint8_t track_number = bit_lib_bytes_to_num_le(block_start_ptr + 10, 1); const uint32_t prev_balance = bit_lib_bytes_to_num_le(block_start_ptr + 11, 4); diff --git a/applications/main/nfc/plugins/supported_cards/zolotaya_korona_online.c b/applications/main/nfc/plugins/supported_cards/zolotaya_korona_online.c index 21375629f..3dbd509bb 100644 --- a/applications/main/nfc/plugins/supported_cards/zolotaya_korona_online.c +++ b/applications/main/nfc/plugins/supported_cards/zolotaya_korona_online.c @@ -17,41 +17,19 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "furi_hal_rtc.h" #include "nfc_supported_card_plugin.h" +#include #include "protocols/mf_classic/mf_classic.h" -#include -#include -#include -#include +#include +#include #define TAG "Zolotaya Korona Online" #define TRIP_SECTOR_NUM (4) #define INFO_SECTOR_NUM (15) -uint64_t bytes2num_bcd(const uint8_t* src, uint8_t len_bytes, bool* is_bcd) { - furi_assert(src); - furi_assert(len_bytes <= 9); - - uint64_t result = 0; - *is_bcd = true; - - for(uint8_t i = 0; i < len_bytes; i++) { - if(((src[i] / 16) > 9) || ((src[i] % 16) > 9)) *is_bcd = false; - - result *= 10; - result += src[i] / 16; - - result *= 10; - result += src[i] % 16; - } - - return result; -} - bool parse_online_card_tariff(uint16_t tariff_num, FuriString* tariff_name) { bool tariff_parsed = false; @@ -111,10 +89,11 @@ static bool zolotaya_korona_online_parse(const NfcDevice* device, FuriString* pa // Validate card number bool is_bcd; - const uint16_t card_number_prefix = bytes2num_bcd(block_start_ptr, 2, &is_bcd); + const uint16_t card_number_prefix = bit_lib_bytes_to_num_bcd(block_start_ptr, 2, &is_bcd); if(!is_bcd) break; if(card_number_prefix != 9643) break; - const uint64_t card_number_postfix = bytes2num_bcd(block_start_ptr + 2, 8, &is_bcd) / 10; + const uint64_t card_number_postfix = + bit_lib_bytes_to_num_bcd(block_start_ptr + 2, 8, &is_bcd) / 10; if(!is_bcd) break; // Parse data diff --git a/lib/lfrfid/lfrfid_worker_modes.c b/lib/lfrfid/lfrfid_worker_modes.c index 61c578939..b0ed99096 100644 --- a/lib/lfrfid/lfrfid_worker_modes.c +++ b/lib/lfrfid/lfrfid_worker_modes.c @@ -605,8 +605,7 @@ static void lfrfid_worker_mode_write_and_set_pass_process(LFRFIDWorker* worker) FURI_LOG_D(TAG, "Data write with pass"); LfRfid* app = worker->cb_ctx; - uint32_t pass = (app->password[0] << 24) | (app->password[1] << 16) | - (app->password[2] << 8) | (app->password[3]); + uint32_t pass = bit_lib_bytes_to_num_be(app->password, 4); request->t5577.mask = 0b10000001; for(uint8_t i = 0; i < request->t5577.blocks_to_write; i++)