diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 0f101fed4..a8453868d 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2702,17 +2702,17 @@ void MifareU_Otp_Tearoff(uint8_t arg0, uint32_t arg1, uint8_t *datain) { uint8_t data_testwrite[4] = {0x00}; memcpy(data_fullwrite, datain, 4); memcpy(data_testwrite, datain + 4, 4); -// optional authentication before? if (DBGLEVEL >= DBG_DEBUG) DbpString("Preparing OTP tear-off"); + if (tearOffTime > 43000) + tearOffTime == 43000; + LEDsoff(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - StartTicks(); - // write cmd to send, include CRC // 1b write, 1b block, 4b data, 2 crc uint8_t cmd[] = {MIFARE_ULC_WRITE, blockNo, data_testwrite[0], data_testwrite[1], data_testwrite[2], data_testwrite[3], 0, 0}; @@ -2732,10 +2732,10 @@ void MifareU_Otp_Tearoff(uint8_t arg0, uint32_t arg1, uint8_t *datain) { // Wait before cutting power. aka tear-off LED_D_ON(); - WaitUS(tearOffTime); + + SpinDelayUsPrecision(tearOffTime); if (DBGLEVEL >= DBG_ERROR) Dbprintf(_YELLOW_("OTP tear-off triggered!")); switch_off(); reply_ng(CMD_HF_MFU_OTP_TEAROFF, PM3_SUCCESS, NULL, 0); - StopTicks(); } diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index ad3e0faa8..40923aa80 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2850,6 +2850,10 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) { PrintAndLogEx(WARNING, "Wrong time limit number"); errors = true; } + if (timeLimit > 43000) { + PrintAndLogEx(WARNING, "You can't set delay out of 1..43000 range!"); + errors = true; + } cmdp += 2; break; case 's': @@ -2941,14 +2945,12 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) { else snprintf(post_res, sizeof(post_res) - 1, _CYAN_("%s"), sprint_hex_inrow(post, sizeof(post))); - PrintAndLogEx(INFO, "Result %02d/0x%02X | %s vs %s" , blockNoUint , blockNoUint , sprint_hex_inrow(pre, sizeof(pre)) , post_res ); - } else { if (got_pre == false) PrintAndLogEx(FAILED, "Failed to read block BEFORE");