-int CmdHF14AFuzz(const char *Cmd) {
- char formatstr[256] = {0},sendbuf[256] = {0};
- uint32_t start=0,end=0;
-
- if (param_getchar(Cmd, 0) == 0) {
- PrintAndLog("fuzz raw hex data to the card and show response <ONLY for develepers>");
- PrintAndLog("Usage: hf 14a fuzz <FORMAT> [<start index> <end index>]");
- PrintAndLog("FORMAT controls the output as in C printf");
- PrintAndLog("sample: hf 14a fuzz 909F");
- PrintAndLog(" hf 14a fuzz 00%02x00000000 0 0xFF");
- return 0;
- }
-
- start = param_get8ex(Cmd, 1, 0,16);
- end = param_get8ex(Cmd, 2, 0,16);
- param_getstr(Cmd, 0, formatstr);
-
- for( int i=start;i<=end;++i)
- {
- snprintf(sendbuf, sizeof(sendbuf), formatstr, i);
-
- int len = strlen(sendbuf)/2;
-
- UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_APDU|ISO14A_NO_DISCONNECT, len, 0}};
- param_gethex(sendbuf, 0, c.d.asBytes, len*2);
- PrintAndLog("len:%d raw:",len);
- PrintAndLog("%s",sprint_hex(c.d.asBytes, len));
- SendCommand(&c);
-
- UsbCommand * resp = WaitForResponse(CMD_ACK);
- PrintAndLog("res:%d",resp->arg[0]);
-
- while(resp->arg[0] > sizeof(resp->d))
- {
- PrintAndLog("%s", sprint_hex(resp->d.asBytes,sizeof(resp->d)));
-
- resp = WaitForResponse(CMD_ACK);
- }
- PrintAndLog("%s", sprint_hex(resp->d.asBytes,resp->arg[0]));
-
- PrintAndLog("");
-
- msleep(100);
- }
-
- return 0;
-}
-