diff --git a/client/cmddata.c b/client/cmddata.c index 1d2541ccb..558cf357d 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -10,7 +10,6 @@ #include "cmddata.h" uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; -//uint8_t g_debugMode = 0; size_t DemodBufferLen = 0; size_t g_DemodStartIdx = 0; int g_DemodClock = 0; @@ -24,7 +23,7 @@ static int usage_data_printdemodbuf(void) { PrintAndLogEx(NORMAL, " x output in hex (omit for binary output)"); PrintAndLogEx(NORMAL, " o enter offset in # of bits"); PrintAndLogEx(NORMAL, " l enter length to print in # of bits or hex characters respectively"); - return 0; + return PM3_SUCCESS; } static int usage_data_manrawdecode(void) { PrintAndLogEx(NORMAL, "Usage: data manrawdecode [invert] [maxErr]"); @@ -34,7 +33,7 @@ static int usage_data_manrawdecode(void) { PrintAndLogEx(NORMAL, " [maxErr] set number of errors allowed (default = 20)"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, " Example: data manrawdecode = decode manchester bitstream from the demodbuffer"); - return 0; + return PM3_SUCCESS; } static int usage_data_biphaserawdecode(void) { PrintAndLogEx(NORMAL, "Usage: data biphaserawdecode [offset] [invert] [maxErr]"); @@ -48,7 +47,7 @@ static int usage_data_biphaserawdecode(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, " Example: data biphaserawdecode = decode biphase bitstream from the demodbuffer"); PrintAndLogEx(NORMAL, " Example: data biphaserawdecode 1 1 = decode biphase bitstream from the demodbuffer, set offset, and invert output"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod [modulation] |"); @@ -65,7 +64,7 @@ static int usage_data_rawdemod(void) { PrintAndLogEx(NORMAL, " : data rawdemod nr = demod GraphBuffer using: nrz/direct - autodetect"); PrintAndLogEx(NORMAL, " : data rawdemod p1 = demod GraphBuffer using: psk1 - autodetect"); PrintAndLogEx(NORMAL, " : data rawdemod p2 = demod GraphBuffer using: psk2 - autodetect"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_am(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod am [clock] [maxError] [maxLen] [amplify]"); @@ -81,7 +80,7 @@ static int usage_data_rawdemod_am(void) { PrintAndLogEx(NORMAL, " : data rawdemod am 32 1 = demod an ask/manchester tag from GraphBuffer using a clock of RF/32 and inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod am 1 = demod an ask/manchester tag from GraphBuffer while inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod am 64 1 0 = demod an ask/manchester tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_ab(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod ab [offset] [clock] [maxError] [maxLen] "); @@ -104,7 +103,7 @@ static int usage_data_rawdemod_ab(void) { PrintAndLogEx(NORMAL, " : data rawdemod ab 0 1 = demod an ask/biph tag from GraphBuffer while inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod ab 0 64 1 0 = demod an ask/biph tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors"); PrintAndLogEx(NORMAL, " : data rawdemod ab 0 64 1 0 0 a = demod an ask/biph tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors, and amp"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_ar(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod ar [clock] [maxError] [maxLen] [amplify]"); @@ -121,7 +120,7 @@ static int usage_data_rawdemod_ar(void) { PrintAndLogEx(NORMAL, " : data rawdemod ar 1 = demod an ask tag from GraphBuffer while inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod ar 64 1 0 = demod an ask tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors"); PrintAndLogEx(NORMAL, " : data rawdemod ar 64 1 0 0 a = demod an ask tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors, and amp"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_fs(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod fs [clock] [fchigh] [fclow]"); @@ -137,7 +136,7 @@ static int usage_data_rawdemod_fs(void) { PrintAndLogEx(NORMAL, " : data rawdemod fs 64 0 8 5 = demod an fsk1 RF/64 tag from GraphBuffer"); PrintAndLogEx(NORMAL, " : data rawdemod fs 50 0 10 8 = demod an fsk2 RF/50 tag from GraphBuffer"); PrintAndLogEx(NORMAL, " : data rawdemod fs 50 1 10 8 = demod an fsk2a RF/50 tag from GraphBuffer"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_nr(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod nr [clock] <0|1> [maxError]"); @@ -150,7 +149,7 @@ static int usage_data_rawdemod_nr(void) { PrintAndLogEx(NORMAL, " : data rawdemod nr 32 1 = demod a nrz/direct tag from GraphBuffer using a clock of RF/32 and inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod nr 1 = demod a nrz/direct tag from GraphBuffer while inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod nr 64 1 0 = demod a nrz/direct tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_p1(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod p1 [clock] <0|1> [maxError]"); @@ -163,7 +162,7 @@ static int usage_data_rawdemod_p1(void) { PrintAndLogEx(NORMAL, " : data rawdemod p1 32 1 = demod a psk1 tag from GraphBuffer using a clock of RF/32 and inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod p1 1 = demod a psk1 tag from GraphBuffer while inverting data"); PrintAndLogEx(NORMAL, " : data rawdemod p1 64 1 0 = demod a psk1 tag from GraphBuffer using a clock of RF/64, inverting data and allowing 0 demod errors"); - return 0; + return PM3_SUCCESS; } static int usage_data_rawdemod_p2(void) { PrintAndLogEx(NORMAL, "Usage: data rawdemod p2 [clock] <0|1> [maxError]"); @@ -176,7 +175,7 @@ static int usage_data_rawdemod_p2(void) { PrintAndLogEx(NORMAL, " : data rawdemod p2 32 1 = demod a psk2 tag from GraphBuffer using a clock of RF/32 and inverting output"); PrintAndLogEx(NORMAL, " : data rawdemod p2 1 = demod a psk2 tag from GraphBuffer, autodetect clock and invert output"); PrintAndLogEx(NORMAL, " : data rawdemod p2 64 1 0 = demod a psk2 tag from GraphBuffer using a clock of RF/64, inverting output and allowing 0 demod errors"); - return 0; + return PM3_SUCCESS; } static int usage_data_autocorr(void) { PrintAndLogEx(NORMAL, "Autocorrelate is used to detect repeating sequences. We use it as detection of length in bits a message inside the signal is"); @@ -185,7 +184,7 @@ static int usage_data_autocorr(void) { PrintAndLogEx(NORMAL, " h This help"); PrintAndLogEx(NORMAL, " w window length for correlation - default = 4000"); PrintAndLogEx(NORMAL, " g save back to GraphBuffer (overwrite)"); - return 0; + return PM3_SUCCESS; } static int usage_data_undecimate(void) { PrintAndLogEx(NORMAL, "Usage: data undec [factor]"); @@ -194,7 +193,7 @@ static int usage_data_undecimate(void) { PrintAndLogEx(NORMAL, " h This help"); PrintAndLogEx(NORMAL, " factor The number of times to repeat each sample.[default:2]"); PrintAndLogEx(NORMAL, "Example: 'data undec 3'"); - return 0; + return PM3_SUCCESS; } static int usage_data_detectclock(void) { PrintAndLogEx(NORMAL, "Usage: data detectclock [modulation] "); @@ -206,24 +205,24 @@ static int usage_data_detectclock(void) { PrintAndLogEx(NORMAL, " data detectclock f = detect the clock of an fsk modulated wave in the GraphBuffer"); PrintAndLogEx(NORMAL, " data detectclock p = detect the clock of an psk modulated wave in the GraphBuffer"); PrintAndLogEx(NORMAL, " data detectclock n = detect the clock of an nrz/direct modulated wave in the GraphBuffer"); - return 0; + return PM3_SUCCESS; } static int usage_data_hex2bin(void) { PrintAndLogEx(NORMAL, "Usage: data hex2bin "); PrintAndLogEx(NORMAL, " This function will ignore all non-hexadecimal characters (but stop reading on whitespace)"); - return 0; + return PM3_SUCCESS; } static int usage_data_bin2hex(void) { PrintAndLogEx(NORMAL, "Usage: data bin2hex "); PrintAndLogEx(NORMAL, " This function will ignore all characters not 1 or 0 (but stop reading on whitespace)"); - return 0; + return PM3_SUCCESS; } static int usage_data_buffclear(void) { PrintAndLogEx(NORMAL, "This function clears the bigbuff on deviceside"); PrintAndLogEx(NORMAL, "Usage: data buffclear [h]"); PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h This help"); - return 0; + return PM3_SUCCESS; } static int usage_data_fsktonrz() { PrintAndLogEx(NORMAL, "Usage: data fsktonrz c l f "); @@ -232,7 +231,7 @@ static int usage_data_fsktonrz() { PrintAndLogEx(NORMAL, " c enter the a clock (omit to autodetect)"); PrintAndLogEx(NORMAL, " l enter a field clock (omit to autodetect)"); PrintAndLogEx(NORMAL, " f enter a field clock (omit to autodetect)"); - return 0; + return PM3_SUCCESS; } @@ -367,7 +366,7 @@ static int CmdSetDebugMode(const char *Cmd) { int demod = 0; sscanf(Cmd, "%i", &demod); g_debugMode = (uint8_t)demod; - return 1; + return PM3_SUCCESS; } //by marshmellow @@ -420,7 +419,7 @@ int CmdPrintDemodBuff(const char *Cmd) { if (DemodBufferLen == 0) { PrintAndLogEx(NORMAL, "Demodbuffer is empty"); - return 0; + return PM3_ESOFT; } length = (length > (DemodBufferLen - offset)) ? DemodBufferLen - offset : length; @@ -428,13 +427,13 @@ int CmdPrintDemodBuff(const char *Cmd) { char *buf = (char *)(DemodBuffer + offset); int numBits = binarraytohex(hex, sizeof(hex), buf, length); if (numBits == 0) { - return 0; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "DemodBuffer: %s", hex); } else { PrintAndLogEx(NORMAL, "DemodBuffer:\n%s", sprint_bin_break(DemodBuffer + offset, length, 32)); } - return 1; + return PM3_SUCCESS; } //by marshmellow @@ -445,7 +444,7 @@ int CmdGetBitStream(const char *Cmd) { GraphBuffer[i] = (GraphBuffer[i] >= 1) ? 1 : 0; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } //by marshmellow @@ -469,7 +468,7 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType, if (invert != 0 && invert != 1) { PrintAndLogEx(WARNING, "Invalid argument: %s", Cmd); - return 0; + return PM3_EINVARG; } if (clk == 1) { @@ -481,7 +480,7 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType, PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) #samples from graphbuff: %d", BitLen); - if (BitLen < 255) return 0; + if (BitLen < 255) return PM3_ESOFT; if (maxLen < BitLen && maxLen != 0) BitLen = maxLen; @@ -515,12 +514,12 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType, if (errCnt < 0 || BitLen < 16) { //if fatal error (or -1) PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) No data found errors:%d, invert:%c, bitlen:%d, clock:%d", errCnt, (invert) ? 'Y' : 'N', BitLen, clk); - return 0; + return PM3_ESOFT; } if (errCnt > maxErr) { PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) Too many errors found, errors:%d, bits:%d, clock:%d", errCnt, BitLen, clk); - return 0; + return PM3_ESOFT; } if (verbose) PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) Using clock:%d, invert:%d, bits found:%d", clk, invert, BitLen); @@ -544,7 +543,7 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType, if (emSearch) AskEm410xDecode(true, &hi, &lo); - return 1; + return PM3_SUCCESS; } int ASKDemod(const char *Cmd, bool verbose, bool emSearch, uint8_t askType) { bool st = false; @@ -579,7 +578,7 @@ static int Cmdmandecoderaw(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (strlen(Cmd) > 5 || cmdp == 'h') return usage_data_manrawdecode(); - if (DemodBufferLen == 0) return 0; + if (DemodBufferLen == 0) return PM3_ESOFT; uint8_t bits[MAX_DEMOD_BUF_LEN] = {0}; @@ -593,7 +592,7 @@ static int Cmdmandecoderaw(const char *Cmd) { if (high > 7 || low < 0) { PrintAndLogEx(WARNING, "Error: please raw demod the wave first then manchester raw decode"); - return 0; + return PM3_ESOFT; } sscanf(Cmd, "%i %i", &invert, &maxErr); @@ -602,7 +601,7 @@ static int Cmdmandecoderaw(const char *Cmd) { errCnt = manrawdecode(bits, &size, invert, &alignPos); if (errCnt >= maxErr) { PrintAndLogEx(WARNING, "Too many errors: %d", errCnt); - return 0; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "Manchester Decoded - # errors:%d - data:", errCnt); @@ -618,7 +617,7 @@ static int Cmdmandecoderaw(const char *Cmd) { printEM410x(hi, id); } } - return 1; + return PM3_SUCCESS; } /* @@ -639,21 +638,21 @@ static int CmdBiphaseDecodeRaw(const char *Cmd) { sscanf(Cmd, "%i %i %i", &offset, &invert, &maxErr); if (DemodBufferLen == 0) { PrintAndLogEx(WARNING, "DemodBuffer Empty - run " _YELLOW_("'data rawdemod ar'")" first"); - return 0; + return PM3_ESOFT; } uint8_t bits[MAX_DEMOD_BUF_LEN] = {0}; size = sizeof(bits); - if (!getDemodBuff(bits, &size)) return 0; + if (!getDemodBuff(bits, &size)) return PM3_ESOFT; errCnt = BiphaseRawDecode(bits, &size, &offset, invert); if (errCnt < 0) { PrintAndLogEx(WARNING, "Error during decode:%d", errCnt); - return 0; + return PM3_ESOFT; } if (errCnt > maxErr) { PrintAndLogEx(WARNING, "Too many errors attempting to decode: %d", errCnt); - return 0; + return PM3_ESOFT; } if (errCnt > 0) @@ -667,7 +666,7 @@ static int CmdBiphaseDecodeRaw(const char *Cmd) { setDemodBuff(DemodBuffer, DemodBufferLen - offset, offset); setClockGrid(g_DemodClock, g_DemodStartIdx + g_DemodClock * offset / 2); - return 1; + return PM3_SUCCESS; } //by marshmellow @@ -681,25 +680,25 @@ int ASKbiphaseDemod(const char *Cmd, bool verbose) { size_t size = getFromGraphBuf(BitStream); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: no data in graphbuf"); - return 0; + return PM3_ESOFT; } int startIdx = 0; //invert here inverts the ask raw demoded bits which has no effect on the demod, but we need the pointer int errCnt = askdemod_ext(BitStream, &size, &clk, &invert, maxErr, 0, 0, &startIdx); if (errCnt < 0 || errCnt > maxErr) { PrintAndLogEx(DEBUG, "DEBUG: no data or error found %d, clock: %d", errCnt, clk); - return 0; + return PM3_ESOFT; } //attempt to Biphase decode BitStream errCnt = BiphaseRawDecode(BitStream, &size, &offset, invert); if (errCnt < 0) { if (g_debugMode || verbose) PrintAndLogEx(DEBUG, "DEBUG: Error BiphaseRawDecode: %d", errCnt); - return 0; + return PM3_ESOFT; } if (errCnt > maxErr) { if (g_debugMode || verbose) PrintAndLogEx(DEBUG, "DEBUG: Error BiphaseRawDecode too many errors: %d", errCnt); - return 0; + return PM3_ESOFT; } //success set DemodBuffer and return setDemodBuff(BitStream, size, 0); @@ -708,7 +707,7 @@ int ASKbiphaseDemod(const char *Cmd, bool verbose) { PrintAndLogEx(NORMAL, "Biphase Decoded using offset: %d - clock: %d - # errors:%d - data:", offset, clk, errCnt); printDemodBuff(); } - return 1; + return PM3_SUCCESS; } //by marshmellow - see ASKbiphaseDemod static int Cmdaskbiphdemod(const char *Cmd) { @@ -855,7 +854,7 @@ static int CmdBitsamples(const char *Cmd) { if (!GetFromDevice(BIG_BUF, got, sizeof(got), 0, NULL, 2500, false)) { PrintAndLogEx(WARNING, "command execution time out"); - return false; + return PM3_ETIMEOUT; } for (size_t j = 0; j < sizeof(got); j++) { @@ -868,7 +867,7 @@ static int CmdBitsamples(const char *Cmd) { } GraphTraceLen = cnt; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static int CmdBuffClear(const char *Cmd) { @@ -878,7 +877,7 @@ static int CmdBuffClear(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_BUFF_CLEAR, NULL, 0); ClearGraph(true); - return 0; + return PM3_SUCCESS; } static int CmdDec(const char *Cmd) { @@ -888,7 +887,7 @@ static int CmdDec(const char *Cmd) { GraphTraceLen /= 2; PrintAndLogEx(NORMAL, "decimated by 2"); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } /** * Undecimate - I'd call it 'interpolate', but we'll save that @@ -917,7 +916,7 @@ static int CmdUndec(const char *Cmd) { memcpy(GraphBuffer, swap, s_index * sizeof(int)); GraphTraceLen = s_index; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } //by marshmellow @@ -937,7 +936,7 @@ static int CmdGraphShiftZero(const char *Cmd) { GraphBuffer[i] = shiftedVal; } CmdNorm(""); - return 0; + return PM3_SUCCESS; } int AskEdgeDetect(const int *in, int *out, int len, int threshold) { @@ -949,7 +948,7 @@ int AskEdgeDetect(const int *in, int *out, int len, int threshold) { last = -127; out[i - 1] = last; } - return 0; + return PM3_SUCCESS; } //by marshmellow @@ -1044,11 +1043,11 @@ int FSKrawDemod(const char *Cmd, bool verbose) { } if (getSignalProperties()->isnoise) - return 0; + return PM3_ESOFT; uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; size_t BitLen = getFromGraphBuf(bits); - if (BitLen == 0) return 0; + if (BitLen == 0) return PM3_ESOFT; //get field clock lengths if (!fchigh || !fclow) { @@ -1079,11 +1078,11 @@ int FSKrawDemod(const char *Cmd, bool verbose) { PrintAndLogEx(NORMAL, "%s decoded bitstream:", GetFSKType(fchigh, fclow, invert)); printDemodBuff(); } - return 1; + return PM3_SUCCESS; } else { PrintAndLogEx(DEBUG, "no FSK data found"); } - return 0; + return PM3_SUCCESS; } //by marshmellow @@ -1110,26 +1109,26 @@ int PSKDemod(const char *Cmd, bool verbose) { } if (invert != 0 && invert != 1) { if (g_debugMode || verbose) PrintAndLogEx(WARNING, "Invalid argument: %s", Cmd); - return 0; + return PM3_EINVARG; } if (getSignalProperties()->isnoise) - return 0; + return PM3_ESOFT; uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; size_t bitlen = getFromGraphBuf(bits); if (bitlen == 0) - return 0; + return PM3_ESOFT; int startIdx = 0; int errCnt = pskRawDemod_ext(bits, &bitlen, &clk, &invert, &startIdx); if (errCnt > maxErr) { if (g_debugMode || verbose) PrintAndLogEx(DEBUG, "DEBUG: (PSKdemod) Too many errors found, clk: %d, invert: %d, numbits: %d, errCnt: %d", clk, invert, bitlen, errCnt); - return 0; + return PM3_ESOFT; } if (errCnt < 0 || bitlen < 16) { //throw away static - allow 1 and -1 (in case of threshold command first) if (g_debugMode || verbose) PrintAndLogEx(DEBUG, "DEBUG: (PSKdemod) no data found, clk: %d, invert: %d, numbits: %d, errCnt: %d", clk, invert, bitlen, errCnt); - return 0; + return PM3_ESOFT; } if (verbose || g_debugMode) { PrintAndLogEx(DEBUG, "DEBUG: (PSKdemod) Using Clock:%d, invert:%d, Bits Found:%d", clk, invert, bitlen); @@ -1140,15 +1139,15 @@ int PSKDemod(const char *Cmd, bool verbose) { //prime demod buffer for output setDemodBuff(bits, bitlen, 0); setClockGrid(clk, startIdx); - return 1; + return PM3_SUCCESS; } static int CmdIdteckDemod(const char *Cmd) { (void)Cmd; // Cmd is not used so far - if (!PSKDemod("", false)) { + if (PSKDemod("", false) != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "DEBUG: Error - Idteck PSKDemod failed"); - return 0; + return PM3_ESOFT; } size_t size = DemodBufferLen; @@ -1168,9 +1167,9 @@ static int CmdIdteckDemod(const char *Cmd) { PrintAndLogEx(DEBUG, "DEBUG: Error - Idteck: idx: %d", idx); // if didn't find preamble try again inverting - if (!PSKDemod("1", false)) { + if (PSKDemod("1", false) != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "DEBUG: Error - Idteck PSKDemod failed"); - return 0; + return PM3_ESOFT; } idx = detectIdteck(DemodBuffer, &size); if (idx < 0) { @@ -1186,7 +1185,7 @@ static int CmdIdteckDemod(const char *Cmd) { else PrintAndLogEx(DEBUG, "DEBUG: Error - Idteck: idx: %d", idx); - return 0; + return PM3_ESOFT; } } setDemodBuff(DemodBuffer, 64, idx); @@ -1201,7 +1200,7 @@ static int CmdIdteckDemod(const char *Cmd) { //output PrintAndLogEx(SUCCESS, "IDTECK Tag Found: Card ID %u , Raw: %08X%08X", id, raw1, raw2); - return 1; + return PM3_SUCCESS; } int demodIdteck(void) { @@ -1225,25 +1224,25 @@ int NRZrawDemod(const char *Cmd, bool verbose) { if (invert != 0 && invert != 1) { PrintAndLogEx(WARNING, "(NRZrawDemod) Invalid argument: %s", Cmd); - return 0; + return PM3_EINVARG; } if (getSignalProperties()->isnoise) - return 0; + return PM3_ESOFT; uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; size_t BitLen = getFromGraphBuf(bits); - if (BitLen == 0) return 0; + if (BitLen == 0) return PM3_ESOFT; errCnt = nrzRawDemod(bits, &BitLen, &clk, &invert, &clkStartIdx); if (errCnt > maxErr) { PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) Too many errors found, clk: %d, invert: %d, numbits: %d, errCnt: %d", clk, invert, BitLen, errCnt); - return 0; + return PM3_ESOFT; } if (errCnt < 0 || BitLen < 16) { //throw away static - allow 1 and -1 (in case of threshold command first) PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) no data found, clk: %d, invert: %d, numbits: %d, errCnt: %d", clk, invert, BitLen, errCnt); - return 0; + return PM3_ESOFT; } if (verbose || g_debugMode) PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) Tried NRZ Demod using Clock: %d - invert: %d - Bits Found: %d", clk, invert, BitLen); //prime demod buffer for output @@ -1257,7 +1256,7 @@ int NRZrawDemod(const char *Cmd, bool verbose) { // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(); } - return 1; + return PM3_SUCCESS; } static int CmdNRZrawDemod(const char *Cmd) { @@ -1277,14 +1276,14 @@ int CmdPSK1rawDemod(const char *Cmd) { int ans = PSKDemod(Cmd, true); //output - if (!ans) { + if (ans != PM3_SUCCESS) { if (g_debugMode) PrintAndLogEx(WARNING, "Error demoding: %d", ans); - return 0; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "PSK1 demoded bitstream:"); // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(); - return 1; + return PM3_SUCCESS; } // by marshmellow @@ -1294,15 +1293,15 @@ static int CmdPSK2rawDemod(const char *Cmd) { if (strlen(Cmd) > 16 || cmdp == 'h') return usage_data_rawdemod_p2(); int ans = PSKDemod(Cmd, true); - if (!ans) { + if (ans != PM3_SUCCESS) { if (g_debugMode) PrintAndLogEx(WARNING, "Error demoding: %d", ans); - return 0; + return PM3_ESOFT; } psk1TOpsk2(DemodBuffer, DemodBufferLen); PrintAndLogEx(NORMAL, "PSK2 demoded bitstream:"); // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(); - return 1; + return PM3_SUCCESS; } // by marshmellow - combines all raw demod functions into one menu command @@ -1358,13 +1357,13 @@ int CmdGrid(const char *Cmd) { PlotGridXdefault = PlotGridX; PlotGridYdefault = PlotGridY; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static int CmdSetGraphMarkers(const char *Cmd) { sscanf(Cmd, "%i %i", &CursorCPos, &CursorDPos); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static int CmdHexsamples(const char *Cmd) { @@ -1382,12 +1381,12 @@ static int CmdHexsamples(const char *Cmd) { if (offset + requested > sizeof(got)) { PrintAndLogEx(NORMAL, "Tried to read past end of buffer, + > %d", BIGBUF_SIZE); - return 0; + return PM3_EINVARG; } if (!GetFromDevice(BIG_BUF, got, requested, offset, NULL, 2500, false)) { PrintAndLogEx(WARNING, "command execution time out"); - return false; + return PM3_ESOFT; } uint8_t i = 0; @@ -1407,13 +1406,13 @@ static int CmdHexsamples(const char *Cmd) { string_buf[0] = '\0'; } } - return 0; + return PM3_SUCCESS; } static int CmdHide(const char *Cmd) { (void)Cmd; // Cmd is not used so far HideGraphWindow(); - return 0; + return PM3_SUCCESS; } //zero mean GraphBuffer @@ -1428,7 +1427,7 @@ int CmdHpf(const char *Cmd) { computeSignalProperties(bits, size); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static bool _headBit(BitstreamOut *stream) { @@ -1460,7 +1459,7 @@ int getSamples(uint32_t n, bool silent) { PacketResponseNG response; if (!GetFromDevice(BIG_BUF, got, n, 0, &response, 10000, true)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); - return 1; + return PM3_ETIMEOUT; } if (!silent) PrintAndLogEx(NORMAL, "Data fetched"); @@ -1503,7 +1502,7 @@ int getSamples(uint32_t n, bool silent) { setClockGrid(0, 0); DemodBufferLen = 0; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static int CmdSamples(const char *Cmd) { @@ -1538,7 +1537,7 @@ int CmdTuneSamples(const char *Cmd) { fflush(stdout); if (timeout > 7) { PrintAndLogEx(WARNING, "\nNo response from Proxmark3. Aborting..."); - return 1; + return PM3_ETIMEOUT; } } PrintAndLogEx(NORMAL, "\n"); @@ -1608,7 +1607,7 @@ int CmdTuneSamples(const char *Cmd) { PrintAndLogEx(FAILED, "\nNot showing LF tuning graph since all values is zero.\n\n"); } - return 0; + return PM3_SUCCESS; } static int CmdLoad(const char *Cmd) { @@ -1658,14 +1657,14 @@ int CmdLtrim(const char *Cmd) { uint32_t ds = strtoul(Cmd, NULL, 10); // sanitycheck - if (GraphTraceLen <= ds) return 1; + if (GraphTraceLen <= ds) return PM3_ESOFT; for (uint32_t i = ds; i < GraphTraceLen; ++i) GraphBuffer[i - ds] = GraphBuffer[i]; GraphTraceLen -= ds; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } // trim graph from the beginning @@ -1674,11 +1673,11 @@ static int CmdRtrim(const char *Cmd) { uint32_t ds = strtoul(Cmd, NULL, 10); // sanitycheck - if (GraphTraceLen <= ds) return 1; + if (GraphTraceLen <= ds) return PM3_ESOFT; GraphTraceLen = ds; RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } // trim graph (middle) piece @@ -1686,7 +1685,7 @@ static int CmdMtrim(const char *Cmd) { uint32_t start = 0, stop = 0; sscanf(Cmd, "%u %u", &start, &stop); - if (start > GraphTraceLen || stop > GraphTraceLen || start > stop) return 1; + if (start > GraphTraceLen || stop > GraphTraceLen || start > stop) return PM3_ESOFT; // leave start position sample start++; @@ -1695,7 +1694,7 @@ static int CmdMtrim(const char *Cmd) { for (uint32_t i = 0; i < GraphTraceLen; i++) GraphBuffer[i] = GraphBuffer[start + i]; - return 0; + return PM3_SUCCESS; } int CmdNorm(const char *Cmd) { @@ -1721,13 +1720,13 @@ int CmdNorm(const char *Cmd) { computeSignalProperties(bits, size); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } int CmdPlot(const char *Cmd) { (void)Cmd; // Cmd is not used so far ShowGraphWindow(); - return 0; + return PM3_SUCCESS; } static int CmdSave(const char *Cmd) { @@ -1748,10 +1747,9 @@ static int CmdSave(const char *Cmd) { for (uint32_t i = 0; i < GraphTraceLen; i++) fprintf(f, "%d\n", GraphBuffer[i]); - if (f) - fclose(f); + fclose(f); - PrintAndLogEx(SUCCESS, "saved to '%s'", Cmd); + PrintAndLogEx(SUCCESS, "saved to " _YELLOW_("'%s'"), Cmd); return PM3_SUCCESS; } @@ -1762,7 +1760,7 @@ static int CmdScale(const char *Cmd) { CursorScaleFactor = 1; } RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) { @@ -1791,7 +1789,7 @@ int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t // Align with first edited sample. out[0] = out[1]; - return 0; + return PM3_SUCCESS; } static int CmdDirectionalThreshold(const char *Cmd) { @@ -1809,7 +1807,7 @@ static int CmdDirectionalThreshold(const char *Cmd) { computeSignalProperties(bits, size); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static int CmdZerocrossings(const char *Cmd) { @@ -1841,7 +1839,7 @@ static int CmdZerocrossings(const char *Cmd) { computeSignalProperties(bits, size); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } /** @@ -1876,7 +1874,7 @@ static int Cmdbin2hex(const char *Cmd) { PrintAndLogEx(NORMAL, "%s", sprint_hex(arr, bytelen)); free(arr); - return 0; + return PM3_SUCCESS; } static int Cmdhex2bin(const char *Cmd) { @@ -1901,7 +1899,7 @@ static int Cmdhex2bin(const char *Cmd) { printf("%d", (x >> (3 - i)) & 1); } PrintAndLogEx(NORMAL, "\n"); - return 0; + return PM3_SUCCESS; } /* // example of FSK2 RF/50 Tones @@ -1998,7 +1996,7 @@ static int FSKToNRZ(int *data, size_t *dataLen, uint8_t clk, uint8_t LowToneFC, if (g_debugMode > 1) { PrintAndLogEx(NORMAL, "DEBUG FSKtoNRZ: no fsk clocks found"); } - return 0; + return PM3_ESOFT; } int LowTone[clk]; @@ -2041,7 +2039,7 @@ static int FSKToNRZ(int *data, size_t *dataLen, uint8_t clk, uint8_t LowToneFC, } // update dataLen to what we put back to the data sample buffer *dataLen -= (clk + LowToneFC); - return 0; + return PM3_SUCCESS; } static int CmdFSKToNRZ(const char *Cmd) { @@ -2094,7 +2092,7 @@ static int CmdDataIIR(const char *Cmd) { // set signal properties low/high/mean/amplitude and is_noise detection computeSignalProperties(bits, size); RepaintGraphWindow(); - return 0; + return PM3_SUCCESS; } static command_t CommandTable[] = { @@ -2141,7 +2139,7 @@ static command_t CommandTable[] = { static int CmdHelp(const char *Cmd) { (void)Cmd; // Cmd is not used so far CmdsHelp(CommandTable); - return 0; + return PM3_SUCCESS; } int CmdData(const char *Cmd) {