diff --git a/client/Makefile b/client/Makefile index bcd443219..2f7467fab 100644 --- a/client/Makefile +++ b/client/Makefile @@ -137,7 +137,6 @@ CMDSRCS = crapto1/crapto1.c \ loclass/cipher.c \ loclass/cipherutils.c \ loclass/ikeys.c \ - loclass/hash1_brute.c \ loclass/elite_crack.c \ loclass/fileutils.c \ whereami.c \ diff --git a/client/cmddata.c b/client/cmddata.c index c568315c9..d971d0fba 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -570,7 +570,7 @@ static int Cmdaskmandemod(const char *Cmd) { //by marshmellow //manchester decode //stricktly take 10 and 01 and convert to 0 and 1 -int Cmdmandecoderaw(const char *Cmd) { +static int Cmdmandecoderaw(const char *Cmd) { size_t size = 0; int high = 0, low = 0; int i = 0, errCnt = 0, invert = 0, maxErr = 20; @@ -628,7 +628,7 @@ int Cmdmandecoderaw(const char *Cmd) { * param invert invert output * param masxErr maximum tolerated errors */ -int CmdBiphaseDecodeRaw(const char *Cmd) { +static int CmdBiphaseDecodeRaw(const char *Cmd) { size_t size = 0; int offset = 0, invert = 0, maxErr = 20, errCnt = 0; char cmdp = tolower(param_getchar(Cmd, 0)); @@ -811,7 +811,7 @@ int AutoCorrelate(const int *in, int *out, size_t len, int window, bool SaveGrph return retval; } -int CmdAutoCorr(const char *Cmd) { +static int CmdAutoCorr(const char *Cmd) { uint32_t window = 4000; uint8_t cmdp = 0; @@ -846,7 +846,7 @@ int CmdAutoCorr(const char *Cmd) { return AutoCorrelate(GraphBuffer, GraphBuffer, GraphTraceLen, window, updateGrph, true); } -int CmdBitsamples(const char *Cmd) { +static int CmdBitsamples(const char *Cmd) { (void)Cmd; // Cmd is not used so far int cnt = 0; uint8_t got[12288]; @@ -869,7 +869,7 @@ int CmdBitsamples(const char *Cmd) { return 0; } -int CmdBuffClear(const char *Cmd) { +static int CmdBuffClear(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (cmdp == 'h') return usage_data_buffclear(); @@ -880,7 +880,7 @@ int CmdBuffClear(const char *Cmd) { return 0; } -int CmdDec(const char *Cmd) { +static int CmdDec(const char *Cmd) { (void)Cmd; // Cmd is not used so far for (int i = 0; i < (GraphTraceLen / 2); ++i) GraphBuffer[i] = GraphBuffer[i * 2]; @@ -896,7 +896,7 @@ int CmdDec(const char *Cmd) { * @param Cmd * @return */ -int CmdUndec(const char *Cmd) { +static int CmdUndec(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (cmdp == 'h') return usage_data_undecimate(); @@ -921,7 +921,7 @@ int CmdUndec(const char *Cmd) { //by marshmellow //shift graph zero up or down based on input + or - -int CmdGraphShiftZero(const char *Cmd) { +static int CmdGraphShiftZero(const char *Cmd) { int shift = 0, shiftedVal; //set options from parameters entered with the command sscanf(Cmd, "%i", &shift); @@ -1411,7 +1411,7 @@ static int CmdHexsamples(const char *Cmd) { return 0; } -int CmdHide(const char *Cmd) { +static int CmdHide(const char *Cmd) { (void)Cmd; // Cmd is not used so far HideGraphWindow(); return 0; @@ -1432,13 +1432,13 @@ int CmdHpf(const char *Cmd) { return 0; } -bool _headBit(BitstreamOut *stream) { +static bool _headBit(BitstreamOut *stream) { int bytepos = stream->position >> 3; // divide by 8 int bitpos = (stream->position++) & 7; // mask out 00000111 return (*(stream->buffer + bytepos) >> (7 - bitpos)) & 1; } -uint8_t getByte(uint8_t bits_per_sample, BitstreamOut *b) { +static uint8_t getByte(uint8_t bits_per_sample, BitstreamOut *b) { uint8_t val = 0; for (int i = 0 ; i < bits_per_sample; i++) val |= (_headBit(b) << (7 - i)); diff --git a/client/cmdhf14a.c b/client/cmdhf14a.c index 73de14f03..ab0c358ae 100644 --- a/client/cmdhf14a.c +++ b/client/cmdhf14a.c @@ -616,7 +616,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav return 0; } -int SelectCard14443_4(bool disconnect, iso14a_card_select_t *card) { +static int SelectCard14443_4(bool disconnect, iso14a_card_select_t *card) { UsbCommand resp; frameLength = 0; diff --git a/client/cmdhf14b.c b/client/cmdhf14b.c index 74cfe9a99..b1aa78e64 100644 --- a/client/cmdhf14b.c +++ b/client/cmdhf14b.c @@ -395,7 +395,7 @@ static void print_atqb_resp(uint8_t *data, uint8_t cid) { } // get SRx chip model (from UID) // from ST Microelectronics -char *get_ST_Chip_Model(uint8_t data) { +static char *get_ST_Chip_Model(uint8_t data) { static char model[20]; char *retStr = model; memset(model, 0, sizeof(model)); @@ -430,51 +430,52 @@ char *get_ST_Chip_Model(uint8_t data) { } // REMAKE: -int print_ST_Lock_info(uint8_t model) { +/* +static int print_ST_Lock_info(uint8_t model) { - // PrintAndLogEx(NORMAL, "Chip Write Protection Bits:"); - // // now interpret the data - // switch (model){ - // case 0x0: //fall through (SRIX4K special) - // case 0x3: //fall through (SRIx4K) - // case 0x7: // (SRI4K) - // //only need data[3] - // blk1 = 9; - // PrintAndLogEx(NORMAL, " raw: %s", sprint_bin(data+3, 1)); - // PrintAndLogEx(NORMAL, " 07/08:%slocked", (data[3] & 1) ? " not " : " " ); - // for (uint8_t i = 1; i<8; i++){ - // PrintAndLogEx(NORMAL, " %02u:%slocked", blk1, (data[3] & (1 << i)) ? " not " : " " ); - // blk1++; - // } - // break; - // case 0x4: //fall through (SRIX512) - // case 0x6: //fall through (SRI512) - // case 0xC: // (SRT512) - // //need data[2] and data[3] - // blk1 = 0; - // PrintAndLogEx(NORMAL, " raw: %s", sprint_bin(data+2, 2)); - // for (uint8_t b=2; b<4; b++){ - // for (uint8_t i=0; i<8; i++){ - // PrintAndLogEx(NORMAL, " %02u:%slocked", blk1, (data[b] & (1 << i)) ? " not " : " " ); - // blk1++; - // } - // } - // break; - // case 0x2: // (SR176) - // //need data[2] - // blk1 = 0; - // PrintAndLogEx(NORMAL, " raw: %s", sprint_bin(data+2, 1)); - // for (uint8_t i = 0; i<8; i++){ - // PrintAndLogEx(NORMAL, " %02u/%02u:%slocked", blk1, blk1+1, (data[2] & (1 << i)) ? " " : " not " ); - // blk1+=2; - // } - // break; - // default: - // return rawClose(); - // } + PrintAndLogEx(NORMAL, "Chip Write Protection Bits:"); + // now interpret the data + switch (model){ + case 0x0: //fall through (SRIX4K special) + case 0x3: //fall through (SRIx4K) + case 0x7: // (SRI4K) + //only need data[3] + blk1 = 9; + PrintAndLogEx(NORMAL, " raw: %s", sprint_bin(data+3, 1)); + PrintAndLogEx(NORMAL, " 07/08:%slocked", (data[3] & 1) ? " not " : " " ); + for (uint8_t i = 1; i<8; i++){ + PrintAndLogEx(NORMAL, " %02u:%slocked", blk1, (data[3] & (1 << i)) ? " not " : " " ); + blk1++; + } + break; + case 0x4: //fall through (SRIX512) + case 0x6: //fall through (SRI512) + case 0xC: // (SRT512) + //need data[2] and data[3] + blk1 = 0; + PrintAndLogEx(NORMAL, " raw: %s", sprint_bin(data+2, 2)); + for (uint8_t b=2; b<4; b++){ + for (uint8_t i=0; i<8; i++){ + PrintAndLogEx(NORMAL, " %02u:%slocked", blk1, (data[b] & (1 << i)) ? " not " : " " ); + blk1++; + } + } + break; + case 0x2: // (SR176) + //need data[2] + blk1 = 0; + PrintAndLogEx(NORMAL, " raw: %s", sprint_bin(data+2, 1)); + for (uint8_t i = 0; i<8; i++){ + PrintAndLogEx(NORMAL, " %02u/%02u:%slocked", blk1, blk1+1, (data[2] & (1 << i)) ? " " : " not " ); + blk1+=2; + } + break; + default: + return rawClose(); + } return 1; } - +*/ // print UID info from SRx chips (ST Microelectronics) static void print_st_general_info(uint8_t *data, uint8_t len) { //uid = first 8 bytes in data @@ -503,7 +504,7 @@ static void print_st_general_info(uint8_t *data, uint8_t len) { //a2 = ? (resp 02 [6a d3]) // 14b get and print Full Info (as much as we know) -bool HF14B_Std_Info(bool verbose) { +static bool HF14B_Std_Info(bool verbose) { bool isSuccess = false; @@ -547,7 +548,7 @@ bool HF14B_Std_Info(bool verbose) { } // SRx get and print full info (needs more info...) -bool HF14B_ST_Info(bool verbose) { +static bool HF14B_ST_Info(bool verbose) { UsbCommand c = {CMD_ISO_14443B_COMMAND, {ISO14B_CONNECT | ISO14B_SELECT_SR | ISO14B_DISCONNECT, 0, 0}, {{0}}}; clearCommandBuffer(); @@ -601,7 +602,7 @@ static int CmdHF14Binfo(const char *Cmd) { return infoHF14B(verbose); } -bool HF14B_ST_Reader(bool verbose) { +static bool HF14B_ST_Reader(bool verbose) { bool isSuccess = false; @@ -641,7 +642,7 @@ bool HF14B_ST_Reader(bool verbose) { return isSuccess; } -bool HF14B_Std_Reader(bool verbose) { +static bool HF14B_Std_Reader(bool verbose) { bool isSuccess = false; @@ -683,7 +684,7 @@ bool HF14B_Std_Reader(bool verbose) { } // test for other 14b type tags (mimic another reader - don't have tags to identify) -bool HF14B_Other_Reader() { +static bool HF14B_Other_Reader() { // uint8_t data[] = {0x00, 0x0b, 0x3f, 0x80}; // uint8_t datalen = 4; @@ -989,14 +990,13 @@ static int CmdHF14BDump(const char *Cmd) { out: return switch_off_field_14b(); } +/* -uint32_t srix4kEncode(uint32_t value) { - /* +static uint32_t srix4kEncode(uint32_t value) { // vv = value // pp = position // vv vv vv pp - 4 bytes : 00 1A 20 01 - */ + // 4 bytes : 00 1A 20 01 // only the lower crumbs. uint8_t block = (value & 0xFF); uint8_t i = 0; @@ -1046,7 +1046,8 @@ uint32_t srix4kEncode(uint32_t value) { PrintAndLogEx(NORMAL, "ICE encoded | %08X -> %08X", value, encvalue); return encvalue; } -uint32_t srix4kDecode(uint32_t value) { + +static uint32_t srix4kDecode(uint32_t value) { switch (value) { case 0xC04F42C5: return 0x003139; @@ -1057,13 +1058,14 @@ uint32_t srix4kDecode(uint32_t value) { } return 0; } -uint32_t srix4kDecodeCounter(uint32_t num) { + +static uint32_t srix4kDecodeCounter(uint32_t num) { uint32_t value = ~num; ++value; return value; } -uint32_t srix4kGetMagicbytes(uint64_t uid, uint32_t block6, uint32_t block18, uint32_t block19) { +static uint32_t srix4kGetMagicbytes(uint64_t uid, uint32_t block6, uint32_t block18, uint32_t block19) { #define MASK 0xFFFFFFFF; uint32_t uid32 = uid & MASK; uint32_t counter = srix4kDecodeCounter(block6); @@ -1075,7 +1077,8 @@ uint32_t srix4kGetMagicbytes(uint64_t uid, uint32_t block6, uint32_t block18, ui PrintAndLogEx(SUCCESS, "Magic bytes | %08X", result); return result; } -int srix4kValid(const char *Cmd) { + +static int srix4kValid(const char *Cmd) { (void)Cmd; // Cmd is not used so far uint64_t uid = 0xD00202501A4532F9; @@ -1093,7 +1096,7 @@ int srix4kValid(const char *Cmd) { PrintAndLogEx(SUCCESS, "BLOCK 21 | %08X -> %08X (no XOR)", block21, magic ^ block21); return 0; } - +*/ static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"dump", CmdHF14BDump, 0, "Read all memory pages of an ISO14443-B tag, save to file"}, diff --git a/client/cmdhf15.c b/client/cmdhf15.c index e28c43984..496ea3073 100644 --- a/client/cmdhf15.c +++ b/client/cmdhf15.c @@ -196,7 +196,7 @@ const productName uidmapping[] = { // fast method to just read the UID of a tag (collission detection not supported) // *buf should be large enough to fit the 64bit uid // returns 1 if suceeded -int getUID(uint8_t *buf) { +static int getUID(uint8_t *buf) { UsbCommand resp; UsbCommand c = {CMD_ISO_15693_COMMAND, {0, 1, 1}, {{0}}}; // len,speed,recv? diff --git a/client/cmdhffelica.c b/client/cmdhffelica.c index 525ee7c17..ae095116a 100644 --- a/client/cmdhffelica.c +++ b/client/cmdhffelica.c @@ -198,7 +198,7 @@ static void printSep() { PrintAndLogEx(NORMAL, "------------------------------------------------------------------------------------"); } -uint16_t PrintFliteBlock(uint16_t tracepos, uint8_t *trace, uint16_t tracelen) { +static uint16_t PrintFliteBlock(uint16_t tracepos, uint8_t *trace, uint16_t tracelen) { if (tracepos + 19 >= tracelen) return tracelen; diff --git a/client/cmdhffido.c b/client/cmdhffido.c index 47e3b6778..c2f02ef0e 100644 --- a/client/cmdhffido.c +++ b/client/cmdhffido.c @@ -124,7 +124,7 @@ static int CmdHFFidoInfo(const char *cmd) { return 0; } -json_t *OpenJson(int paramnum, char *fname, void *argtable[], bool *err) { +static json_t *OpenJson(int paramnum, char *fname, void *argtable[], bool *err) { json_t *root = NULL; json_error_t error; *err = false; @@ -615,13 +615,13 @@ static int CmdHFFidoAuthenticate(const char *cmd) { return 0; }; -void CheckSlash(char *fileName) { +static void CheckSlash(char *fileName) { if ((fileName[strlen(fileName) - 1] != '/') && (fileName[strlen(fileName) - 1] != '\\')) strcat(fileName, "/"); } -int GetExistsFileNameJson(const char *prefixDir, const char *reqestedFileName, char *fileName) { +static int GetExistsFileNameJson(const char *prefixDir, const char *reqestedFileName, char *fileName) { fileName[0] = 0x00; strcpy(fileName, get_my_executable_directory()); CheckSlash(fileName); diff --git a/client/cmdhficlass.c b/client/cmdhficlass.c index 49c74ab6b..4696ed4c6 100644 --- a/client/cmdhficlass.c +++ b/client/cmdhficlass.c @@ -262,14 +262,15 @@ static int usage_hf_iclass_permutekey(void) { return 0; } -int xorbits_8(uint8_t val) { +/* +static int xorbits_8(uint8_t val) { uint8_t res = val ^ (val >> 1); //1st pass res = res ^ (res >> 1); // 2nd pass res = res ^ (res >> 2); // 3rd pass res = res ^ (res >> 4); // 4th pass return res & 1; } - +*/ static int CmdHFiClassList(const char *Cmd) { (void)Cmd; // Cmd is not used so far //PrintAndLogEx(NORMAL, "Deprecated command, use 'hf list iclass' instead"); @@ -537,14 +538,15 @@ static int CmdHFiClassReader_Replay(const char *Cmd) { return 0; } -int iclassEmlSetMem(uint8_t *data, int blockNum, int blocksCount) { +/* +static int iclassEmlSetMem(uint8_t *data, int blockNum, int blocksCount) { UsbCommand c = {CMD_MIFARE_EML_MEMSET, {blockNum, blocksCount, 0}, {{0}}}; memcpy(c.d.asBytes, data, blocksCount * 16); clearCommandBuffer(); SendCommand(&c); return 0; } - +*/ static int CmdHFiClassELoad(const char *Cmd) { char ctmp = tolower(param_getchar(Cmd, 0)); @@ -757,7 +759,7 @@ static int CmdHFiClassEncryptBlk(const char *Cmd) { return 1; } -void Calc_wb_mac(uint8_t blockno, uint8_t *data, uint8_t *div_key, uint8_t MAC[4]) { +static void Calc_wb_mac(uint8_t blockno, uint8_t *data, uint8_t *div_key, uint8_t MAC[4]) { uint8_t wb[9]; wb[0] = blockno; memcpy(wb + 1, data, 8); diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index 542f623cc..67e56e8e2 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -410,7 +410,7 @@ static int usage_hf14_nack(void) { return 0; } -int GetHFMF14AUID(uint8_t *uid, int *uidlen) { +static int GetHFMF14AUID(uint8_t *uid, int *uidlen) { UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_CONNECT, 0, 0}, {{0}}}; clearCommandBuffer(); SendCommand(&c); @@ -428,7 +428,7 @@ int GetHFMF14AUID(uint8_t *uid, int *uidlen) { return 1; } -char *GenerateFilename(const char *prefix, const char *suffix) { +static char *GenerateFilename(const char *prefix, const char *suffix) { uint8_t uid[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int uidlen = 0; char *fptr = calloc(sizeof(char) * (strlen(prefix) + strlen(suffix)) + sizeof(uid) * 2 + 1, sizeof(uint8_t)); @@ -674,7 +674,7 @@ static int CmdHF14AMfRdSc(const char *Cmd) { return 0; } -uint16_t NumOfBlocks(char card) { +static uint16_t NumOfBlocks(char card) { switch (card) { case '0' : return MIFARE_MINI_MAXBLOCK; @@ -688,7 +688,8 @@ uint16_t NumOfBlocks(char card) { return MIFARE_1K_MAXBLOCK; } } -uint8_t NumOfSectors(char card) { + +static uint8_t NumOfSectors(char card) { switch (card) { case '0' : return MIFARE_MINI_MAXSECTOR; @@ -703,7 +704,7 @@ uint8_t NumOfSectors(char card) { } } -uint8_t FirstBlockOfSector(uint8_t sectorNo) { +static uint8_t FirstBlockOfSector(uint8_t sectorNo) { if (sectorNo < 32) { return sectorNo * 4; } else { @@ -711,7 +712,7 @@ uint8_t FirstBlockOfSector(uint8_t sectorNo) { } } -uint8_t NumBlocksPerSector(uint8_t sectorNo) { +static uint8_t NumBlocksPerSector(uint8_t sectorNo) { if (sectorNo < 32) { return 4; } else { @@ -1512,12 +1513,15 @@ static int CmdHF14AMfNestedHard(const char *Cmd) { return 0; } -int randInRange(int min, int max) { +/* +static int randInRange(int min, int max) { return min + (int)(rand() / (double)(RAND_MAX) * (max - min + 1)); } +*/ //Fisher–Yates shuffle -void shuffle(uint8_t *array, uint16_t len) { +/* +static void shuffle(uint8_t *array, uint16_t len) { uint8_t tmp[6]; uint16_t x; time_t t; @@ -1530,6 +1534,7 @@ void shuffle(uint8_t *array, uint16_t len) { memcpy(array + len, tmp, 6); } } +*/ static int CmdHF14AMfChk_fast(const char *Cmd) { diff --git a/client/cmdhfmfhard.c b/client/cmdhfmfhard.c index 05cc87748..faca31419 100644 --- a/client/cmdhfmfhard.c +++ b/client/cmdhfmfhard.c @@ -1091,7 +1091,7 @@ static int read_nonce_file(char *filename) { } -noncelistentry_t *SearchFor2ndByte(uint8_t b1, uint8_t b2) { +static noncelistentry_t *SearchFor2ndByte(uint8_t b1, uint8_t b2) { noncelistentry_t *p = nonces[b1].first; while (p != NULL) { if ((p->nonce_enc >> 16 & 0xff) == b2) { diff --git a/client/cmdhfmfu.c b/client/cmdhfmfu.c index 948b2e5f1..38b01bd71 100644 --- a/client/cmdhfmfu.c +++ b/client/cmdhfmfu.c @@ -260,7 +260,7 @@ const uint32_t c_D[] = { 0x5728B869, 0x30726D5A }; -void transform_D(uint8_t *ru) { +static void transform_D(uint8_t *ru) { //Transform uint8_t i; uint8_t p = 0; @@ -315,7 +315,7 @@ uint32_t ul_ev1_pwdgenA(uint8_t *uid) { } // Certain pwd generation algo nickname B. (very simple) -uint32_t ul_ev1_pwdgenB(uint8_t *uid) { +static uint32_t ul_ev1_pwdgenB(uint8_t *uid) { uint8_t pwd[] = {0x00, 0x00, 0x00, 0x00}; @@ -394,7 +394,7 @@ uint16_t ul_ev1_packgenD(uint8_t *uid) { return BSWAP_16(p & 0xFFFF); } -int ul_ev1_pwdgen_selftest() { +static int ul_ev1_pwdgen_selftest() { uint8_t uid1[] = {0x04, 0x11, 0x12, 0x11, 0x12, 0x11, 0x10}; uint32_t pwd1 = ul_ev1_pwdgenA(uid1); @@ -416,7 +416,7 @@ int ul_ev1_pwdgen_selftest() { //------------------------------------ // get version nxp product type -char *getProductTypeStr(uint8_t id) { +static char *getProductTypeStr(uint8_t id) { static char buf[20]; char *retStr = buf; @@ -440,7 +440,7 @@ char *getProductTypeStr(uint8_t id) { the LSBit is set to '0' if the size is exactly 2^n and set to '1' if the storage size is between 2^n and 2^(n+1). */ -char *getUlev1CardSizeStr(uint8_t fsize) { +static char *getUlev1CardSizeStr(uint8_t fsize) { static char buf[40]; char *retStr = buf; diff --git a/client/cmdhw.c b/client/cmdhw.c index e5d050eb0..d1ba4274e 100644 --- a/client/cmdhw.c +++ b/client/cmdhw.c @@ -307,7 +307,7 @@ static void lookupChipID(uint32_t iChipID, uint32_t mem_used) { PrintAndLogEx(NORMAL, " --= Nonvolatile Program Memory Type: %s", asBuff); } -int CmdDetectReader(const char *Cmd) { +static int CmdDetectReader(const char *Cmd) { UsbCommand c = {CMD_LISTEN_READER_FIELD, {0, 0, 0}, {{0}}}; // 'l' means LF - 125/134 kHz if (*Cmd == 'l') { @@ -324,7 +324,7 @@ int CmdDetectReader(const char *Cmd) { } // ## FPGA Control -int CmdFPGAOff(const char *Cmd) { +static int CmdFPGAOff(const char *Cmd) { (void)Cmd; // Cmd is not used so far UsbCommand c = {CMD_FPGA_MAJOR_MODE_OFF, {0, 0, 0}, {{0}}}; clearCommandBuffer(); @@ -333,7 +333,7 @@ int CmdFPGAOff(const char *Cmd) { } #ifdef WITH_LCD -int CmdLCD(const char *Cmd) { +static int CmdLCD(const char *Cmd) { int i, j; UsbCommand c = {CMD_LCD, {0, 0, 0}, {{0}}}; @@ -346,7 +346,7 @@ int CmdLCD(const char *Cmd) { return 0; } -int CmdLCDReset(const char *Cmd) { +static int CmdLCDReset(const char *Cmd) { UsbCommand c = {CMD_LCD_RESET, {strtol(Cmd, NULL, 0), 0, 0}, {{0}}}; clearCommandBuffer(); SendCommand(&c); @@ -354,14 +354,14 @@ int CmdLCDReset(const char *Cmd) { } #endif -int CmdReadmem(const char *Cmd) { +static int CmdReadmem(const char *Cmd) { UsbCommand c = {CMD_READ_MEM, {strtol(Cmd, NULL, 0), 0, 0}, {{0}}}; clearCommandBuffer(); SendCommand(&c); return 0; } -int CmdReset(const char *Cmd) { +static int CmdReset(const char *Cmd) { (void)Cmd; // Cmd is not used so far UsbCommand c = {CMD_HARDWARE_RESET, {0, 0, 0}, {{0}}}; clearCommandBuffer(); @@ -373,7 +373,7 @@ int CmdReset(const char *Cmd) { * Sets the divisor for LF frequency clock: lets the user choose any LF frequency below * 600kHz. */ -int CmdSetDivisor(const char *Cmd) { +static int CmdSetDivisor(const char *Cmd) { UsbCommand c = {CMD_SET_LF_DIVISOR, {strtol(Cmd, NULL, 0), 0, 0}, {{0}}}; if (c.arg[0] < 19 || c.arg[0] > 255) { @@ -387,7 +387,7 @@ int CmdSetDivisor(const char *Cmd) { return 0; } -int CmdSetMux(const char *Cmd) { +static int CmdSetMux(const char *Cmd) { if (strlen(Cmd) < 5) { PrintAndLogEx(NORMAL, "expected: lopkd | loraw | hipkd | hiraw"); @@ -405,16 +405,73 @@ int CmdSetMux(const char *Cmd) { return 0; } -int CmdTune(const char *Cmd) { +static int CmdTune(const char *Cmd) { return CmdTuneSamples(Cmd); } -int CmdVersion(const char *Cmd) { +static int CmdVersion(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + pm3_version(true); + return 0; +} - bool silent = (Cmd[0] == 's' || Cmd[0] == 'S'); - if (silent) - return 0; +static int CmdStatus(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + clearCommandBuffer(); + UsbCommand c = {CMD_STATUS, {0, 0, 0}, {{0}}}; + SendCommand(&c); + if (!WaitForResponseTimeout(CMD_ACK, &c, 1900)) + PrintAndLogEx(NORMAL, "Status command failed. USB Speed Test timed out"); + return 0; +} +static int CmdPing(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + clearCommandBuffer(); + UsbCommand resp; + UsbCommand c = {CMD_PING, {0, 0, 0}, {{0}}}; + SendCommand(&c); + if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) + PrintAndLogEx(NORMAL, "Ping successful"); + else + PrintAndLogEx(NORMAL, "Ping failed"); + return 0; +} + +static command_t CommandTable[] = { + {"help", CmdHelp, 1, "This help"}, + {"detectreader", CmdDetectReader, 0, "['l'|'h'] -- Detect external reader field (option 'l' or 'h' to limit to LF or HF)"}, + {"fpgaoff", CmdFPGAOff, 0, "Set FPGA off"}, +#ifdef WITH_LCD + {"lcd", CmdLCD, 0, " -- Send command/data to LCD"}, + {"lcdreset", CmdLCDReset, 0, "Hardware reset LCD"}, +#endif + {"readmem", CmdReadmem, 0, "[address] -- Read memory at decimal address from flash"}, + {"reset", CmdReset, 0, "Reset the Proxmark3"}, + {"setlfdivisor", CmdSetDivisor, 0, "<19 - 255> -- Drive LF antenna at 12Mhz/(divisor+1)"}, + {"setmux", CmdSetMux, 0, " -- Set the ADC mux to a specific value"}, + {"tune", CmdTune, 0, "Measure antenna tuning"}, + {"version", CmdVersion, 0, "Show version information about the connected Proxmark"}, + {"status", CmdStatus, 0, "Show runtime status information about the connected Proxmark"}, + {"ping", CmdPing, 0, "Test if the pm3 is responsive"}, + {NULL, NULL, 0, NULL} +}; + +static int CmdHelp(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + CmdsHelp(CommandTable); + return 0; +} + +int CmdHW(const char *Cmd) { + clearCommandBuffer(); + CmdsParse(CommandTable, Cmd); + return 0; +} + +void pm3_version(bool verbose) { + if (!verbose) + return; UsbCommand c = {CMD_VERSION, {0, 0, 0}, {{0}}}; UsbCommand resp; clearCommandBuffer(); @@ -449,59 +506,4 @@ int CmdVersion(const char *Cmd) { lookupChipID(resp.arg[0], resp.arg[1]); } PrintAndLogEx(NORMAL, "\n"); - return 0; -} - -int CmdStatus(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - clearCommandBuffer(); - UsbCommand c = {CMD_STATUS, {0, 0, 0}, {{0}}}; - SendCommand(&c); - if (!WaitForResponseTimeout(CMD_ACK, &c, 1900)) - PrintAndLogEx(NORMAL, "Status command failed. USB Speed Test timed out"); - return 0; -} - -int CmdPing(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - clearCommandBuffer(); - UsbCommand resp; - UsbCommand c = {CMD_PING, {0, 0, 0}, {{0}}}; - SendCommand(&c); - if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) - PrintAndLogEx(NORMAL, "Ping successful"); - else - PrintAndLogEx(NORMAL, "Ping failed"); - return 0; -} - -static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"detectreader", CmdDetectReader, 0, "['l'|'h'] -- Detect external reader field (option 'l' or 'h' to limit to LF or HF)"}, - {"fpgaoff", CmdFPGAOff, 0, "Set FPGA off"}, -#ifdef WITH_LCD - {"lcd", CmdLCD, 0, " -- Send command/data to LCD"}, - {"lcdreset", CmdLCDReset, 0, "Hardware reset LCD"}, -#endif - {"readmem", CmdReadmem, 0, "[address] -- Read memory at decimal address from flash"}, - {"reset", CmdReset, 0, "Reset the Proxmark3"}, - {"setlfdivisor", CmdSetDivisor, 0, "<19 - 255> -- Drive LF antenna at 12Mhz/(divisor+1)"}, - {"setmux", CmdSetMux, 0, " -- Set the ADC mux to a specific value"}, - {"tune", CmdTune, 0, "Measure antenna tuning"}, - {"version", CmdVersion, 0, "Show version information about the connected Proxmark"}, - {"status", CmdStatus, 0, "Show runtime status information about the connected Proxmark"}, - {"ping", CmdPing, 0, "Test if the pm3 is responsive"}, - {NULL, NULL, 0, NULL} -}; - -int CmdHW(const char *Cmd) { - clearCommandBuffer(); - CmdsParse(CommandTable, Cmd); - return 0; -} - -int CmdHelp(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - CmdsHelp(CommandTable); - return 0; } diff --git a/client/cmdhw.h b/client/cmdhw.h index 85ccea647..a1a3a4b8f 100644 --- a/client/cmdhw.h +++ b/client/cmdhw.h @@ -13,15 +13,6 @@ int CmdHW(const char *Cmd); -int CmdDetectReader(const char *Cmd); -int CmdFPGAOff(const char *Cmd); -int CmdLCD(const char *Cmd); -int CmdLCDReset(const char *Cmd); -int CmdReadmem(const char *Cmd); -int CmdReset(const char *Cmd); -int CmdSetDivisor(const char *Cmd); -int CmdSetMux(const char *Cmd); -int CmdTune(const char *Cmd); -int CmdVersion(const char *Cmd); -int CmdPing(const char *Cmd); +void pm3_version(bool verbose); + #endif diff --git a/client/cmdlf.c b/client/cmdlf.c index f0a75cd58..9dfa16640 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -821,7 +821,7 @@ int CmdVchDemod(const char *Cmd) { } //by marshmellow -bool CheckChipType(bool getDeviceData) { +static bool CheckChipType(bool getDeviceData) { bool retval = false; diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index 95ef6ca82..5d22cb8ad 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -654,7 +654,7 @@ static int CmdEM410xWrite(const char *Cmd) { } //**************** Start of EM4x50 Code ************************ -bool EM_EndParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uint8_t pType) { +static bool EM_EndParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uint8_t pType) { if (rows * cols > size) return false; uint8_t colP = 0; //assume last col is a parity and do not test @@ -667,7 +667,7 @@ bool EM_EndParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uint return true; } -bool EM_ByteParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uint8_t pType) { +static bool EM_ByteParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uint8_t pType) { if (rows * cols > size) return false; uint8_t rowP = 0; @@ -691,7 +691,7 @@ bool EM_ByteParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uin //c012345678| 0 // |- must be zero -bool EMwordparitytest(uint8_t *bits) { +static bool EMwordparitytest(uint8_t *bits) { // last row/col parity must be 0 if (bits[44] != 0) return false; @@ -720,7 +720,7 @@ bool EMwordparitytest(uint8_t *bits) { //////////////// 4050 / 4450 commands -uint32_t OutputEM4x50_Block(uint8_t *BitStream, size_t size, bool verbose, bool pTest) { +static uint32_t OutputEM4x50_Block(uint8_t *BitStream, size_t size, bool verbose, bool pTest) { if (size < 45) return 0; uint32_t code = bytebits_to_byte(BitStream, 8); @@ -976,7 +976,7 @@ static int CmdEM4x50Dump(const char *Cmd) { #define EM_PREAMBLE_LEN 6 // download samples from device and copy to Graphbuffer -bool downloadSamplesEM() { +static bool downloadSamplesEM() { // 8 bit preamble + 32 bit word response (max clock (128) * 40bits = 5120 samples) uint8_t got[6000]; @@ -997,7 +997,7 @@ bool downloadSamplesEM() { } // em_demod -bool doPreambleSearch(size_t *startIdx) { +static bool doPreambleSearch(size_t *startIdx) { // sanity check if (DemodBufferLen < EM_PREAMBLE_LEN) { @@ -1018,7 +1018,7 @@ bool doPreambleSearch(size_t *startIdx) { return true; } -bool detectFSK() { +static bool detectFSK() { // detect fsk clock if (!GetFskClock("", false)) { PrintAndLogEx(DEBUG, "DEBUG: Error - EM: FSK clock failed"); @@ -1033,7 +1033,7 @@ bool detectFSK() { return true; } // PSK clocks should be easy to detect ( but difficult to demod a non-repeating pattern... ) -bool detectPSK() { +static bool detectPSK() { int ans = GetPskClock("", false); if (ans <= 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - EM: PSK clock failed"); @@ -1057,7 +1057,7 @@ bool detectPSK() { return true; } // try manchester - NOTE: ST only applies to T55x7 tags. -bool detectASK_MAN() { +static bool detectASK_MAN() { bool stcheck = false; if (!ASKDemod_ext("0 0 0", false, false, 1, &stcheck)) { PrintAndLogEx(DEBUG, "DEBUG: Error - EM: ASK/Manchester Demod failed"); @@ -1065,7 +1065,8 @@ bool detectASK_MAN() { } return true; } -bool detectASK_BI() { + +static bool detectASK_BI() { int ans = ASKbiphaseDemod("0 0 1", false); if (!ans) { PrintAndLogEx(DEBUG, "DEBUG: Error - EM: ASK/biphase normal demod failed"); @@ -1080,7 +1081,7 @@ bool detectASK_BI() { } // param: idx - start index in demoded data. -bool setDemodBufferEM(uint32_t *word, size_t idx) { +static bool setDemodBufferEM(uint32_t *word, size_t idx) { //test for even parity bits. uint8_t parity[45] = {0}; @@ -1103,7 +1104,7 @@ bool setDemodBufferEM(uint32_t *word, size_t idx) { // FSK, PSK, ASK/MANCHESTER, ASK/BIPHASE, ASK/DIPHASE // should cover 90% of known used configs // the rest will need to be manually demoded for now... -bool demodEM4x05resp(uint32_t *word) { +static bool demodEM4x05resp(uint32_t *word) { size_t idx = 0; *word = 0; if (detectASK_MAN() && doPreambleSearch(&idx)) @@ -1127,7 +1128,7 @@ bool demodEM4x05resp(uint32_t *word) { } //////////////// 4205 / 4305 commands -int EM4x05ReadWord_ext(uint8_t addr, uint32_t pwd, bool usePwd, uint32_t *word) { +static int EM4x05ReadWord_ext(uint8_t addr, uint32_t pwd, bool usePwd, uint32_t *word) { UsbCommand c = {CMD_EM4X_READ_WORD, {addr, pwd, usePwd}, {{0}}}; clearCommandBuffer(); SendCommand(&c); @@ -1253,7 +1254,7 @@ static int CmdEM4x05Write(const char *Cmd) { return isOk; } -void printEM4x05config(uint32_t wordData) { +static void printEM4x05config(uint32_t wordData) { uint16_t datarate = (((wordData & 0x3F) + 1) * 2); uint8_t encoder = ((wordData >> 6) & 0xF); char enc[14]; @@ -1357,7 +1358,7 @@ void printEM4x05config(uint32_t wordData) { PrintAndLogEx(NORMAL, " Pigeon: %u | Pigeon Mode is %s\n", pigeon, pigeon ? "Enabled" : "Disabled"); } -void printEM4x05info(uint32_t block0, uint32_t serial) { +static void printEM4x05info(uint32_t block0, uint32_t serial) { uint8_t chipType = (block0 >> 1) & 0xF; uint8_t cap = (block0 >> 5) & 3; @@ -1405,7 +1406,7 @@ void printEM4x05info(uint32_t block0, uint32_t serial) { PrintAndLogEx(NORMAL, "\n Serial #: %08X\n", serial); } -void printEM4x05ProtectionBits(uint32_t word) { +static void printEM4x05ProtectionBits(uint32_t word) { for (uint8_t i = 0; i < 15; i++) { PrintAndLogEx(NORMAL, " Word: %02u | %s", i, (((1 << i) & word) || i < 2) ? "Is Write Locked" : "Is Not Write Locked"); if (i == 14) diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index a5a262cce..cbfd71dad 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -496,7 +496,7 @@ bool DecodeT55xxBlock(void) { return (bool) ans; } -bool DecodeT5555TraceBlock(void) { +static bool DecodeT5555TraceBlock(void) { DemodBufferLen = 0x00; // According to datasheet. Always: RF/64, not inverted, Manchester @@ -792,7 +792,7 @@ void printT55xxBlock(uint8_t blockNum) { PrintAndLogEx(NORMAL, " %02d | %08X | %s | %s", blockNum, blockData, sprint_bin(DemodBuffer + config.offset, 32), sprint_ascii(bytes, 4)); } -bool testModulation(uint8_t mode, uint8_t modread) { +static bool testModulation(uint8_t mode, uint8_t modread) { switch (mode) { case DEMOD_FSK: if (modread >= DEMOD_FSK1 && modread <= DEMOD_FSK2a) return true; @@ -824,7 +824,7 @@ bool testModulation(uint8_t mode, uint8_t modread) { return false; } -bool testQ5Modulation(uint8_t mode, uint8_t modread) { +static bool testQ5Modulation(uint8_t mode, uint8_t modread) { switch (mode) { case DEMOD_FSK: if (modread >= 4 && modread <= 5) return true; @@ -853,7 +853,7 @@ bool testQ5Modulation(uint8_t mode, uint8_t modread) { return false; } -int convertQ5bitRate(uint8_t bitRateRead) { +static int convertQ5bitRate(uint8_t bitRateRead) { uint8_t expected[] = {8, 16, 32, 40, 50, 64, 100, 128}; for (int i = 0; i < 8; i++) if (expected[i] == bitRateRead) @@ -862,7 +862,7 @@ int convertQ5bitRate(uint8_t bitRateRead) { return -1; } -bool testQ5(uint8_t mode, uint8_t *offset, int *fndBitRate, uint8_t clk) { +static bool testQ5(uint8_t mode, uint8_t *offset, int *fndBitRate, uint8_t clk) { if (DemodBufferLen < 64) return false; @@ -907,7 +907,7 @@ bool testQ5(uint8_t mode, uint8_t *offset, int *fndBitRate, uint8_t clk) { return false; } -bool testBitRate(uint8_t readRate, uint8_t clk) { +static bool testBitRate(uint8_t readRate, uint8_t clk) { uint8_t expected[] = {8, 16, 32, 40, 50, 64, 100, 128}; if (expected[readRate] == clk) return true; @@ -1746,14 +1746,13 @@ char *GetSelectedModulationStr(uint8_t id) { return buf; } -void t55x7_create_config_block(int tagtype) { +/* +static void t55x7_create_config_block(int tagtype) { - /* - T55X7_DEFAULT_CONFIG_BLOCK, T55X7_RAW_CONFIG_BLOCK - T55X7_EM_UNIQUE_CONFIG_BLOCK, T55X7_FDXB_CONFIG_BLOCK, - T55X7_FDXB_CONFIG_BLOCK, T55X7_HID_26_CONFIG_BLOCK, T55X7_INDALA_64_CONFIG_BLOCK, T55X7_INDALA_224_CONFIG_BLOCK - T55X7_GUARDPROXII_CONFIG_BLOCK, T55X7_VIKING_CONFIG_BLOCK, T55X7_NORALYS_CONFIG_BLOCK, T55X7_IOPROX_CONFIG_BLOCK - */ + // T55X7_DEFAULT_CONFIG_BLOCK, T55X7_RAW_CONFIG_BLOCK + // T55X7_EM_UNIQUE_CONFIG_BLOCK, T55X7_FDXB_CONFIG_BLOCK, + // T55X7_FDXB_CONFIG_BLOCK, T55X7_HID_26_CONFIG_BLOCK, T55X7_INDALA_64_CONFIG_BLOCK, T55X7_INDALA_224_CONFIG_BLOCK + // T55X7_GUARDPROXII_CONFIG_BLOCK, T55X7_VIKING_CONFIG_BLOCK, T55X7_NORALYS_CONFIG_BLOCK, T55X7_IOPROX_CONFIG_BLOCK static char buf[60]; char *retStr = buf; @@ -1772,6 +1771,7 @@ void t55x7_create_config_block(int tagtype) { } PrintAndLogEx(NORMAL, buf); } +*/ static int CmdResetRead(const char *Cmd) { (void)Cmd; // Cmd is not used so far @@ -1822,7 +1822,7 @@ static int CmdT55xxWipe(const char *Cmd) { return 0; } -bool IsCancelled(void) { +static bool IsCancelled(void) { if (ukbhit()) { int gc = getchar(); (void)gc; diff --git a/client/emv/test/cda_test.c b/client/emv/test/cda_test.c index 9627ba972..38f756073 100644 --- a/client/emv/test/cda_test.c +++ b/client/emv/test/cda_test.c @@ -26,6 +26,7 @@ #include #include #include +#include "cda_test.h" struct emv_pk c_mchip_05 = { .rid = { 0xa0, 0x00, 0x00, 0x00, 0x04, }, diff --git a/client/fido/cose.c b/client/fido/cose.c index 3201d6615..505d8e2d0 100644 --- a/client/fido/cose.c +++ b/client/fido/cose.c @@ -63,7 +63,7 @@ COSEValueTypeNameDesc_t COSECurvesDesc[] = { {7, "OKP", "Ed448", "Ed448 for use w/ EdDSA only"}, }; -COSEValueTypeNameDesc_t *GetCOSECurveElm(int id) { +static COSEValueTypeNameDesc_t *GetCOSECurveElm(int id) { for (int i = 0; i < ARRAYLEN(COSECurvesDesc); i++) if (COSECurvesDesc[i].Value == id) return &COSECurvesDesc[i]; @@ -135,7 +135,7 @@ COSEValueNameDesc_t COSEAlg[] = { {33, "AES-CCM-64-128-256", "AES-CCM mode 256-bit key, 128-bit tag, 7-byte nonce"} }; -COSEValueNameDesc_t *GetCOSEAlgElm(int id) { +static COSEValueNameDesc_t *GetCOSEAlgElm(int id) { for (int i = 0; i < ARRAYLEN(COSEAlg); i++) if (COSEAlg[i].Value == id) return &COSEAlg[i]; diff --git a/client/loclass/hash1_brute.c b/client/loclass/hash1_brute.c index fb08da756..29430a2a6 100644 --- a/client/loclass/hash1_brute.c +++ b/client/loclass/hash1_brute.c @@ -7,7 +7,7 @@ #include #include "elite_crack.h" -/* + static void calc_score(uint8_t *csn, uint8_t *k) { uint8_t score = 0 ; uint8_t i; @@ -82,4 +82,4 @@ static void brute_hash1(void) { } } } -*/ + diff --git a/client/loclass/ikeys.c b/client/loclass/ikeys.c index e3128e47b..0c0235b31 100644 --- a/client/loclass/ikeys.c +++ b/client/loclass/ikeys.c @@ -600,7 +600,7 @@ static uint64_t testCryptedCSN(uint64_t crypted_csn, uint64_t expected) { return retval; } -int testDES2(uint64_t csn, uint64_t expected) { +static int testDES2(uint64_t csn, uint64_t expected) { uint8_t result[8] = {0}; uint8_t input[8] = {0}; diff --git a/client/mifare/ndef.c b/client/mifare/ndef.c index 9caee1d88..3e0f46f71 100644 --- a/client/mifare/ndef.c +++ b/client/mifare/ndef.c @@ -80,7 +80,7 @@ static const char *URI_s[] = { "urn:nfc:" // 0x23 }; -uint16_t ndefTLVGetLength(uint8_t *data, size_t *indx) { +static uint16_t ndefTLVGetLength(uint8_t *data, size_t *indx) { uint16_t len = 0; if (data[0] == 0xff) { len = (data[1] << 8) + data[2]; @@ -93,7 +93,7 @@ uint16_t ndefTLVGetLength(uint8_t *data, size_t *indx) { return len; } -int ndefDecodeHeader(uint8_t *data, size_t datalen, NDEFHeader_t *header) { +static int ndefDecodeHeader(uint8_t *data, size_t datalen, NDEFHeader_t *header) { header->Type = NULL; header->Payload = NULL; header->ID = NULL; @@ -129,7 +129,7 @@ int ndefDecodeHeader(uint8_t *data, size_t datalen, NDEFHeader_t *header) { return 0; } -int ndefPrintHeader(NDEFHeader_t *header) { +static int ndefPrintHeader(NDEFHeader_t *header) { PrintAndLogEx(INFO, "Header:"); PrintAndLogEx(NORMAL, "\tMessage Begin: %s", STRBOOL(header->MessageBegin)); @@ -148,7 +148,7 @@ int ndefPrintHeader(NDEFHeader_t *header) { return 0; } -int ndefDecodeSig(uint8_t *sig, size_t siglen) { +static int ndefDecodeSig(uint8_t *sig, size_t siglen) { size_t indx = 0; PrintAndLogEx(NORMAL, "\tsignature version: 0x%02x", sig[0]); if (sig[0] != 0x01) { @@ -213,7 +213,7 @@ int ndefDecodeSig(uint8_t *sig, size_t siglen) { return 0; }; -int ndefDecodePayload(NDEFHeader_t *ndef) { +static int ndefDecodePayload(NDEFHeader_t *ndef) { switch (ndef->TypeNameFormat) { case tnfWellKnownRecord: @@ -244,7 +244,7 @@ int ndefDecodePayload(NDEFHeader_t *ndef) { return 0; } -int ndefRecordDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) { +static int ndefRecordDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) { NDEFHeader_t NDEFHeader = {0}; int res = ndefDecodeHeader(ndefRecord, ndefRecordLen, &NDEFHeader); if (res) @@ -270,7 +270,7 @@ int ndefRecordDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) { return 0; } -int ndefRecordsDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) { +static int ndefRecordsDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) { bool firstRec = true; size_t len = 0; diff --git a/client/proxmark3.c b/client/proxmark3.c index 2947075cb..2794099c6 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -71,9 +71,9 @@ main_loop(char *script_cmds_file, char *script_cmd, bool usb_present) { SetOffline(false); // cache Version information now: if (execCommand || script_cmds_file || stdinOnPipe) - CmdVersion("s"); + pm3_version(false); else - CmdVersion(""); + pm3_version(true); } else { SetOffline(true); } diff --git a/common/lfdemod.h b/common/lfdemod.h index 32421dea0..75f18f3c6 100644 --- a/common/lfdemod.h +++ b/common/lfdemod.h @@ -60,6 +60,7 @@ uint8_t detectFSKClk(uint8_t *bits, size_t size, uint8_t fcHigh, uint8_t fcLow, int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx); int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShift, uint8_t *curPhase, uint8_t *fc); int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clock); +int DetectStrongNRZClk(uint8_t *dest, size_t size, int peak, int low, bool *strong); bool DetectST(uint8_t *buffer, size_t *size, int *foundclock, size_t *ststart, size_t *stend); size_t fskdemod(uint8_t *dest, size_t size, uint8_t rfLen, uint8_t invert, uint8_t fchigh, uint8_t fclow, int *start_idx); //void getHiLo(uint8_t *bits, size_t size, int *high, int *low, uint8_t fuzzHi, uint8_t fuzzLo);