// // hexdump.c // darksword-kexploit-fun // // Created by seo on 3/26/26. // #include #include #include #include #include "hexdump.h" void hexdump(const void* data, size_t size) { char ascii[17]; size_t i, j; ascii[16] = '\0'; for (i = 0; i < size; ++i) { if ((i % 16) == 0) { printf("[0x%016llx+0x%03zx] ", &data, i); } printf("%02X ", ((unsigned char*)data)[i]); if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') { ascii[i % 16] = ((unsigned char*)data)[i]; } else ascii[i % 16] = '.'; if ((i + 1) % 8 == 0 || i + 1 == size) { printf(" "); if ((i + 1) % 16 == 0) printf("| %s \n", ascii); else if (i + 1 == size) { ascii[(i + 1) % 16] = '\0'; if ((i + 1) % 16 <= 8) { printf(" "); } for (j = (i + 1) % 16; j < 16; ++j) printf(" "); printf("| %s \n", ascii); } } } } void hexdump_file(const char *path, size_t size) { int fd = open(path, O_RDONLY); void *buf = malloc(size); ssize_t n = read(fd, buf, size); close(fd); if (n > 0) hexdump(buf, n); free(buf); }