@@ -10432,37 +10432,46 @@ static int CmdHF14AMfInfo(const char *Cmd) {
10432
10432
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08s , sizeof (fkey )) == 0
10433
10433
&& card .sak == 0x08 && memcmp (blockdata + 5 , "\x08\x04\x00" , 3 ) == 0
10434
10434
&& (blockdata [8 ] == 0x03 || blockdata [8 ] == 0x04 || blockdata [8 ] == 0x05 ) && blockdata [15 ] == 0x90 ) {
10435
+ // 0390/0490/0590 with RF08S backdoor key
10435
10436
PrintAndLogEx (SUCCESS , "Fudan FM11RF08S %02X%02X" , blockdata [8 ], blockdata [15 ]);
10436
10437
expect_static_enc_nonce = true;
10437
10438
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08s , sizeof (fkey )) == 0
10438
10439
&& card .sak == 0x08 && memcmp (blockdata + 5 , "\x08\x04\x00" , 3 ) == 0
10439
10440
&& (blockdata [8 ] == 0x03 || blockdata [8 ] == 0x04 ) && blockdata [15 ] == 0x91 ) {
10441
+ // 0391/0491 with RF08S backdoor key
10440
10442
PrintAndLogEx (SUCCESS , "Fudan FM11RF08 %02X%02X with advanced verification method" , blockdata [8 ], blockdata [15 ]);
10441
10443
expect_static_enc_nonce = false;
10442
10444
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08s , sizeof (fkey )) == 0
10443
10445
&& card .sak == 0x08 && memcmp (blockdata + 5 , "\x00\x03\x00\x10" , 4 ) == 0
10444
10446
&& blockdata [15 ] == 0x90 ) {
10447
+ // 1090 with RF08S backdoor key
10445
10448
PrintAndLogEx (SUCCESS , "Fudan FM11RF08S-7B %02X%02X" , blockdata [8 ], blockdata [15 ]);
10446
10449
expect_static_enc_nonce = true;
10447
10450
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10448
10451
&& card .sak == 0x08 && memcmp (blockdata + 5 , "\x08\x04\x00" , 3 ) == 0
10449
10452
&& blockdata [15 ] == 0x98 ) {
10453
+ // 1098 with RF08 backdoor key
10450
10454
PrintAndLogEx (SUCCESS , "Fudan FM11RF08S %02X%02X" , blockdata [8 ], blockdata [15 ]);
10451
10455
expect_static_enc_nonce = true;
10452
10456
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10453
10457
&& card .sak == 0x08 && memcmp (blockdata + 5 , "\x08\x04\x00" , 3 ) == 0
10454
10458
&& (blockdata [8 ] >= 0x01 && blockdata [8 ] <= 0x03 ) && blockdata [15 ] == 0x1D ) {
10459
+ // 011D/021D/031D with RF08 backdoor key
10455
10460
PrintAndLogEx (SUCCESS , "Fudan FM11RF08" );
10456
10461
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10457
10462
&& card .sak == 0x08 && memcmp (blockdata + 5 , "\x00\x01\x00\x10" , 4 ) == 0
10458
10463
&& blockdata [15 ] == 0x1D ) {
10464
+ // 101D with RF08 backdoor key
10459
10465
PrintAndLogEx (SUCCESS , "Fudan FM11RF08-7B" );
10460
10466
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k32n , sizeof (fkey )) == 0
10461
10467
&& card .sak == 0x18 && memcmp (blockdata + 5 , "\x18\x02\x00\x46\x44\x53\x37\x30\x56\x30\x31" , 11 ) == 0 ) {
10462
10468
PrintAndLogEx (SUCCESS , "Fudan FM11RF32N" );
10463
10469
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k32n2 , sizeof (fkey )) == 0
10464
10470
&& card .sak == 0x18 && memcmp (blockdata + 5 , "\x18\x02\x00\x46\x44\x53\x37\x30\x56\x30\x31" , 11 ) == 0 ) {
10465
10471
PrintAndLogEx (SUCCESS , "Fudan FM11RF32N (variant)" );
10472
+ } else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10473
+ && card .sak == 0x19 && memcmp (blockdata + 8 , "\x69\x44\x4C\x4B\x56\x32\x01\x92" , 8 ) == 0 ) {
10474
+ PrintAndLogEx (SUCCESS , "Fudan-based iDTRONICS IDT M1K ? (SAK=19)" );
10466
10475
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10467
10476
&& card .sak == 0x20 && memcmp (blockdata + 8 , "\x62\x63\x64\x65\x66\x67\x68\x69" , 8 ) == 0 ) {
10468
10477
PrintAndLogEx (SUCCESS , "Fudan FM11RF32 (SAK=20)" );
@@ -10473,6 +10482,11 @@ static int CmdHF14AMfInfo(const char *Cmd) {
10473
10482
// Note: it also has ATS =
10474
10483
// 10 78 80 90 02 20 90 00 00 00 00 00 + UID + CRC
10475
10484
PrintAndLogEx (SUCCESS , "Fudan FM1208-10" );
10485
+ } else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10486
+ && card .sak == 0x28 && memcmp (blockdata + 5 , "\x28\x04\x00\x90\x93\x56\x09\x00\x00\x00\x00" , 11 ) == 0 ) {
10487
+ // Note: it also has ATS =
10488
+ // 0E 28 B0 20 90 00 00 00 00 00 + UID + CRC
10489
+ PrintAndLogEx (SUCCESS , "Fudan FM1216-110" );
10476
10490
} else if (fKeyType == MF_KEY_BD && memcmp (fkey , k08 , sizeof (fkey )) == 0
10477
10491
&& card .sak == 0x28 && memcmp (blockdata + 5 , "\x28\x04\x00\x90\x53\xB7\x0C\x00\x00\x00\x00" , 11 ) == 0 ) {
10478
10492
// Note: it also has ATS =
0 commit comments