]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: `hf 14a read` - now can detect the newer magic generation 1b. In output 1A...
authoriceman1001 <iceman@iuse.se>
Mon, 27 Feb 2017 18:18:38 +0000 (19:18 +0100)
committericeman1001 <iceman@iuse.se>
Mon, 27 Feb 2017 18:18:38 +0000 (19:18 +0100)
armsrc/mifarecmd.c
client/cmdhf14a.c

index c05ba6fd363b802c611f5be0fec4f819f7388a5f..db49a9598a8935a219e7e76130bece230592e6a9 100644 (file)
@@ -1358,25 +1358,29 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
 }\r
 \r
 void MifareCIdent(){\r
-       \r
+       #define GEN_1A 1\r
+       #define GEN_1B 2\r
        // variables\r
-       bool isOK = true;       \r
+       uint8_t isGen = 0;\r
        uint8_t receivedAnswer[1] = {0x00};\r
        uint8_t receivedAnswerPar[1] = {0x00};\r
 \r
        ReaderTransmitBitsPar(wupC1, 7, NULL, NULL);\r
        if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
-               isOK = false;\r
+               goto OUT;\r
        }\r
-\r
+       isGen |= GEN_1B;\r
+       \r
        ReaderTransmit(wupC2, sizeof(wupC2), NULL);\r
        if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
-               isOK = false;\r
-       }\r
+               goto OUT;\r
+       }       \r
+       isGen = GEN_1A;\r
 \r
+OUT:   \r
        // removed the if,  since some magic tags misbehavies and send an answer to it.\r
        mifare_classic_halt(NULL, 0);\r
-       cmd_send(CMD_ACK,isOK,0,0,0,0);\r
+       cmd_send(CMD_ACK,isGen, 0, 0, 0, 0);\r
 }\r
 \r
 void OnSuccessMagic(){\r
index 36855c97c9dbe7c5ff7b1aba855fd251dd652bc8..cb3a67ed38b702ce75546fd25d096435dff3c4b9 100644 (file)
@@ -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;
 }
 
Impressum, Datenschutz