From 548d6429ed459549dfdc95806f06eaa86c11cde0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 27 May 2019 09:15:53 -0400 Subject: [PATCH] return codes --- client/cliparser/cliparser.h | 8 +- client/cmdhfmf.c | 162 ++++++++++++++++++----------------- 2 files changed, 86 insertions(+), 84 deletions(-) diff --git a/client/cliparser/cliparser.h b/client/cliparser/cliparser.h index 66a800f61..7da509757 100644 --- a/client/cliparser/cliparser.h +++ b/client/cliparser/cliparser.h @@ -28,10 +28,10 @@ #define arg_strx1(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 1, 250, (glossary))) #define arg_strx0(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 0, 250, (glossary))) -#define CLIExecWithReturn(cmd, atbl, ifempty) if (CLIParserParseString(cmd, atbl, arg_getsize(atbl), ifempty)){CLIParserFree();return 0;} -#define CLIGetHexBLessWithReturn(paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree();return 1;} -#define CLIGetHexWithReturn(paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree();return 1;} -#define CLIGetStrWithReturn(paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree();return 1;} +#define CLIExecWithReturn(cmd, atbl, ifempty) if (CLIParserParseString(cmd, atbl, arg_getsize(atbl), ifempty)){CLIParserFree();return PM3_ESOFT;} +#define CLIGetHexBLessWithReturn(paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree();return PM3_ESOFT;} +#define CLIGetHexWithReturn(paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree();return PM3_ESOFT;} +#define CLIGetStrWithReturn(paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree();return PM3_ESOFT;} int CLIParserInit(const char *vprogramName, const char *vprogramHint, const char *vprogramHelp); int CLIParserParseString(const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index 1f3d5a66e..874005e34 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -1781,7 +1781,7 @@ out: free(keyBlock); free(e_sector); PrintAndLogEx(NORMAL, ""); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfChk(const char *Cmd) { @@ -1808,7 +1808,7 @@ static int CmdHF14AMfChk(const char *Cmd) { int i, keycnt = 0; keyBlock = calloc(MIFARE_DEFAULTKEYS_SIZE, 6); - if (keyBlock == NULL) return 1; + if (keyBlock == NULL) return PM3_EMALLOC; for (int cnt = 0; cnt < MIFARE_DEFAULTKEYS_SIZE; cnt++) num_to_bytes(g_mifare_default_keys[cnt], 6, (uint8_t *)(keyBlock + cnt * 6)); @@ -1837,7 +1837,7 @@ static int CmdHF14AMfChk(const char *Cmd) { default: PrintAndLogEx(FAILED, "Key type must be A , B or ?"); free(keyBlock); - return 1; + return PM3_ESOFT; }; } @@ -1858,7 +1858,7 @@ static int CmdHF14AMfChk(const char *Cmd) { if (!p) { PrintAndLogEx(FAILED, "cannot allocate memory for Keys"); free(keyBlock); - return 2; + return PM3_EMALLOC; } keyBlock = p; } @@ -1903,7 +1903,7 @@ static int CmdHF14AMfChk(const char *Cmd) { PrintAndLogEx(FAILED, "Cannot allocate memory for defKeys"); free(keyBlock); fclose(f); - return 2; + return PM3_EMALLOC; } keyBlock = p; } @@ -1930,7 +1930,7 @@ static int CmdHF14AMfChk(const char *Cmd) { e_sector = calloc(SectorsCnt, sizeof(sector_t)); if (e_sector == NULL) { free(keyBlock); - return 1; + return PM3_EMALLOC; } // empty e_sector @@ -2048,13 +2048,12 @@ out: SendCommandNG(CMD_PING, NULL, 0); WaitForResponseTimeout(CMD_PING, NULL, 1000); - if (createDumpFile) { fptr = GenerateFilename("hf-mf-", "-key.bin"); if (fptr == NULL) { free(keyBlock); free(e_sector); - return 1; + return PM3_EFILE; } FILE *fkeys = fopen(fptr, "wb"); @@ -2062,7 +2061,7 @@ out: PrintAndLogEx(WARNING, "Could not create file " _YELLOW_("%s"), fptr); free(keyBlock); free(e_sector); - return 1; + return PM3_EFILE; } PrintAndLogEx(INFO, "Printing keys to binary file " _YELLOW_("%s")"...", fptr); @@ -2081,7 +2080,7 @@ out: free(keyBlock); free(e_sector); PrintAndLogEx(NORMAL, ""); - return 0; + return PM3_SUCCESS; } sector_t *k_sector = NULL; @@ -2279,7 +2278,7 @@ static int CmdHF14AMfSim(const char *Cmd) { } showSectorTable(); } - return 0; + return PM3_SUCCESS; } /* static int CmdHF14AMfSniff(const char *Cmd) { @@ -2439,7 +2438,7 @@ static int CmdHF14AMfSniff(const char *Cmd) { } // while (true) free(buf); - return 0; + return PM3_SUCCESS; } */ int CmdHF14AMfDbg(const char *Cmd) { @@ -2451,7 +2450,7 @@ int CmdHF14AMfDbg(const char *Cmd) { if (dbgMode > 4) return usage_hf14_dbg(); SendCommandNG(CMD_MIFARE_SET_DBGMODE, &dbgMode, 1); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfKeyBrute(const char *Cmd) { @@ -2482,7 +2481,7 @@ static int CmdHF14AMfKeyBrute(const char *Cmd) { t1 = msclock() - t1; PrintAndLogEx(SUCCESS, "\ntime in keybrute: %.0f seconds\n", (float)t1 / 1000.0); - return 0; + return PM3_SUCCESS; } void printKeyTable(uint8_t sectorscnt, sector_t *e_sector) { @@ -2602,14 +2601,14 @@ int CmdHF14AMfELoad(const char *Cmd) { int res = loadFileEML(filename, data, &datalen); if (res) { free(data); - return 1; + return PM3_EFILE; } // 64 or 256 blocks. if ((datalen % blockWidth) != 0) { PrintAndLogEx(FAILED, "File content error. Size doesn't match blockwidth "); free(data); - return 2; + return PM3_ESOFT; } // convert old mfu format to new @@ -2636,7 +2635,7 @@ int CmdHF14AMfELoad(const char *Cmd) { if (mfEmlSetMem_xt(data + counter, blockNum, 1, blockWidth)) { PrintAndLogEx(FAILED, "Cant set emul block: %3d", blockNum); free(data); - return 3; + return PM3_ESOFT; } printf("."); fflush(stdout); @@ -2652,18 +2651,18 @@ int CmdHF14AMfELoad(const char *Cmd) { if ((blockNum != numBlocks)) { PrintAndLogEx(FAILED, "Warning, Ultralight/Ntag file content, Loaded %d blocks into emulator memory", blockNum); free(data); - return 0; + return PM3_SUCCESS; } } else { if ((blockNum != numBlocks)) { PrintAndLogEx(FAILED, "Error, file content, Only loaded %d blocks, must be %d blocks into emulator memory", blockNum, numBlocks); free(data); - return 4; + return PM3_SUCCESS; } } PrintAndLogEx(SUCCESS, "Loaded %d blocks from file: " _YELLOW_("%s"), blockNum, filename); free(data); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfESave(const char *Cmd) { @@ -2690,7 +2689,7 @@ static int CmdHF14AMfESave(const char *Cmd) { dump = calloc(bytes, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); - return 1; + return PM3_EMALLOC; } memset(dump, 0, bytes); @@ -2698,7 +2697,7 @@ static int CmdHF14AMfESave(const char *Cmd) { if (!GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 2500, false)) { PrintAndLogEx(WARNING, "Fail, transfer from device time-out"); free(dump); - return 2; + return PM3_ETIMEOUT; } len = param_getstr(Cmd, nameParamNo, filename, sizeof(filename)); @@ -2714,7 +2713,7 @@ static int CmdHF14AMfESave(const char *Cmd) { saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); saveFileJSON(filename, jsfCardMemory, dump, bytes); free(dump); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfECFill(const char *Cmd) { @@ -2727,7 +2726,7 @@ static int CmdHF14AMfECFill(const char *Cmd) { if (c != 'a' && c != 'b') { PrintAndLogEx(WARNING, "Key type must be A or B"); - return 1; + return PM3_ESOFT; } if (c != 'a') keyType = 1; @@ -2743,7 +2742,7 @@ static int CmdHF14AMfECFill(const char *Cmd) { PrintAndLogEx(NORMAL, "--params: numSectors: %d, keyType: %c\n", numSectors, (keyType == 0) ? 'A' : 'B'); clearCommandBuffer(); SendCommandMIX(CMD_MIFARE_EML_CARDLOAD, numSectors, keyType, 0, NULL, 0); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfEKeyPrn(const char *Cmd) { @@ -2767,7 +2766,7 @@ static int CmdHF14AMfEKeyPrn(const char *Cmd) { PrintAndLogEx(NORMAL, "|sec|key A |key B |"); PrintAndLogEx(NORMAL, "|---|----------------|----------------|"); for (i = 0; i < numSectors; i++) { - if (mfEmlGetMem(data, FirstBlockOfSector(i) + NumBlocksPerSector(i) - 1, 1)) { + if (mfEmlGetMem(data, FirstBlockOfSector(i) + NumBlocksPerSector(i) - 1, 1) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "error get block %d", FirstBlockOfSector(i) + NumBlocksPerSector(i) - 1); break; } @@ -2776,7 +2775,7 @@ static int CmdHF14AMfEKeyPrn(const char *Cmd) { PrintAndLogEx(NORMAL, "|%03d| %012" PRIx64 " | %012" PRIx64 " |", i, keyA, keyB); } PrintAndLogEx(NORMAL, "|---|----------------|----------------|"); - return 0; + return PM3_SUCCESS; } // CHINESE MAGIC COMMANDS @@ -2808,12 +2807,12 @@ static int CmdHF14AMfCSetUID(const char *Cmd) { if (param_getchar(Cmd, argi)) { if (param_gethex(Cmd, argi, atqa, 4)) { PrintAndLogEx(WARNING, "ATQA must include 4 HEX symbols"); - return 1; + return PM3_ESOFT; } argi++; if (!param_getchar(Cmd, argi) || param_gethex(Cmd, argi, sak, 2)) { PrintAndLogEx(WARNING, "SAK must include 2 HEX symbols"); - return 1; + return PM3_ESOFT; } argi++; } else @@ -2832,12 +2831,12 @@ static int CmdHF14AMfCSetUID(const char *Cmd) { res = mfCSetUID(uid, (atqaPresent) ? atqa : NULL, (atqaPresent) ? sak : NULL, oldUid, wipeCard); if (res) { PrintAndLogEx(WARNING, "Can't set UID. error=%d", res); - return 1; + return PM3_ESOFT; } PrintAndLogEx(SUCCESS, "old UID:%s", sprint_hex(oldUid, 4)); PrintAndLogEx(SUCCESS, "new UID:%s", sprint_hex(uid, 4)); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfCSetBlk(const char *Cmd) { @@ -2862,9 +2861,9 @@ static int CmdHF14AMfCSetBlk(const char *Cmd) { res = mfCSetBlock(blockNo, block, NULL, params); if (res) { PrintAndLogEx(WARNING, "Can't write block. error=%d", res); - return 1; + return PM3_ESOFT; } - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfCLoad(const char *Cmd) { @@ -2900,17 +2899,22 @@ static int CmdHF14AMfCLoad(const char *Cmd) { if (mfCSetBlock(blockNum, buf8, NULL, flags)) { PrintAndLogEx(WARNING, "Cant set magic card block: %d", blockNum); - return 3; + return PM3_ESOFT; } printf("."); fflush(stdout); } PrintAndLogEx(NORMAL, "\n"); - return 0; + return PM3_SUCCESS; } size_t maxdatalen = 4096; uint8_t *data = calloc(maxdatalen, sizeof(uint8_t)); + if (!data) { + PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); + return PM3_EMALLOC; + } + size_t datalen = 0; int res = 0; if (fillFromBin) { @@ -2926,17 +2930,14 @@ static int CmdHF14AMfCLoad(const char *Cmd) { if (res) { if (data) free(data); - return 1; + return PM3_EFILE; } -// PrintAndLogEx(INFO, "DATA | %s", sprint_hex(data+1000, 24) ); - - // 64 or 256blocks. if (datalen != 1024 && datalen != 4096) { PrintAndLogEx(WARNING, "File content error. "); free(data); - return 2; + return PM3_EFILE; } PrintAndLogEx(INFO, "Copying to magic card"); @@ -2956,7 +2957,7 @@ static int CmdHF14AMfCLoad(const char *Cmd) { if (mfCSetBlock(blockNum, data + (16 * blockNum), NULL, flags)) { PrintAndLogEx(WARNING, "Can't set magic card block: %d", blockNum); free(data); - return 3; + return PM3_ESOFT; } datalen -= 16; @@ -2974,19 +2975,18 @@ static int CmdHF14AMfCLoad(const char *Cmd) { if (blockNum != 16 * 4 && blockNum != 32 * 4 + 8 * 16) { PrintAndLogEx(WARNING, "File content error. There must be 64 blocks"); free(data); - return 4; + return PM3_EFILE; } PrintAndLogEx(SUCCESS, "Card loaded %d blocks from file", blockNum); free(data); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfCGetBlk(const char *Cmd) { uint8_t data[16] = {0}; uint8_t blockNo = 0; int res; - memset(data, 0x00, sizeof(data)); char ctmp = tolower(param_getchar(Cmd, 0)); if (strlen(Cmd) < 1 || ctmp == 'h') return usage_hf14_cgetblk(); @@ -2998,7 +2998,7 @@ static int CmdHF14AMfCGetBlk(const char *Cmd) { res = mfCGetBlock(blockNo, data, MAGIC_SINGLE); if (res) { PrintAndLogEx(WARNING, "Can't read block. error=%d", res); - return 1; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "data: %s", sprint_hex(data, sizeof(data))); @@ -3016,7 +3016,7 @@ static int CmdHF14AMfCGetBlk(const char *Cmd) { PrintAndLogEx(NORMAL, "UserData: %s", sprint_hex_inrow(&data[9], 1)); } - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfCGetSc(const char *Cmd) { @@ -3030,7 +3030,7 @@ static int CmdHF14AMfCGetSc(const char *Cmd) { sector = param_get8(Cmd, 0); if (sector > 39) { PrintAndLogEx(WARNING, "Sector number must be less then 40"); - return 1; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "\n # | data | Sector | %02d/ 0x%02X ", sector, sector); @@ -3051,11 +3051,11 @@ static int CmdHF14AMfCGetSc(const char *Cmd) { res = mfCGetBlock(start + i, data, flags); if (res) { PrintAndLogEx(WARNING, "Can't read block. %d error=%d", start + i, res); - return 1; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "%3d | %s", start + i, sprint_hex(data, 16)); } - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfCSave(const char *Cmd) { @@ -3119,9 +3119,8 @@ static int CmdHF14AMfCSave(const char *Cmd) { dump = calloc(bytes, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); - return 1; + return PM3_EMALLOC; } - memset(dump, 0, bytes); flags = MAGIC_INIT + MAGIC_WUPC; for (i = 0; i < numblocks; i++) { @@ -3131,7 +3130,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { if (mfCGetBlock(i, dump + (i * MFBLOCK_SIZE), flags)) { PrintAndLogEx(WARNING, "Cant get block: %d", i); free(dump); - return 2; + return PM3_ESOFT; } } @@ -3163,7 +3162,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); saveFileJSON(filename, jsfCardMemory, dump, bytes); free(dump); - return 0; + return PM3_SUCCESS; } //needs nt, ar, at, Data to decrypt @@ -3179,7 +3178,7 @@ static int CmdHf14AMfDecryptBytes(const char *Cmd) { int len = param_getlength(Cmd, 3); if (len & 1) { PrintAndLogEx(WARNING, "Uneven hex string length. LEN=%d", len); - return 1; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "nt\t%08X", nt); @@ -3187,11 +3186,16 @@ static int CmdHf14AMfDecryptBytes(const char *Cmd) { PrintAndLogEx(NORMAL, "at enc\t%08X", at_enc); uint8_t *data = calloc(len, sizeof(uint8_t)); + if (!data) { + PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); + return PM3_EMALLOC; + } + param_gethex_ex(Cmd, 3, data, &len); len >>= 1; tryDecryptWord(nt, ar_enc, at_enc, data, len); free(data); - return 0; + return PM3_SUCCESS; } static int CmdHf14AMfSetMod(const char *Cmd) { @@ -3210,7 +3214,7 @@ static int CmdHf14AMfSetMod(const char *Cmd) { PrintAndLogEx(NORMAL, "Usage: hf mf setmod <0|1> "); PrintAndLogEx(NORMAL, " 0 = normal modulation"); PrintAndLogEx(NORMAL, " 1 = strong modulation (default)"); - return 1; + return PM3_ESOFT; } uint8_t data[7]; @@ -3237,16 +3241,15 @@ static int CmdHf14AMfSetMod(const char *Cmd) { // Mifare NACK bug detection static int CmdHf14AMfNack(const char *Cmd) { - bool verbose = false; char ctmp = tolower(param_getchar(Cmd, 0)); if (ctmp == 'h') return usage_hf14_nack(); - if (ctmp == 'v') verbose = true; + bool verbose = (ctmp == 'v'); if (verbose) PrintAndLogEx(INFO, "Started testing card for NACK bug. Press key to abort"); detect_classic_nackbug(verbose); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfice(const char *Cmd) { @@ -3284,7 +3287,7 @@ static int CmdHF14AMfice(const char *Cmd) { default: PrintAndLogEx(WARNING, "Unknown parameter '%c'\n", ctmp); usage_hf14_ice(); - return 1; + return PM3_ESOFT; } cmdp++; } @@ -3292,15 +3295,15 @@ static int CmdHF14AMfice(const char *Cmd) { if (filename[0] == '\0') { fptr = GenerateFilename("hf-mf-", "-nonces.bin"); if (fptr == NULL) - return 1; + return PM3_EFILE; strcpy(filename, fptr); } - PrintAndLogEx(NORMAL, "Collecting %u nonces \n", limit); + PrintAndLogEx(NORMAL, "Collecting "_YELLOW_("%u")"nonces \n", limit); if ((fnonces = fopen(filename, "wb")) == NULL) { PrintAndLogEx(WARNING, "Could not create file " _YELLOW_("%s"), filename); - return 3; + return PM3_EFILE; } clearCommandBuffer(); @@ -3352,7 +3355,7 @@ out: clearCommandBuffer(); SendCommandMIX(CMD_MIFARE_ACQUIRE_NONCES, blockNo + keyType * 0x100, trgBlockNo + trgKeyType * 0x100, 4, NULL, 0); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfAuth4(const char *Cmd) { @@ -3380,12 +3383,12 @@ static int CmdHF14AMfAuth4(const char *Cmd) { if (keynlen != 2) { PrintAndLogEx(ERR, " must be 2 bytes long instead of: %d", keynlen); - return 1; + return PM3_ESOFT; } if (keylen != 16) { PrintAndLogEx(ERR, " must be 16 bytes long instead of: %d", keylen); - return 1; + return PM3_ESOFT; } return MifareAuth4(NULL, keyn, key, true, false, true); @@ -3427,7 +3430,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { uint8_t sector10[16 * 4] = {0}; if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector0)) { PrintAndLogEx(ERR, "read sector 0 error. card don't have MAD or don't have MAD on default keys."); - return 2; + return PM3_ESOFT; } if (verbose) { @@ -3441,7 +3444,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { if (haveMAD2) { if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { PrintAndLogEx(ERR, "read sector 0x10 error. card don't have MAD or don't have MAD on default keys."); - return 2; + return PM3_ESOFT; } MAD2DecodeAndPrint(sector10, verbose); @@ -3455,7 +3458,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { size_t madlen = 0; if (MADDecode(sector0, sector10, mad, &madlen)) { PrintAndLogEx(ERR, "can't decode mad."); - return 10; + return PM3_ESOFT; } uint8_t akey[6] = {0}; @@ -3470,7 +3473,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(ERR, "read sector %d error.", i + 1); - return 2; + return PM3_ESOFT; } for (int j = 0; j < (verbose ? 4 : 3); j ++) @@ -3479,7 +3482,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { } } - return 0; + return PM3_SUCCESS; } static int CmdHFMFNDEF(const char *Cmd) { @@ -3530,7 +3533,7 @@ static int CmdHFMFNDEF(const char *Cmd) { if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector0)) { PrintAndLogEx(ERR, "read sector 0 error. card don't have MAD or don't have MAD on default keys."); - return 2; + return PM3_ESOFT; } bool haveMAD2 = false; @@ -3543,7 +3546,7 @@ static int CmdHFMFNDEF(const char *Cmd) { if (haveMAD2) { if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { PrintAndLogEx(ERR, "read sector 0x10 error. card don't have MAD or don't have MAD on default keys."); - return 2; + return PM3_ESOFT; } } @@ -3551,7 +3554,7 @@ static int CmdHFMFNDEF(const char *Cmd) { size_t madlen = 0; if (MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen)) { PrintAndLogEx(ERR, "can't decode mad."); - return 10; + return PM3_ESOFT; } printf("data reading:"); @@ -3560,7 +3563,7 @@ static int CmdHFMFNDEF(const char *Cmd) { uint8_t vsector[16 * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector)) { PrintAndLogEx(ERR, "read sector %d error.", i + 1); - return 2; + return PM3_ESOFT; } memcpy(&data[datalen], vsector, 16 * 3); @@ -3573,7 +3576,7 @@ static int CmdHFMFNDEF(const char *Cmd) { if (!datalen) { PrintAndLogEx(ERR, "no NDEF data."); - return 11; + return PM3_SUCCESS; } if (verbose2) { @@ -3583,13 +3586,12 @@ static int CmdHFMFNDEF(const char *Cmd) { NDEFDecodeAndPrint(data, datalen, verbose); - return 0; + return PM3_SUCCESS; } static int CmdHF14AMfList(const char *Cmd) { (void)Cmd; // Cmd is not used so far - CmdTraceList("mf"); - return 0; + return CmdTraceList("mf"); } static command_t CommandTable[] = { @@ -3640,7 +3642,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 CmdHFMF(const char *Cmd) {