Skip to content

Commit c6aacd1

Browse files
committed
mfc fingerprinting updates
1 parent 8ce72a9 commit c6aacd1

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

client/src/cmdhfmf.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10432,37 +10432,46 @@ static int CmdHF14AMfInfo(const char *Cmd) {
1043210432
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08s, sizeof(fkey)) == 0
1043310433
&& card.sak == 0x08 && memcmp(blockdata + 5, "\x08\x04\x00", 3) == 0
1043410434
&& (blockdata[8] == 0x03 || blockdata[8] == 0x04 || blockdata[8] == 0x05) && blockdata[15] == 0x90) {
10435+
// 0390/0490/0590 with RF08S backdoor key
1043510436
PrintAndLogEx(SUCCESS, "Fudan FM11RF08S %02X%02X", blockdata[8], blockdata[15]);
1043610437
expect_static_enc_nonce = true;
1043710438
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08s, sizeof(fkey)) == 0
1043810439
&& card.sak == 0x08 && memcmp(blockdata + 5, "\x08\x04\x00", 3) == 0
1043910440
&& (blockdata[8] == 0x03 || blockdata[8] == 0x04) && blockdata[15] == 0x91) {
10441+
// 0391/0491 with RF08S backdoor key
1044010442
PrintAndLogEx(SUCCESS, "Fudan FM11RF08 %02X%02X with advanced verification method", blockdata[8], blockdata[15]);
1044110443
expect_static_enc_nonce = false;
1044210444
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08s, sizeof(fkey)) == 0
1044310445
&& card.sak == 0x08 && memcmp(blockdata + 5, "\x00\x03\x00\x10", 4) == 0
1044410446
&& blockdata[15] == 0x90) {
10447+
// 1090 with RF08S backdoor key
1044510448
PrintAndLogEx(SUCCESS, "Fudan FM11RF08S-7B %02X%02X", blockdata[8], blockdata[15]);
1044610449
expect_static_enc_nonce = true;
1044710450
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08, sizeof(fkey)) == 0
1044810451
&& card.sak == 0x08 && memcmp(blockdata + 5, "\x08\x04\x00", 3) == 0
1044910452
&& blockdata[15] == 0x98) {
10453+
// 1098 with RF08 backdoor key
1045010454
PrintAndLogEx(SUCCESS, "Fudan FM11RF08S %02X%02X", blockdata[8], blockdata[15]);
1045110455
expect_static_enc_nonce = true;
1045210456
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08, sizeof(fkey)) == 0
1045310457
&& card.sak == 0x08 && memcmp(blockdata + 5, "\x08\x04\x00", 3) == 0
1045410458
&& (blockdata[8] >= 0x01 && blockdata[8] <= 0x03) && blockdata[15] == 0x1D) {
10459+
// 011D/021D/031D with RF08 backdoor key
1045510460
PrintAndLogEx(SUCCESS, "Fudan FM11RF08");
1045610461
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08, sizeof(fkey)) == 0
1045710462
&& card.sak == 0x08 && memcmp(blockdata + 5, "\x00\x01\x00\x10", 4) == 0
1045810463
&& blockdata[15] == 0x1D) {
10464+
// 101D with RF08 backdoor key
1045910465
PrintAndLogEx(SUCCESS, "Fudan FM11RF08-7B");
1046010466
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k32n, sizeof(fkey)) == 0
1046110467
&& card.sak == 0x18 && memcmp(blockdata + 5, "\x18\x02\x00\x46\x44\x53\x37\x30\x56\x30\x31", 11) == 0) {
1046210468
PrintAndLogEx(SUCCESS, "Fudan FM11RF32N");
1046310469
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k32n2, sizeof(fkey)) == 0
1046410470
&& card.sak == 0x18 && memcmp(blockdata + 5, "\x18\x02\x00\x46\x44\x53\x37\x30\x56\x30\x31", 11) == 0) {
1046510471
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)");
1046610475
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08, sizeof(fkey)) == 0
1046710476
&& card.sak == 0x20 && memcmp(blockdata + 8, "\x62\x63\x64\x65\x66\x67\x68\x69", 8) == 0) {
1046810477
PrintAndLogEx(SUCCESS, "Fudan FM11RF32 (SAK=20)");
@@ -10473,6 +10482,11 @@ static int CmdHF14AMfInfo(const char *Cmd) {
1047310482
// Note: it also has ATS =
1047410483
// 10 78 80 90 02 20 90 00 00 00 00 00 + UID + CRC
1047510484
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");
1047610490
} else if (fKeyType == MF_KEY_BD && memcmp(fkey, k08, sizeof(fkey)) == 0
1047710491
&& card.sak == 0x28 && memcmp(blockdata + 5, "\x28\x04\x00\x90\x53\xB7\x0C\x00\x00\x00\x00", 11) == 0) {
1047810492
// Note: it also has ATS =

0 commit comments

Comments
 (0)