Simple utility to view hex.
aac4af0dd11b60dd8e9c9f7d53aac544ce99b0e1fedce792e18d52f71a54f3c7
/*
** priv8hex.c by aleksander 'konewka' ambrozkiewicz
**
** Simple hex viewer.
**
** www.priv8security.com
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#define RED "\033[01;31m"
#define NORM "\033\[00;00m"
void usage(char *progname);
void dump_hex(FILE *fd);
void clear_buf(char *buf, int size);
void clear_int(int itc[], int size);
void clear_int(int itc[], int size) {
int i;
for (i=0;i<=size;i++)
itc[i] = 0;
}
void clear_buf(char *buf, int size) {
int i;
for (i=0;i<=size;i++)
buf[i] = '\0';
}
void dump_hex(FILE *fd) {
char buf[16];
int c, i, j, hex[15];
clear_buf(buf, 16);
clear_int(hex, 15);
for (i=1,j=0;(c = getc(fd)) != EOF;i++) {
(isprint(c)) ? (buf[j] = c) : (buf[j] = '.');
hex[j++] = c;
if (!(i%16)) {
printf("("RED"0x%02x"NORM") | ", i/16);
for (j=0;j<=15;j++)
printf("%02x ", hex[j]);
printf("| %s\n", buf);
j = 0;
clear_buf(buf, 16);
clear_int(hex, 15);
}
}
if (i%16) {
printf("("RED"0x%02x"NORM") | ", (i+16)/16);
for (j=0;j<=15;j++)
printf("%02x ", hex[j]);
printf("| %s\n", buf);
}
}
void usage(char *progname) {
printf(RED"+"NORM" priv8hex written by konewka (www.priv8security.com)\n");
printf(RED"+"NORM" usage : %s <file>\n", progname);
exit(0);
}
int main(int argc, char *argv[]) {
FILE *fd;
if (argc < 2)
usage(argv[0]);
if (!(fd = fopen(argv[1], "r"))) {
printf(RED"-"NORM" cant open file\n");
return -1;
}
dump_hex(fd);
return 0;
}