mirror of
https://github.com/bettse/seader.git
synced 2026-05-04 09:35:14 +00:00
Store diversifier len
This commit is contained in:
@@ -774,6 +774,7 @@ NfcCommand seader_worker_card_detect(
|
||||
OCTET_STRING_fromBuf(
|
||||
&cardDetails->protocol, (const char*)protocol_bytes, sizeof(protocol_bytes));
|
||||
memcpy(credential->diversifier, uid, uid_len);
|
||||
credential->diversifier_len = uid_len;
|
||||
} else {
|
||||
protocol_bytes[1] = FrameProtocol_nfc;
|
||||
OCTET_STRING_fromBuf(
|
||||
@@ -783,6 +784,7 @@ NfcCommand seader_worker_card_detect(
|
||||
cardDetails->atqa = &atqa_string;
|
||||
if(seader_mf_df_check_card_type(atqa[0], atqa[1], sak)) {
|
||||
memcpy(credential->diversifier, uid, uid_len);
|
||||
credential->diversifier_len = uid_len;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ void seader_scene_card_menu_on_enter(void* context) {
|
||||
SubmenuIndexSaveRFID,
|
||||
seader_scene_card_menu_submenu_callback,
|
||||
seader);
|
||||
if(credential->sio[0] == 0x30) {
|
||||
if(credential->sio[0] == 0x30 && credential->diversifier_len == RFAL_PICOPASS_UID_LEN) {
|
||||
submenu_add_item(
|
||||
submenu,
|
||||
"Save SR",
|
||||
|
||||
+3
-1
@@ -72,6 +72,7 @@ static bool seader_credential_load(SeaderCredential* cred, FuriString* path, boo
|
||||
// Optional SIO/Diversifier
|
||||
flipper_format_read_hex(file, "SIO", cred->sio, sizeof(cred->sio));
|
||||
flipper_format_read_hex(file, "Diversifier", cred->diversifier, sizeof(cred->diversifier));
|
||||
cred->diversifier_len = sizeof(cred->diversifier); // No way to know real length;
|
||||
|
||||
parsed = true;
|
||||
} while(false);
|
||||
@@ -364,7 +365,7 @@ bool seader_credential_save_agnostic(SeaderCredential* cred, const char* name) {
|
||||
if(cred->sio[0] == 0x30) {
|
||||
if(!flipper_format_write_hex(file, "SIO", cred->sio, sizeof(cred->sio))) break;
|
||||
if(!flipper_format_write_hex(
|
||||
file, "Diversifier", cred->diversifier, sizeof(cred->diversifier)))
|
||||
file, "Diversifier", cred->diversifier, cred->diversifier_len))
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -643,6 +644,7 @@ void seader_credential_clear(SeaderCredential* cred) {
|
||||
cred->type = SeaderCredentialTypeNone;
|
||||
memset(cred->sio, 0, sizeof(cred->sio));
|
||||
memset(cred->diversifier, 0, sizeof(cred->diversifier));
|
||||
cred->diversifier_len = 0;
|
||||
furi_string_reset(cred->load_path);
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ typedef struct {
|
||||
size_t bit_length;
|
||||
uint8_t sio[128];
|
||||
uint8_t diversifier[8];
|
||||
uint8_t diversifier_len;
|
||||
SeaderCredentialType type;
|
||||
SeaderCredentialSaveFormat save_format;
|
||||
char name[SEADER_CRED_NAME_MAX_LEN + 1];
|
||||
|
||||
Reference in New Issue
Block a user