ADD: added a method for le32toh. Converting bytes to uint32_t .

CHG: correct use of FILE_PATH_SIZE in the tracelogging functions.
This commit is contained in:
iceman1001 2016-04-18 13:05:35 +02:00
parent ce211cef39
commit c805748f34
3 changed files with 28 additions and 21 deletions

View file

@ -9,6 +9,7 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#include "util.h" #include "util.h"
#include "proxmark3.h"
#define MAX_BIN_BREAK_LENGTH (3072+384+1) #define MAX_BIN_BREAK_LENGTH (3072+384+1)
#ifndef _WIN32 #ifndef _WIN32
@ -47,7 +48,7 @@ int ukbhit(void) {
// log files functions // log files functions
void AddLogLine(char *file, char *extData, char *c) { void AddLogLine(char *file, char *extData, char *c) {
FILE *fLog = NULL; FILE *f = NULL;
char filename[FILE_PATH_SIZE] = {0x00}; char filename[FILE_PATH_SIZE] = {0x00};
int len = 0; int len = 0;
@ -55,15 +56,16 @@ void AddLogLine(char *file, char *extData, char *c) {
if (len > FILE_PATH_SIZE) len = FILE_PATH_SIZE; if (len > FILE_PATH_SIZE) len = FILE_PATH_SIZE;
memcpy(filename, file, len); memcpy(filename, file, len);
fLog = fopen(filename, "a"); f = fopen(filename, "a");
if (!fLog) { if (!f) {
printf("Could not append log file %s", filename); printf("Could not append log file %s", filename);
return; return;
} }
fprintf(fLog, "%s", extData); fprintf(f, "%s", extData);
fprintf(fLog, "%s\n", c); fprintf(f, "%s\n", c);
fclose(fLog); fflush(f);
fclose(f);
} }
void AddLogHex(char *fileName, char *extData, const uint8_t * data, const size_t len){ void AddLogHex(char *fileName, char *extData, const uint8_t * data, const size_t len){
@ -71,28 +73,33 @@ void AddLogHex(char *fileName, char *extData, const uint8_t * data, const size_t
} }
void AddLogUint64(char *fileName, char *extData, const uint64_t data) { void AddLogUint64(char *fileName, char *extData, const uint64_t data) {
char buf[100] = {0}; char buf[20] = {0};
sprintf(buf, "%x%x", (unsigned int)((data & 0xFFFFFFFF00000000) >> 32), (unsigned int)(data & 0xFFFFFFFF)); memset(buf, 0x00, sizeof(buf));
//sprintf(buf, "%X%X", (unsigned int)((data & 0xFFFFFFFF00000000) >> 32), (unsigned int)(data & 0xFFFFFFFF));
sprintf(buf, "%012"llx"", data);
AddLogLine(fileName, extData, buf); AddLogLine(fileName, extData, buf);
} }
void AddLogCurrentDT(char *fileName) { void AddLogCurrentDT(char *fileName) {
char buff[20]; char buf[20];
memset(buf, 0x00, sizeof(buf));
struct tm *curTime; struct tm *curTime;
time_t now = time(0); time_t now = time(0);
curTime = gmtime(&now); curTime = gmtime(&now);
strftime (buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", curTime);
strftime (buff, sizeof(buff), "%Y-%m-%d %H:%M:%S", curTime); AddLogLine(fileName, "\nanticollision: ", buf);
AddLogLine(fileName, "\nanticollision: ", buff);
} }
void FillFileNameByUID(char *fileName, uint8_t * uid, char *ext, int byteCount) { void FillFileNameByUID(char *fileName, uint8_t *uid, char *ext, int byteCount) {
if ( fileName == NULL || uid == NULL || ext == NULL ){
printf("error: parameter is NULL\n");
return;
}
char * fnameptr = fileName; char * fnameptr = fileName;
memset(fileName, 0x00, 200); memset(fileName, 0x00, FILE_PATH_SIZE);
for (int j = 0; j < byteCount; j++, fnameptr += 2) for (int j = 0; j < byteCount; j++, fnameptr += 2)
sprintf(fnameptr, "%02x", uid[j]); sprintf(fnameptr, "%02X", uid[j]);
sprintf(fnameptr, "%s", ext); sprintf(fnameptr, "%s", ext);
} }
@ -131,7 +138,6 @@ char *sprint_hex(const uint8_t *data, const size_t len) {
for (i=0; i < maxLen; ++i, tmp += 3) for (i=0; i < maxLen; ++i, tmp += 3)
sprintf(tmp, "%02X ", data[i]); sprintf(tmp, "%02X ", data[i]);
return buf; return buf;
} }
@ -207,8 +213,7 @@ void num_to_bytebits(uint64_t n, size_t len, uint8_t *dest) {
} }
} }
//least significant bit first //least significant bit first
void num_to_bytebitsLSBF(uint64_t n, size_t len, uint8_t *dest) void num_to_bytebitsLSBF(uint64_t n, size_t len, uint8_t *dest) {
{
for(int i = 0 ; i < len ; ++i) { for(int i = 0 ; i < len ; ++i) {
dest[i] = n & 1; dest[i] = n & 1;
n >>= 1; n >>= 1;
@ -515,7 +520,9 @@ void xor(unsigned char * dst, unsigned char * src, size_t len) {
int32_t le24toh (uint8_t data[3]) { int32_t le24toh (uint8_t data[3]) {
return (data[2] << 16) | (data[1] << 8) | data[0]; return (data[2] << 16) | (data[1] << 8) | data[0];
} }
uint32_t le32toh (uint8_t *data) {
return (uint32_t)( (data[3]<<24) | (data[2]<<16) | (data[1]<<8) | data[0]);
}
// Pack a bitarray into a uint32_t. // Pack a bitarray into a uint32_t.
uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits) { uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits) {

View file

@ -90,6 +90,7 @@ void wiegand_add_parity(uint8_t *target, uint8_t *source, uint8_t length);
void xor(unsigned char * dst, unsigned char * src, size_t len); void xor(unsigned char * dst, unsigned char * src, size_t len);
int32_t le24toh (uint8_t data[3]); int32_t le24toh (uint8_t data[3]);
uint32_t le32toh (uint8_t *data);
uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits); uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits);
void rol(uint8_t *data, const size_t len); void rol(uint8_t *data, const size_t len);
uint32_t SwapBits(uint32_t value, int nrbits); uint32_t SwapBits(uint32_t value, int nrbits);

View file

@ -152,7 +152,6 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
#define MIFARE_EV1_PERSONAL_UID 0x40 #define MIFARE_EV1_PERSONAL_UID 0x40
#define MIFARE_EV1_SETMODE 0x43 #define MIFARE_EV1_SETMODE 0x43
#define MIFARE_ULC_WRITE 0xA2 #define MIFARE_ULC_WRITE 0xA2
//#define MIFARE_ULC__COMP_WRITE 0xA0 //#define MIFARE_ULC__COMP_WRITE 0xA0
#define MIFARE_ULC_AUTH_1 0x1A #define MIFARE_ULC_AUTH_1 0x1A