X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/873014de8a4be0f68524531cc90fe6c1dfdffded..28afbd2bee49027d042030bfce07db2db8c7508b:/client/util.c?ds=sidebyside diff --git a/client/util.c b/client/util.c index 6825d721..15e911a1 100644 --- a/client/util.c +++ b/client/util.c @@ -8,13 +8,9 @@ // utilities //----------------------------------------------------------------------------- -#include -#include -#include -#include #include "util.h" -#ifdef __linux__ +#ifndef _WIN32 #include #include int ukbhit(void) @@ -48,6 +44,52 @@ int ukbhit(void) { } #endif +// log files functions +void AddLogLine(char *fileName, char *extData, char *c) { + FILE *fLog = NULL; + + fLog = fopen(fileName, "a"); + if (!fLog) { + printf("Could not append log file %s", fileName); + return; + } + + fprintf(fLog, "%s", extData); + fprintf(fLog, "%s\n", c); + fclose(fLog); +} + +void AddLogHex(char *fileName, char *extData, const uint8_t * data, const size_t len){ + AddLogLine(fileName, extData, sprint_hex(data, len)); +} + +void AddLogUint64(char *fileName, char *extData, const uint64_t data) { + char buf[100] = {0}; + sprintf(buf, "%x%x", (unsigned int)((data & 0xFFFFFFFF00000000) >> 32), (unsigned int)(data & 0xFFFFFFFF)); + AddLogLine(fileName, extData, buf); +} + +void AddLogCurrentDT(char *fileName) { + char buff[20]; + struct tm *curTime; + + time_t now = time(0); + curTime = gmtime(&now); + + strftime (buff, sizeof(buff), "%Y-%m-%d %H:%M:%S", curTime); + AddLogLine(fileName, "\nanticollision: ", buff); +} + +void FillFileNameByUID(char *fileName, uint8_t * uid, char *ext, int byteCount) { + char * fnameptr = fileName; + memset(fileName, 0x00, 200); + + for (int j = 0; j < byteCount; j++, fnameptr += 2) + sprintf(fnameptr, "%02x", uid[j]); + sprintf(fnameptr, "%s", ext); +} + +// printing and converting functions void print_hex(const uint8_t * data, const size_t len) { @@ -89,6 +131,10 @@ uint64_t bytes_to_num(uint8_t* src, size_t len) return num; } +// ------------------------------------------------------------------------- +// string parameters lib +// ------------------------------------------------------------------------- + // ------------------------------------------------------------------------- // line - param line // bg, en - symbol numbers in param line of beginning an ending parameter @@ -142,7 +188,7 @@ uint8_t param_get8ex(const char *line, int paramnum, int deflt, int base) int bg, en; if (!param_getptr(line, &bg, &en, paramnum)) - return strtol(&line[bg], NULL, base) & 0xff; + return strtoul(&line[bg], NULL, base) & 0xff; else return deflt; } @@ -152,7 +198,7 @@ uint32_t param_get32ex(const char *line, int paramnum, int deflt, int base) int bg, en; if (!param_getptr(line, &bg, &en, paramnum)) - return strtol(&line[bg], NULL, base); + return strtoul(&line[bg], NULL, base); else return deflt; } @@ -162,7 +208,7 @@ uint64_t param_get64ex(const char *line, int paramnum, int deflt, int base) int bg, en; if (!param_getptr(line, &bg, &en, paramnum)) - return strtol(&line[bg], NULL, base); + return strtoull(&line[bg], NULL, base); else return deflt; @@ -190,3 +236,15 @@ int param_gethex(const char *line, int paramnum, uint8_t * data, int hexcnt) return 0; } + +int param_getstr(const char *line, int paramnum, char * str) +{ + int bg, en; + + if (param_getptr(line, &bg, &en, paramnum)) return 0; + + memcpy(str, line + bg, en - bg + 1); + str[en - bg + 1] = 0; + + return en - bg + 1; +}