}\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
// 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;
}