From 2d3f8e5fa7e5a775cef24b526a85465cd7d125b5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 26 Jan 2017 14:23:05 +0100 Subject: [PATCH] ADD: some defines to make headerfiles behave better. CHG: syntax sugar --- armsrc/aes.h | 6 ++- armsrc/optimized_cipher.c | 23 +++++------ client/cmdhfmfdes.h | 83 ++++++++++++++++++++------------------ client/lualibs/read14a.lua | 2 +- client/mifarehost.h | 5 ++- client/ui.c | 15 ++++++- client/util.h | 6 ++- 7 files changed, 82 insertions(+), 58 deletions(-) diff --git a/armsrc/aes.h b/armsrc/aes.h index 85944873..6934d690 100644 --- a/armsrc/aes.h +++ b/armsrc/aes.h @@ -3,6 +3,8 @@ * your source which uses these given APIs. (This source is kept under * public domain) */ +#ifndef __AES_H +#define __AES_H // AES context structure typedef struct { @@ -27,4 +29,6 @@ typedef struct { int AesCtxIni(AesCtx *pCtx, unsigned char *pIV, unsigned char *pKey, unsigned int KeyLen, unsigned char Mode); int AesEncrypt(AesCtx *pCtx, unsigned char *pData, unsigned char *pCipher, unsigned int DataLen); -int AesDecrypt(AesCtx *pCtx, unsigned char *pCipher, unsigned char *pData, unsigned int CipherLen); \ No newline at end of file +int AesDecrypt(AesCtx *pCtx, unsigned char *pCipher, unsigned char *pData, unsigned int CipherLen); + +#endif \ No newline at end of file diff --git a/armsrc/optimized_cipher.c b/armsrc/optimized_cipher.c index 285403ab..8557a21d 100644 --- a/armsrc/optimized_cipher.c +++ b/armsrc/optimized_cipher.c @@ -98,7 +98,6 @@ uint8_t xopt__select(bool x, bool y, uint8_t r) void opt_successor(const uint8_t* k, State *s, bool y, State* successor) { - uint8_t Tt = 1 & opt_T(s); successor->t = (s->t >> 1); @@ -212,26 +211,26 @@ void opt_doReaderMAC(uint8_t *cc_nr_p, uint8_t *div_key_p, uint8_t mac[4]) { static uint8_t cc_nr[12]; - opt_reverse_arraybytecpy(cc_nr, cc_nr_p,12); + opt_reverse_arraybytecpy(cc_nr, cc_nr_p, 12); uint8_t dest []= {0,0,0,0,0,0,0,0}; - opt_MAC(div_key_p,cc_nr, dest); + opt_MAC(div_key_p, cc_nr, dest); //The output MAC must also be reversed - opt_reverse_arraybytecpy(mac, dest,4); + opt_reverse_arraybytecpy(mac, dest, 4); return; } void opt_doTagMAC(uint8_t *cc_p, const uint8_t *div_key_p, uint8_t mac[4]) { static uint8_t cc_nr[8+4+4]; - opt_reverse_arraybytecpy(cc_nr, cc_p,12); + opt_reverse_arraybytecpy(cc_nr, cc_p, 12); State _init = { ((div_key_p[0] ^ 0x4c) + 0xEC) & 0xFF,// l ((div_key_p[0] ^ 0x4c) + 0x21) & 0xFF,// r 0x4c, // b 0xE012 // t }; - opt_suc(div_key_p,&_init,cc_nr, 12,true); + opt_suc(div_key_p, &_init, cc_nr, 12, true); uint8_t dest []= {0,0,0,0}; - opt_output(div_key_p,&_init, dest); + opt_output(div_key_p, &_init, dest); //The output MAC must also be reversed opt_reverse_arraybytecpy(mac, dest,4); return; @@ -248,14 +247,14 @@ void opt_doTagMAC(uint8_t *cc_p, const uint8_t *div_key_p, uint8_t mac[4]) State opt_doTagMAC_1(uint8_t *cc_p, const uint8_t *div_key_p) { static uint8_t cc_nr[8]; - opt_reverse_arraybytecpy(cc_nr, cc_p,8); + opt_reverse_arraybytecpy(cc_nr, cc_p, 8); State _init = { ((div_key_p[0] ^ 0x4c) + 0xEC) & 0xFF,// l ((div_key_p[0] ^ 0x4c) + 0x21) & 0xFF,// r 0x4c, // b 0xE012 // t }; - opt_suc(div_key_p,&_init,cc_nr, 8,false); + opt_suc(div_key_p, &_init, cc_nr, 8, false); return _init; } /** @@ -271,10 +270,10 @@ void opt_doTagMAC_2(State _init, uint8_t* nr, uint8_t mac[4], const uint8_t* di { static uint8_t _nr [4]; opt_reverse_arraybytecpy(_nr, nr, 4); - opt_suc(div_key_p,&_init,_nr, 4, true); - //opt_suc(div_key_p,&_init,nr, 4, false); + opt_suc(div_key_p, &_init,_nr, 4, true); + //opt_suc(div_key_p, &_init,nr, 4, false); uint8_t dest []= {0,0,0,0}; - opt_output(div_key_p,&_init, dest); + opt_output(div_key_p, &_init, dest); //The output MAC must also be reversed opt_reverse_arraybytecpy(mac, dest,4); return; diff --git a/client/cmdhfmfdes.h b/client/cmdhfmfdes.h index 5979113d..18594075 100644 --- a/client/cmdhfmfdes.h +++ b/client/cmdhfmfdes.h @@ -1,5 +1,5 @@ //----------------------------------------------------------------------------- -// Copyright (C) 2014 Iceman +// Iceman, 2014 // // This code is licensed to you under the terms of the GNU GPL, version 2 or, // at your option, any later version. See the LICENSE.txt file for the text of @@ -7,6 +7,8 @@ //----------------------------------------------------------------------------- // High frequency MIFARE Desfire commands //----------------------------------------------------------------------------- +#ifndef __MFDESFIRE_H +#define __MFDESFIRE_H int CmdHFMFDes(const char *Cmd); int CmdHF14ADesAuth(const char* cmd); @@ -30,42 +32,42 @@ enum { } CmdOptions ; -#define CREATE_APPLICATION 0xca -#define DELETE_APPLICATION 0xda -#define GET_APPLICATION_IDS 0x6a -#define SELECT_APPLICATION 0x5a -#define FORMAT_PICC 0xfc -#define GET_VERSION 0x60 -#define READ_DATA 0xbd -#define WRITE_DATA 0x3d -#define GET_VALUE 0x6c -#define CREDIT 0x0c -#define DEBIT 0xdc -#define LIMITED_CREDIT 0x1c -#define WRITE_RECORD 0x3b -#define READ_RECORDS 0xbb -#define CLEAR_RECORD_FILE 0xeb -#define COMMIT_TRANSACTION 0xc7 -#define ABORT_TRANSACTION 0xa7 -#define GET_FREE_MEMORY 0x6e -#define GET_FILE_IDS 0x6f -#define GET_ISOFILE_IDS 0x61 -#define GET_FILE_SETTINGS 0xf5 -#define CHANGE_FILE_SETTINGS 0x5f -#define CREATE_STD_DATA_FILE 0xcd -#define CREATE_BACKUP_DATA_FILE 0xcb -#define CREATE_VALUE_FILE 0xcc -#define CREATE_LINEAR_RECORD_FILE 0xc1 -#define CREATE_CYCLIC_RECORD_FILE 0xc0 -#define DELETE_FILE 0xdf -#define AUTHENTICATE 0x0a // AUTHENTICATE_NATIVE -#define AUTHENTICATE_ISO 0x1a // AUTHENTICATE_STANDARD -#define AUTHENTICATE_AES 0xaa -#define CHANGE_KEY_SETTINGS 0x54 -#define GET_KEY_SETTINGS 0x45 -#define CHANGE_KEY 0xc4 -#define GET_KEY_VERSION 0x64 -#define AUTHENTICATION_FRAME 0xAF +#define CREATE_APPLICATION 0xca +#define DELETE_APPLICATION 0xda +#define GET_APPLICATION_IDS 0x6a +#define SELECT_APPLICATION 0x5a +#define FORMAT_PICC 0xfc +#define GET_VERSION 0x60 +#define READ_DATA 0xbd +#define WRITE_DATA 0x3d +#define GET_VALUE 0x6c +#define CREDIT 0x0c +#define DEBIT 0xdc +#define LIMITED_CREDIT 0x1c +#define WRITE_RECORD 0x3b +#define READ_RECORDS 0xbb +#define CLEAR_RECORD_FILE 0xeb +#define COMMIT_TRANSACTION 0xc7 +#define ABORT_TRANSACTION 0xa7 +#define GET_FREE_MEMORY 0x6e +#define GET_FILE_IDS 0x6f +#define GET_ISOFILE_IDS 0x61 +#define GET_FILE_SETTINGS 0xf5 +#define CHANGE_FILE_SETTINGS 0x5f +#define CREATE_STD_DATA_FILE 0xcd +#define CREATE_BACKUP_DATA_FILE 0xcb +#define CREATE_VALUE_FILE 0xcc +#define CREATE_LINEAR_RECORD_FILE 0xc1 +#define CREATE_CYCLIC_RECORD_FILE 0xc0 +#define DELETE_FILE 0xdf +#define AUTHENTICATE 0x0a // AUTHENTICATE_NATIVE +#define AUTHENTICATE_ISO 0x1a // AUTHENTICATE_STANDARD +#define AUTHENTICATE_AES 0xaa +#define CHANGE_KEY_SETTINGS 0x54 +#define GET_KEY_SETTINGS 0x45 +#define CHANGE_KEY 0xc4 +#define GET_KEY_VERSION 0x64 +#define AUTHENTICATION_FRAME 0xAF #define MAX_NUM_KEYS 0x0F #define MAX_APPLICATION_COUNT 28 @@ -108,8 +110,7 @@ enum { #define COMMAND_ABORTED 0xCA // Previous Command was not fully // completed Not all Frames were // requested or provided by PCD -#define PICC_DISABLED_ERROR 0xCD // [1] // PICC was disabled by an unre- - // coverable error +#define PICC_DISABLED_ERROR 0xCD // [1] // PICC was disabled by an unrecoverable error #define COUNT_ERROR 0xCE // Number of Applications limited // to 28, no additional // CreateApplication possible @@ -125,4 +126,6 @@ enum { #define FILE_INTEGRITY_ERROR 0xF1 // [1] // Unrecoverable error within file, // file will be disabled // -// [1] These errors are not expected to appear during normal operation. | \ No newline at end of file +// [1] These errors are not expected to appear during normal operation + +#endif \ No newline at end of file diff --git a/client/lualibs/read14a.lua b/client/lualibs/read14a.lua index 8d2d431f..5134fa94 100644 --- a/client/lualibs/read14a.lua +++ b/client/lualibs/read14a.lua @@ -86,7 +86,7 @@ local function sendToDevice(command, ignoreresponse) end if ignoreresponse then return nil,nil end - local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT) + local response = core.WaitForResponseTimeout(cmds.CMD_ACK, TIMEOUT) return response,nil end diff --git a/client/mifarehost.h b/client/mifarehost.h index 754cc483..4f6b984a 100644 --- a/client/mifarehost.h +++ b/client/mifarehost.h @@ -7,6 +7,8 @@ //----------------------------------------------------------------------------- // High frequency ISO14443A commands //----------------------------------------------------------------------------- +#ifndef __MIFARE_HOST_H +#define __MIFARE_HOST_H #include #include @@ -15,13 +17,11 @@ #include #include "proxmark3.h" // time_t -//#include "radixsort.h" #include "common.h" #include "cmdmain.h" #include "ui.h" #include "data.h" #include "util.h" -//#include "nonce2key/nonce2key.h" #include "nonce2key/crapto1.h" #include "iso14443crc.h" #include "protocols.h" @@ -84,3 +84,4 @@ int isBlockTrailer(int blockN); int loadTraceCard(uint8_t *tuid, uint8_t uidlen); int saveTraceCard(void); int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len); +#endif \ No newline at end of file diff --git a/client/ui.c b/client/ui.c index 6819f649..87fede08 100644 --- a/client/ui.c +++ b/client/ui.c @@ -25,7 +25,10 @@ void PrintAndLog(char *fmt, ...) va_list argptr, argptr2; static FILE *logfile = NULL; static int logging = 1; - + // time_t current_time; + // struct tm* tm_info; + // char buffer[26] = {0}; + // lock this section to avoid interlacing prints from different threats pthread_mutex_lock(&print_lock); @@ -63,6 +66,16 @@ void PrintAndLog(char *fmt, ...) } if (logging && logfile) { + + /* + // Obtain current time. + current_time = time(NULL); + // Convert to local time format. + tm_info = localtime(¤t_time); + strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info); + fprintf(logfile, "%s ", buffer); + */ + vfprintf(logfile, fmt, argptr2); fprintf(logfile,"\n"); fflush(logfile); diff --git a/client/util.h b/client/util.h index b158ec0a..593c9af7 100644 --- a/client/util.h +++ b/client/util.h @@ -7,6 +7,8 @@ //----------------------------------------------------------------------------- // utilities //----------------------------------------------------------------------------- +#ifndef __UTIL_H_ +#define __UTIL_H_ #include #include //included in data.h @@ -140,4 +142,6 @@ uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits); void rol(uint8_t *data, const size_t len); uint32_t SwapBits(uint32_t value, int nrbits); uint32_t reflect(uint32_t v, int b); -uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor); \ No newline at end of file +uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor); + +#endif \ No newline at end of file -- 2.39.2