#include #include #include #include #include #include #include #include #include #define min(x,y) (x"); fd = open(argv[1], O_RDONLY); if (fd < 0) err(1, "open"); if (fstat(fd, &sb) < 0) err(1, "fstat"); offset = lseek(fd, -8, SEEK_END); rc = read(fd, &payload_offset, 4); rc = read(fd, &len, 4); fprintf(stderr, "payload is at offset %zx = %zx\n", payload_offset, sb.st_size - payload_offset); fprintf(stderr, "payload len is %x\n", len); offset = lseek(fd, -payload_offset, SEEK_END); fprintf(stderr, "starting from %"PRIx64"\n", offset); while(len) { rc = read(fd, buf, min(len,sizeof(buf))); fprintf(stderr, "\rremaining %x %d", len, rc); write(1, buf, rc); len -= rc; } fprintf(stderr, "\n"); return 0; }