From 2dcf60f3df145625781982040ae9c80d30e40482 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Oct 2016 16:06:53 +0200 Subject: [PATCH 1/1] CHG: "hf mf hardnested" - less printing CHG: some filehandles = NULL. --- armsrc/hitagS.c | 3 +-- client/cmddata.c | 10 ++++++++-- client/cmdhfmf.c | 10 +++++++++- client/cmdhfmfhard.c | 29 +++++------------------------ client/cmdhfmfhard.h | 28 ++++++++++++++++++++++++++++ client/cmdhfmfu.c | 6 ++++-- client/cmdlft55xx.c | 11 ++++++++--- client/loclass/elite_crack.c | 15 +++++++++------ client/loclass/fileutils.c | 12 +++++++----- client/loclass/ikeys.c | 5 ++++- client/mifarehost.c | 20 ++++++++++++++++---- client/ui.c | 2 +- client/util.c | 5 ++++- common/lfdemod.c | 16 +++++++--------- common/lfdemod.h | 1 + 15 files changed, 112 insertions(+), 61 deletions(-) diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index 036b5ce6..45387c4f 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -1026,8 +1026,7 @@ void SimulateHitagSTag(bool tag_mem_supplied, byte_t* data) { // Set up simulator mode, frequency divisor which will drive the FPGA // and analog mux selection. FpgaDownloadAndGo(FPGA_BITSTREAM_LF); - FpgaWriteConfWord( - FPGA_MAJOR_MODE_LF_EDGE_DETECT | FPGA_LF_EDGE_DETECT_READER_FIELD); + FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT | FPGA_LF_EDGE_DETECT_READER_FIELD); FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz SetAdcMuxFor(GPIO_MUXSEL_LOPKD); RELAY_OFF(); diff --git a/client/cmddata.c b/client/cmddata.c index f263bbe9..169b0ace 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -2216,7 +2216,10 @@ int CmdLoad(const char *Cmd) GraphBuffer[GraphTraceLen] = atoi(line); GraphTraceLen++; } - fclose(f); + if (f) { + fclose(f); + f = NULL; + } PrintAndLog("loaded %d samples", GraphTraceLen); RepaintGraphWindow(); return 0; @@ -2290,7 +2293,10 @@ int CmdSave(const char *Cmd) for (i = 0; i < GraphTraceLen; i++) { fprintf(f, "%d\n", GraphBuffer[i]); } - fclose(f); + if (f) { + fclose(f); + f = NULL; + } PrintAndLog("saved to '%s'", Cmd); return 0; } diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index 6ddf845a..dc8f7898 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -475,6 +475,7 @@ int CmdHF14AMfDump(const char *Cmd) { if ( bytes_read == 0) { PrintAndLog("File reading error."); fclose(fin); + fin = NULL; return 2; } } @@ -485,12 +486,14 @@ int CmdHF14AMfDump(const char *Cmd) { if ( bytes_read == 0) { PrintAndLog("File reading error."); fclose(fin); + fin = NULL; return 2; } } fclose(fin); - + fin = NULL; + PrintAndLog("|-----------------------------------------|"); PrintAndLog("|------ Reading sector access bits...-----|"); PrintAndLog("|-----------------------------------------|"); @@ -596,6 +599,7 @@ int CmdHF14AMfDump(const char *Cmd) { uint16_t numblocks = FirstBlockOfSector(numSectors - 1) + NumBlocksPerSector(numSectors - 1); fwrite(carddata, 1, 16*numblocks, fout); fclose(fout); + fout = NULL; PrintAndLog("Dumped %d blocks (%d bytes) to file dumpdata.bin", numblocks, 16*numblocks); } @@ -644,6 +648,7 @@ int CmdHF14AMfRestore(const char *Cmd) { if ( bytes_read == 0) { PrintAndLog("File reading error (dumpkeys.bin)."); fclose(fkeys); + fkeys = NULL; return 2; } } @@ -653,6 +658,7 @@ int CmdHF14AMfRestore(const char *Cmd) { if ( bytes_read == 0) { PrintAndLog("File reading error (dumpkeys.bin)."); fclose(fkeys); + fkeys = NULL; return 2; } } @@ -673,6 +679,7 @@ int CmdHF14AMfRestore(const char *Cmd) { if ( bytes_read == 0) { PrintAndLog("File reading error (dumpdata.bin)."); fclose(fdump); + fdump = NULL; return 2; } @@ -708,6 +715,7 @@ int CmdHF14AMfRestore(const char *Cmd) { } fclose(fdump); + fdump = NULL; return 0; } diff --git a/client/cmdhfmfhard.c b/client/cmdhfmfhard.c index 0687e2bb..cb234e03 100644 --- a/client/cmdhfmfhard.c +++ b/client/cmdhfmfhard.c @@ -13,28 +13,7 @@ // Mifare Classic Cards" in Proceedings of the 22nd ACM SIGSAC Conference on // Computer and Communications Security, 2015 //----------------------------------------------------------------------------- - -#include -#include -#include -#include -#include -#include -#include "proxmark3.h" -#include "cmdmain.h" -#include "ui.h" -#include "util.h" -#include "nonce2key/crapto1.h" -#include "nonce2key/crypto1_bs.h" -#include "parity.h" -#ifdef __WIN32 - #include -#endif -// don't include for APPLE/mac which has malloc stuff elsewhere. -#ifndef __APPLE__ - #include -#endif -#include +#include "cmdhfmfhard.h" #define CONFIDENCE_THRESHOLD 0.95 // Collect nonces until we are certain enough that the following brute force is successfull #define GOOD_BYTES_REQUIRED 13 // default 28, could be smaller == faster @@ -639,6 +618,7 @@ static int read_nonce_file(void) if ( bytes_read == 0) { PrintAndLog("File reading error."); fclose(fnonces); + fnonces = NULL; return 1; } cuid = bytes_to_num(read_buf, 4); @@ -656,6 +636,7 @@ static int read_nonce_file(void) total_num_nonces += 2; } fclose(fnonces); + fnonces = NULL; PrintAndLog("Read %d nonces from file. cuid=%08x, Block=%d, Keytype=%c", total_num_nonces, cuid, trgBlockNo, trgKeyType==0?'A':'B'); return 0; } @@ -1339,8 +1320,8 @@ static bool generate_candidates(uint16_t sum_a0, uint16_t sum_a8) for (uint16_t p = 0; p <= 16; p += 2) { for (uint16_t q = 0; q <= 16; q += 2) { if (p*(16-q) + (16-p)*q == sum_a0) { - printf("Reducing Partial Statelists (p,q) = (%d,%d) with lengths %d, %d\n", - p, q, partial_statelist[p].len[ODD_STATE], partial_statelist[q].len[EVEN_STATE]); + // printf("Reducing Partial Statelists (p,q) = (%d,%d) with lengths %d, %d\n", + // p, q, partial_statelist[p].len[ODD_STATE], partial_statelist[q].len[EVEN_STATE]); for (uint16_t r = 0; r <= 16; r += 2) { for (uint16_t s = 0; s <= 16; s += 2) { if (r*(16-s) + (16-r)*s == sum_a8) { diff --git a/client/cmdhfmfhard.h b/client/cmdhfmfhard.h index d339ae3c..72cc850a 100644 --- a/client/cmdhfmfhard.h +++ b/client/cmdhfmfhard.h @@ -8,4 +8,32 @@ // hf mf hardnested command //----------------------------------------------------------------------------- +#ifndef CMDHFMFHARD_H__ +#define CMDHFMFHARD_H__ + +#include "sleep.h" +#include +#include +#include +#include +#include +#include +#include "proxmark3.h" +#include "cmdmain.h" +#include "ui.h" +#include "util.h" +#include "nonce2key/crapto1.h" +#include "nonce2key/crypto1_bs.h" +#include "parity.h" +#ifdef __WIN32 + #include +#endif +// don't include for APPLE/mac which has malloc stuff elsewhere. +#ifndef __APPLE__ + #include +#endif +#include + int mfnestedhard(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, uint8_t trgKeyType, uint8_t *trgkey, bool nonce_file_read, bool nonce_file_write, bool slow, int tests); + +#endif diff --git a/client/cmdhfmfu.c b/client/cmdhfmfu.c index 336fd64a..1b438980 100644 --- a/client/cmdhfmfu.c +++ b/client/cmdhfmfu.c @@ -1679,8 +1679,10 @@ int CmdHF14AMfUDump(const char *Cmd){ return 1; } fwrite( dump_file_data, 1, Pages*4 + DUMP_PREFIX_LENGTH, fout ); - fclose(fout); - + if (fout) { + fclose(fout); + fout = NULL; + } PrintAndLog("Dumped %d pages, wrote %d bytes to %s", Pages+(DUMP_PREFIX_LENGTH/4), Pages*4 + DUMP_PREFIX_LENGTH, filename); return 0; } diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index 28149eff..f28f84ce 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -1491,7 +1491,10 @@ int CmdT55xxBruteForce(const char *Cmd) { if (!p) { PrintAndLog("Cannot allocate memory for defaultKeys"); free(keyBlock); - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return 2; } keyBlock = p; @@ -1502,8 +1505,10 @@ int CmdT55xxBruteForce(const char *Cmd) { keycnt++; memset(buf, 0, sizeof(buf)); } - fclose(f); - + if (f) { + fclose(f); + f = NULL; + } if (keycnt == 0) { PrintAndLog("No keys found in file"); free(keyBlock); diff --git a/client/loclass/elite_crack.c b/client/loclass/elite_crack.c index a282ec50..2395a178 100644 --- a/client/loclass/elite_crack.c +++ b/client/loclass/elite_crack.c @@ -552,7 +552,6 @@ int bruteforceDump(uint8_t dump[], size_t dumpsize, uint16_t keytable[]) */ int bruteforceFile(const char *filename, uint16_t keytable[]) { - FILE *f = fopen(filename, "rb"); if(!f) { prnlog("Failed to read from file '%s'", filename); @@ -565,19 +564,23 @@ int bruteforceFile(const char *filename, uint16_t keytable[]) if (fsize < 0) { prnlog("Error, when getting filesize"); - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return 1; } uint8_t *dump = malloc(fsize); size_t bytes_read = fread(dump, 1, fsize, f); - fclose(f); - if (bytes_read < fsize) - { + if (f) { + fclose(f); + f = NULL; + } + if (bytes_read < fsize) { prnlog("Error, could only read %d bytes (should be %d)",bytes_read, fsize ); } - uint8_t res = bruteforceDump(dump,fsize,keytable); free(dump); return res; diff --git a/client/loclass/fileutils.c b/client/loclass/fileutils.c index e5e5c5b0..fd18b964 100644 --- a/client/loclass/fileutils.c +++ b/client/loclass/fileutils.c @@ -77,17 +77,19 @@ int saveFile(const char *preferredName, const char *suffix, const void* data, si /* We should have a valid filename now, e.g. dumpdata-3.bin */ /*Opening file for writing in binary mode*/ - FILE *fileHandle=fopen(fileName,"wb"); - if(!fileHandle) { + FILE *f = fopen(fileName,"wb"); + if (!f) { prnlog("Failed to write to file '%s'", fileName); free(fileName); return 1; } - fwrite(data, 1, datalen, fileHandle); - fclose(fileHandle); + fwrite(data, 1, datalen, f); + if (f) { + fclose(f); + f = NULL; + } prnlog("Saved data to '%s'", fileName); free(fileName); - return 0; } diff --git a/client/loclass/ikeys.c b/client/loclass/ikeys.c index 73da2ce6..0ba788d7 100644 --- a/client/loclass/ikeys.c +++ b/client/loclass/ikeys.c @@ -748,7 +748,10 @@ int readKeyFile(uint8_t key[8]) if ( bytes_read == 1) { retval = 0; } - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return retval; } diff --git a/client/mifarehost.c b/client/mifarehost.c index b41c3687..b7cd3b59 100644 --- a/client/mifarehost.c +++ b/client/mifarehost.c @@ -412,14 +412,20 @@ int loadTraceCard(uint8_t *tuid, uint8_t uidlen) { memset(buf, 0, sizeof(buf)); if (fgets(buf, sizeof(buf), f) == NULL) { PrintAndLog("No trace file found or reading error."); - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return 2; } if (strlen(buf) < 32){ if (feof(f)) break; PrintAndLog("File content error. Block data must include 32 HEX symbols"); - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return 2; } for (i = 0; i < 32; i += 2) @@ -429,7 +435,10 @@ int loadTraceCard(uint8_t *tuid, uint8_t uidlen) { blockNum++; } - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return 0; } @@ -447,7 +456,10 @@ int saveTraceCard(void) { fprintf(f,"\n"); } fflush(f); - fclose(f); + if (f) { + fclose(f); + f = NULL; + } return 0; } diff --git a/client/ui.c b/client/ui.c index cfaec6a5..6819f649 100644 --- a/client/ui.c +++ b/client/ui.c @@ -77,7 +77,7 @@ void PrintAndLog(char *fmt, ...) } void SetLogFilename(char *fn) { - logfilename = fn; + logfilename = fn; } void iceIIR_Butterworth(int *data, const size_t len){ diff --git a/client/util.c b/client/util.c index c5c7d7fe..a6ba8e81 100644 --- a/client/util.c +++ b/client/util.c @@ -63,7 +63,10 @@ void AddLogLine(char *file, char *extData, char *c) { fprintf(f, "%s", extData); fprintf(f, "%s\n", c); fflush(f); - fclose(f); + if (f) { + fclose(f); + f = NULL; + } } void AddLogHex(char *fileName, char *extData, const uint8_t * data, const size_t len){ diff --git a/common/lfdemod.c b/common/lfdemod.c index 8bbe5beb..5fec933f 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -25,15 +25,13 @@ void dummy(char *fmt, ...){} #define prnt dummy #endif -uint8_t justNoise(uint8_t *BitStream, size_t size) -{ - static const uint8_t THRESHOLD = 123; - //test samples are not just noise - uint8_t justNoise1 = 1; - for(size_t idx=0; idx < size && justNoise1 ;idx++){ - justNoise1 = BitStream[idx] < THRESHOLD; - } - return justNoise1; +//test samples are not just noise +uint8_t justNoise(uint8_t *bits, size_t size) { + #define THRESHOLD 123 + uint8_t val = 1; + for(size_t idx=0; idx < size && val ;idx++) + val = bits[idx] < THRESHOLD; + return val; } //by marshmellow diff --git a/common/lfdemod.h b/common/lfdemod.h index d540a2df..60e34732 100644 --- a/common/lfdemod.h +++ b/common/lfdemod.h @@ -17,6 +17,7 @@ #include // for bool //generic +uint8_t justNoise(uint8_t *bits, size_t size); size_t addParity(uint8_t *BitSource, uint8_t *dest, uint8_t sourceLen, uint8_t pLen, uint8_t pType); int askdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert, int maxErr, uint8_t amp, uint8_t askType); int BiphaseRawDecode(uint8_t * BitStream, size_t *size, int offset, int invert); -- 2.39.5