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
- int max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks);
+ int max_len;
+ if (breaks==0)
+ max_len = ( len > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len;
+ else
+ max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks);
+
static char buf[MAX_BIN_BREAK_LENGTH]; // 3072 + end of line characters if broken at 8 bits
//clear memory
memset(buf, 0x00, sizeof(buf));
for (size_t out_index=0; out_index < max_len; out_index++) {
// set character
sprintf(tmp++, "%u", data[in_index]);
- // check if a line break is needed
+ // 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++;
char *sprint_bin(const uint8_t *data, const size_t len) {
return sprint_bin_break(data, len, 0);
}
+
+char *sprint_hex_ascii(const uint8_t *data, const size_t len) {
+ static char buf[1024];
+ memset(buf, 0x00, 1024);
+ char *tmp = buf;
+ sprintf(tmp, "%s| %s", sprint_hex(data, len) , data);
+ return buf;
+}
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
{
while (len--) {
// 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;
return tmp;
}
-//assumes little endian
-char * printBits(size_t const size, void const * const ptr)
-{
- unsigned char *b = (unsigned char*) ptr;
- unsigned char byte;
- static char buf[1024];
- char * tmp = buf;
- int i, j;
-
- for (i=size-1;i>=0;i--)
- {
- for (j=7;j>=0;j--)
- {
- byte = b[i] & (1<<j);
- byte >>= j;
- sprintf(tmp, "%u", byte);
- tmp++;
- }
- }
- return buf;
+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
// -------------------------------------------------------------------------
{
int bg, en, temp, i;
- if (hexcnt % 2)
- return 1;
+ if (hexcnt & 1) return 1;
if (param_getptr(line, &bg, &en, paramnum)) return 1;
- if (en - bg + 1 != hexcnt)
- return 1;
+ if (en - bg + 1 != hexcnt) return 1;
for(i = 0; i < hexcnt; i += 2) {
if (!(isxdigit(line[bg + i]) && isxdigit(line[bg + i + 1])) ) return 1;