#include #include int main(int argc, char *argv[]) { int offset; int size; int i; int width, height, bpp; unsigned char byte; FILE *rw; if (argc < 3) { fprintf(stderr, "Usage: %s file address_of_header\n", argv[0]); exit(1); } if ((rw = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Could not open file: %s\n", argv[1]); exit(1); } sscanf(argv[2], "%X", &offset); fseek(rw, offset, 0); fseek(rw, 4, SEEK_CUR); fread(&size, 4, 1, rw); fseek(rw, 4, SEEK_CUR); offset += 12; /* Print out the section */ for (i = 0; i < size; i++) { if ((i % 16) == 0) printf("\n"); byte = getc(rw); printf("%02X ", byte); } printf("\n"); /* Go back and read data */ fseek(rw, -size, SEEK_CUR); fread(&width, 4, 1, rw); fread(&height, 4, 1, rw); fread(&bpp, 4, 1, rw); /* Skip rest and next header */ fseek(rw, size, SEEK_CUR); for (i = 0; i < 0x50; i++) { if ((i % 16) == 0) printf("\n"); byte = getc(rw); printf("%02X ", byte); } printf("\n"); fseek(rw, width*height*bpp/8, SEEK_CUR); for (i = 0; i < 0x50; i++) { if ((i % 16) == 0) printf("\n"); byte = getc(rw); printf("%02X ", byte); } printf("\n"); return 0; }