X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/9332b857ffeee343334064d3ca53048f59c55e50..e994394a40ad9c7b8e33e2fed3357d5d91ab2709:/client/util.c diff --git a/client/util.c b/client/util.c index 159929b5..de6443cf 100644 --- a/client/util.c +++ b/client/util.c @@ -137,7 +137,7 @@ char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t brea size_t in_index = 0; // loop through the out_index to make sure we don't go too far - for (size_t out_index=0; out_index < max_len; out_index++) { + for (size_t out_index=0; out_index < max_len-2; out_index++) { // set character sprintf(tmp++, "%u", data[in_index]); // check if a line break is needed and we have room to print it in our array @@ -194,7 +194,7 @@ void num_to_bytebits(uint64_t n, size_t len, uint8_t *dest) { // hh,gg,ff,ee,dd,cc,bb,aa, pp,oo,nn,mm,ll,kk,jj,ii // up to 64 bytes or 512 bits uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockSize){ - static uint8_t buf[64]; + uint8_t buf[64]; memset(buf, 0x00, 64); uint8_t *tmp = buf; for (uint8_t block=0; block < (uint8_t)(len/blockSize); block++){ @@ -205,6 +205,15 @@ uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockS return tmp; } +void SwapEndian64ex(const uint8_t *src, const size_t len, const uint8_t blockSize, uint8_t *dest){ + for (uint8_t block=0; block < (uint8_t)(len/blockSize); block++){ + for (size_t i = 0; i < blockSize; i++){ + dest[i+(blockSize*block)] = src[(blockSize-1-i)+(blockSize*block)]; + } + } +} + + // ------------------------------------------------------------------------- // string parameters lib // ------------------------------------------------------------------------- @@ -454,11 +463,9 @@ void binarraytobinstring(char *target, char *source, int length) uint8_t GetParity( uint8_t *bits, uint8_t type, int length) { int x; - - for(x= 0 ; length > 0 ; --length) + for( x = 0 ; length > 0 ; --length) x += bits[length - 1]; x %= 2; - return x ^ type; } @@ -494,7 +501,8 @@ uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits) { return tmp; } -// RotateLeft - Ultralight, Desfire +// RotateLeft - Ultralight, Desfire, works on byte level +// 00-01-02 >> 01-02-00 void rol(uint8_t *data, const size_t len){ uint8_t first = data[0]; for (size_t i = 0; i < len-1; i++) {