projects
/
proxmark3-svn
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
CHG; a fix for "HF TUNE", I always were annoyed with the hf tune where it printed...
[proxmark3-svn]
/
client
/
util.c
diff --git
a/client/util.c
b/client/util.c
index 2bc5b2ba02f4fc0fda66ba8a678c6d399c1de121..9768dbeb088bb538a1c3d21408d61f4a823732c7 100644
(file)
--- a/
client/util.c
+++ b/
client/util.c
@@
-103,15
+103,20
@@
void print_hex(const uint8_t * data, const size_t len) {
printf("%02x ", data[i]);
printf("\n");
}
printf("%02x ", data[i]);
printf("\n");
}
+
void print_hex_break(const uint8_t *data, const size_t len, uint8_t breaks) {
void print_hex_break(const uint8_t *data, const size_t len, uint8_t breaks) {
- size_t i;
- for ( i = 0; i < len; ++i) {
+
+ int rownum = 0;
+ printf("[%02d] | ", rownum);
+ for (int i = 0; i < len; ++i) {
printf("%02X ", data[i]);
// check if a line break is needed
printf("%02X ", data[i]);
// check if a line break is needed
- if ( (breaks > 0) && (i > 0) && !(i % breaks) )
- printf("\n");
+ if ( breaks > 0 && !((i+1) % breaks) && (i+1 < len) ) {
+ ++rownum;
+ printf("\n[%02d] | ", rownum);
+ }
}
printf("\n");
}
}
printf("\n");
}
@@
-131,8
+136,10
@@
char *sprint_hex(const uint8_t *data, const size_t len) {
}
char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) {
}
char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) {
+
// make sure we don't go beyond our char array memory
// make sure we don't go beyond our char array memory
- int max_len;
+ size_t in_index = 0, out_index = 0;
+ int max_len;
if (breaks==0)
max_len = ( len > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len;
else
if (breaks==0)
max_len = ( len > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len;
else
@@
-143,20
+150,20
@@
char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t brea
memset(buf, 0x00, sizeof(buf));
char *tmp = buf;
memset(buf, 0x00, sizeof(buf));
char *tmp = buf;
- size_t in_index = 0;
// loop through the out_index to make sure we don't go too far
// loop through the out_index to make sure we don't go too far
- for (
size_t
out_index=0; out_index < max_len-2; out_index++) {
+ for (out_index=0; out_index < max_len-2; out_index++) {
// set character
// set character
- sprintf(tmp++, "%u", data[in_index]);
+ sprintf(tmp++, "%u",
(unsigned int)
data[in_index]);
// check if a line break is needed and we have room to print it in our array
if ( (breaks > 0) && !((in_index+1) % breaks) && (out_index+1 != max_len) ) {
// increment and print line break
out_index++;
sprintf(tmp++, "%s","\n");
// check if a line break is needed and we have room to print it in our array
if ( (breaks > 0) && !((in_index+1) % breaks) && (out_index+1 != max_len) ) {
// increment and print line break
out_index++;
sprintf(tmp++, "%s","\n");
- }
+
}
in_index++;
}
in_index++;
}
-
+ // last char.
+ sprintf(tmp++, "%u", (unsigned int) data[in_index]);
return buf;
}
return buf;
}
@@
-172,6
+179,7
@@
char *sprint_hex_ascii(const uint8_t *data, const size_t len) {
sprintf(tmp, "%s| %s", sprint_hex(data, max_len) , data);
return buf;
}
sprintf(tmp, "%s| %s", sprint_hex(data, max_len) , data);
return buf;
}
+
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
{
while (len--) {
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
{
while (len--) {
@@
-191,12
+199,22
@@
uint64_t bytes_to_num(uint8_t* src, size_t len)
return num;
}
return num;
}
-void num_to_bytebits(uint64_t n, size_t len, uint8_t *dest) {
+// takes a number (uint64_t) and creates a binarray in dest.
+void num_to_bytebits(uint64_t n, size_t len, uint8_t *dest) {
while (len--) {
dest[len] = n & 1;
n >>= 1;
}
}
while (len--) {
dest[len] = n & 1;
n >>= 1;
}
}
+//least significant bit first
+void num_to_bytebitsLSBF(uint64_t n, size_t len, uint8_t *dest)
+{
+ for(int i = 0 ; i < len ; ++i) {
+ dest[i] = n & 1;
+ n >>= 1;
+ }
+}
+
// aa,bb,cc,dd,ee,ff,gg,hh, ii,jj,kk,ll,mm,nn,oo,pp
// to
// aa,bb,cc,dd,ee,ff,gg,hh, ii,jj,kk,ll,mm,nn,oo,pp
// to
@@
-214,6
+232,8
@@
uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockS
return tmp;
}
return tmp;
}
+// takes a uint8_t src array, for len items and reverses the byte order in blocksizes (8,16,32,64),
+// returns: the dest array contains the reordered src array.
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++){
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++){
@@
-222,7
+242,6
@@
void SwapEndian64ex(const uint8_t *src, const size_t len, const uint8_t blockSiz
}
}
}
}
-
// -------------------------------------------------------------------------
// string parameters lib
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// string parameters lib
// -------------------------------------------------------------------------
@@
-487,6
+506,7
@@
void wiegand_add_parity(uint8_t *target, uint8_t *source, uint8_t length)
*(target)= GetParity(source + length / 2, ODD, length / 2);
}
*(target)= GetParity(source + length / 2, ODD, length / 2);
}
+// xor two arrays together for len items. The dst array contains the new xored values.
void xor(unsigned char * dst, unsigned char * src, size_t len) {
for( ; len > 0; len--,dst++,src++)
*dst ^= *src;
void xor(unsigned char * dst, unsigned char * src, size_t len) {
for( ; len > 0; len--,dst++,src++)
*dst ^= *src;
@@
-496,6
+516,7
@@
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];
}
+// Pack a bitarray into a uint32_t.
uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits) {
if (len > 32) return 0;
uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits) {
if (len > 32) return 0;
@@
-520,6
+541,7
@@
void rol(uint8_t *data, const size_t len){
data[len-1] = first;
}
data[len-1] = first;
}
+// Swap bit order on a uint32_t value. Can be limited by nrbits just use say 8bits reversal
uint32_t SwapBits(uint32_t value, int nrbits) {
uint32_t newvalue = 0;
for(int i = 0; i < nrbits; i++) {
uint32_t SwapBits(uint32_t value, int nrbits) {
uint32_t newvalue = 0;
for(int i = 0; i < nrbits; i++) {
Impressum
,
Datenschutz