hping3/utils/hex2bin.c
2022-04-13 18:01:39 +08:00

64 lines
931 B
C

/*
* hex2bin - simple hex to bin filter
* antirez@invece.org - under GPL version 2
*/
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int hex2bin(void)
{
char hex[3];
int d = 0;
unsigned char c;
int stdin_fd = fileno(stdin);
int n_read;
while((n_read = read(stdin_fd, hex, 2)) > 0)
{
if (n_read == 1)
{
if (hex[0] != '\n')
{
fprintf(stderr,
"input parse error, odd digits in hex file\n");
exit(1);
}
else
exit(1);
}
hex[2] = '\0';
sscanf(hex, "%x", &d);
c = (unsigned char) d;
printf("%c", c);
}
return 0;
}
int bin2hex(void)
{
int stdin_fd = fileno(stdin);
int n_read;
unsigned char c;
while((n_read = read(stdin_fd, &c, 1)) > 0)
{
printf("%.2x", c);
}
return 0;
}
int main(int argc, char **argv)
{
if (argc >= 2 && strstr(argv[1], "-r"))
bin2hex();
else
hex2bin();
return 0;
}