CHG: "hf mf hardnested" - less printing
CHG: some filehandles = NULL.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,28 +13,7 @@
|
||||
// Mifare Classic Cards" in Proceedings of the 22nd ACM SIGSAC Conference on
|
||||
// Computer and Communications Security, 2015
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <pthread.h>
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
#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 <windows.h>
|
||||
#endif
|
||||
// don't include for APPLE/mac which has malloc stuff elsewhere.
|
||||
#ifndef __APPLE__
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#include <assert.h>
|
||||
#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) {
|
||||
|
||||
@@ -8,4 +8,32 @@
|
||||
// hf mf hardnested command
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef CMDHFMFHARD_H__
|
||||
#define CMDHFMFHARD_H__
|
||||
|
||||
#include "sleep.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <pthread.h>
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
#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 <windows.h>
|
||||
#endif
|
||||
// don't include for APPLE/mac which has malloc stuff elsewhere.
|
||||
#ifndef __APPLE__
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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){
|
||||
|
||||
Reference in New Issue
Block a user