diff --git a/CHANGELOG.md b/CHANGELOG.md index 267388fb9..1fa759886 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf 14a info` - now reads and prints QL88 sigantures (@iceman1001) - Fixed `hf iclass dump` truncating AA2 blocks and improve reliability (@nvx) - Added some info about UMC in "doc/magic_cards_notes.md" (@temskiy) diff --git a/client/src/mifare/mifaredefault.h b/client/src/mifare/mifaredefault.h index f399bb7b0..ab200de5f 100644 --- a/client/src/mifare/mifaredefault.h +++ b/client/src/mifare/mifaredefault.h @@ -61,6 +61,8 @@ static const uint64_t g_mifare_default_keys[] = { 0x5C8FF9990DA2, // MFC EV1 Signature 16 A 0xD01AFEEB890A, // MFC EV1 Signature 16 B 0x75CCB59C9BED, // MFC EV1 Signature 17 A + 0x707B11FC1481, // MFC QL88 Signature 17 B + 0x2612C6DE84CA, // MFC QL88 Signature 17 A 0xfc00018778f7, // Public Transport 0x6471a5ef2d1a, // SimonsVoss 0x4E3552426B32, // ID06 @@ -120,6 +122,9 @@ static const uint8_t g_mifare_mad_key_b[] = {0x89, 0xEC, 0xA9, 0x7F, 0x8C, 0x2A} static const uint8_t g_mifare_signature_key_a[] = {0x5C, 0x8F, 0xF9, 0x99, 0x0D, 0xA2}; static const uint8_t g_mifare_signature_key_b[] = {0x4b, 0x79, 0x1b, 0xea, 0x7b, 0xcc}; +// Manufacture MFC / QL88 (S17 / B) +static const uint8_t g_mifare_ql88_signature_key_b[] = {0x70, 0x7B, 0x11, 0xFC, 0x14, 0x81}; + static const uint8_t g_mifare_ndef_key[] = {0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7}; static const uint8_t g_mifarep_mad_key[] = {0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7}; static const uint8_t g_mifarep_ndef_key[] = {0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7}; diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 13d925fdd..040d24df9 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1415,6 +1415,15 @@ int read_mfc_ev1_signature(uint8_t *signature) { if (res == PM3_SUCCESS) { memcpy(signature, sign, sizeof(sign)); } + } else { + // try QL88 + res = mfReadBlock(69, MF_KEY_B, g_mifare_ql88_signature_key_b, sign); + if (res == PM3_SUCCESS) { + res = mfReadBlock(70, MF_KEY_B, g_mifare_ql88_signature_key_b, sign + 16); + if (res == PM3_SUCCESS) { + memcpy(signature, sign, sizeof(sign)); + } + } } return res; }