cmd_send(CMD_ACK,1,cuid,0,dataoutbuf,11);\r
LEDsoff();\r
}\r
-void MifareUC_Auth2(uint32_t arg0, uint8_t *datain){\r
+void MifareUC_Auth2(uint8_t arg0, uint8_t *datain){\r
\r
uint8_t key[16] = {0x00};\r
byte_t dataoutbuf[16] = {0x00};\r
if (MF_DBGLEVEL >= MF_DBG_EXTENDED) DbpString("AUTH 2 FINISHED");\r
\r
cmd_send(CMD_ACK,1,0,0,dataoutbuf,11);\r
- FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
- LEDsoff();\r
+ if (arg0) {\r
+ FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
+ LEDsoff();\r
+ }\r
}\r
\r
// Arg0 = BlockNo,\r
// params\r
uint8_t blockNo = arg0;\r
uint16_t blocks = arg1;\r
- bool useKey = (arg2 == 1);\r
+ bool useKey = (arg2 == 1); //UL_C\r
+ bool usePwd = (arg2 == 2); //UL_EV1/NTAG\r
int countblocks = 0;\r
uint8_t dataout[176] = {0x00};\r
\r
uint8_t rnd_ab[16] = {0x00};\r
uint8_t IV[8] = {0x00};\r
\r
- uint16_t len;\r
+ uint16_t len2;\r
uint8_t receivedAnswer[MAX_FRAME_SIZE];\r
uint8_t receivedAnswerPar[MAX_PARITY_SIZE];\r
\r
- len = mifare_sendcmd_short(NULL, 1, 0x1A, 0x00, receivedAnswer,receivedAnswerPar ,NULL);\r
- if (len != 11) {\r
+ len2 = mifare_sendcmd_short(NULL, 1, 0x1A, 0x00, receivedAnswer,receivedAnswerPar ,NULL);\r
+ if (len2 != 11) {\r
if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("Cmd Error: %02x", receivedAnswer[0]);\r
OnError(1);\r
return;\r
// encrypt out, in, length, key, iv\r
tdes_2key_enc(rnd_ab, rnd_ab, sizeof(rnd_ab), key, enc_random_b);\r
\r
- len = mifare_sendcmd_short_mfucauth(NULL, 1, 0xAF, rnd_ab, receivedAnswer, receivedAnswerPar, NULL);\r
- if (len != 11) {\r
+ len2 = mifare_sendcmd_short_mfucauth(NULL, 1, 0xAF, rnd_ab, receivedAnswer, receivedAnswerPar, NULL);\r
+ if (len2 != 11) {\r
OnError(1);\r
return;\r
}\r
Dbprintf("failed authentication"); \r
}\r
\r
+ if (usePwd) { //ev1 or ntag auth\r
+ uint8_t Pwd[4] = {0x00};\r
+ memcpy(Pwd, datain, 4);\r
+ uint8_t pack[4] = {0,0,0,0};\r
+\r
+ if (mifare_ul_ev1_auth(Pwd, pack)){\r
+ OnError(1);\r
+ Dbprintf("failed authentication");\r
+ return; \r
+ }\r
+ }\r
+\r
for (int i = 0; i < blocks; i++){\r
len = mifare_ultra_readblock(blockNo * 4 + i, dataout + 4 * i);\r
\r