From: iceman1001 Date: Mon, 27 Feb 2017 18:18:38 +0000 (+0100) Subject: ADD: `hf 14a read` - now can detect the newer magic generation 1b. In output 1A... X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/8db18d2f15d70c5b6df632863fe005ff733a64a0 ADD: `hf 14a read` - now can detect the newer magic generation 1b. In output 1A (old version, where all hf mf c* commands works) 1B is the newer. --- diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index c05ba6fd..db49a959 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1358,25 +1358,29 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){ } void MifareCIdent(){ - + #define GEN_1A 1 + #define GEN_1B 2 // variables - bool isOK = true; + uint8_t isGen = 0; uint8_t receivedAnswer[1] = {0x00}; uint8_t receivedAnswerPar[1] = {0x00}; ReaderTransmitBitsPar(wupC1, 7, NULL, NULL); if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) { - isOK = false; + goto OUT; } - + isGen |= GEN_1B; + ReaderTransmit(wupC2, sizeof(wupC2), NULL); if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) { - isOK = false; - } + goto OUT; + } + isGen = GEN_1A; +OUT: // removed the if, since some magic tags misbehavies and send an answer to it. mifare_classic_halt(NULL, 0); - cmd_send(CMD_ACK,isOK,0,0,0,0); + cmd_send(CMD_ACK,isGen, 0, 0, 0, 0); } void OnSuccessMagic(){ diff --git a/client/cmdhf14a.c b/client/cmdhf14a.c index 36855c97..cb3a67ed 100644 --- a/client/cmdhf14a.c +++ b/client/cmdhf14a.c @@ -390,21 +390,22 @@ int CmdHF14AReader(const char *Cmd) { // try to see if card responses to "chinese magic backdoor" commands. - uint8_t isOK = 0; + uint8_t isGeneration = 0; + clearCommandBuffer(); c.cmd = CMD_MIFARE_CIDENT; c.arg[0] = 0; c.arg[1] = 0; c.arg[2] = 0; SendCommand(&c); - if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) - isOK = resp.arg[0] & 0xff; + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { + isGeneration = resp.arg[0] & 0xff; + } + if ( isGeneration ) + PrintAndLog("Answers to magic commands (GEN %s): YES", ((isGeneration & 0x2 )==2)?"1B":"1A"); - PrintAndLog("Answers to magic commands (GEN1): %s", (isOK ? "YES" : "NO") ); - // disconnect SendCommand(&cDisconnect); - return select_status; }