diff --git a/armsrc/felica.c b/armsrc/felica.c index 978495bc2..f78c4958b 100644 --- a/armsrc/felica.c +++ b/armsrc/felica.c @@ -587,8 +587,8 @@ void HfDumpFelicaLiteS() { StartCountSspClk(); int c; - int cnt = 0; - int cntfails = 0; + bool isOK = false; + uint16_t cnt = 0, cntfails = 0; uint8_t *dest = (uint8_t *)BigBuf_get_addr(); while (!BUTTON_PRESS() && !usb_poll_validate_length()) { @@ -628,6 +628,7 @@ void HfDumpFelicaLiteS() { } } } + isOK = true; break; } } @@ -639,5 +640,5 @@ void HfDumpFelicaLiteS() { //setting tracelen - important! it was set by buffer overflow before set_tracelen(cnt); - cmd_send(CMD_ACK, 1, cnt, 0, 0, 0); + cmd_send(CMD_ACK, isOK, cnt, 0, 0, 0); } \ No newline at end of file diff --git a/client/cmdhffelica.c b/client/cmdhffelica.c index e5e21b632..66c82f3c4 100644 --- a/client/cmdhffelica.c +++ b/client/cmdhffelica.c @@ -331,7 +331,7 @@ int CmdHFFelicaDumpLite(const char *Cmd) { if ( ctmp == 'h' || ctmp == 'H') return usage_hf_felica_dumplite(); PrintAndLog("[+] FeliCa lite - dump started"); - + PrintAndLog("[+] press pm3-button to cancel"); UsbCommand c = {CMD_FELICA_LITE_DUMP, {0,0,0}}; clearCommandBuffer(); SendCommand(&c); @@ -344,13 +344,19 @@ int CmdHFFelicaDumpLite(const char *Cmd) { if (ukbhit()) { int gc = getchar(); (void)gc; printf("\n[!] aborted via keyboard!\n"); + DropField(); return 1; } if (timeout > 100) { PrintAndLog("[!] timeout while waiting for reply."); + DropField(); return 1; } } + if (resp.arg[0] == 0) { + PrintAndLog("\n[!] Button pressed. Aborted."); + return 1; + } uint64_t tracelen = resp.arg[1]; uint8_t *trace = malloc(tracelen);