#include #include #include #include #include #include #include static const char *cmd; static size_t get_blksz(FILE *f) { struct stat st; if ( fstat(fileno(f), &st) ) { fprintf(stderr, "%s: (stdin): fstat(): %s\n", cmd, strerror(errno)); return sysconf(_SC_PAGESIZE); } return st.st_blksize; } static void html_begin(void) { printf("\n"); printf("\n\n"); printf("\t"); printf("\tHex Dump\n"); printf("\n"); printf("

Hex Dump

\n"); printf("
");
}

static void html_end(void)
{
	printf("\n
\n\n\n"); fflush(stdout); } static void html_dump(u_int8_t *buf, size_t len) { static size_t pos; size_t i; for(i=0; i < len; i++, buf++, pos++) { if ( (pos % 16) == 0 ) printf("\n0x%.8x: ", pos); printf("%.2x ", *buf); } } int main(int argc, char **argv) { size_t bufsz; void *buf; int ret = 1; cmd = argv[0]; bufsz = get_blksz(stdin) * 32; buf = malloc(bufsz); if ( buf == NULL ) { fprintf(stderr, "%s: malloc(): %s\n", cmd, strerror(errno)); return 1; } html_begin(); while ( !feof(stdin) ) { size_t len; len = fread(buf, 1, bufsz, stdin); if ( ferror(stdin) ) { fprintf(stderr, "%s: (stdin): fread(): %s\n", argv[0], strerror(errno)); goto done; } html_dump(buf, len); } html_end(); ret = 0; done: free(buf); return ret; }