/* * by gunzip - grabs hardcoded strings from binary files * thanks to objdump - greetz tsunami, jestah, kernel__ qwerty * (I've tested it on Linux with lrk but should work anywhere) */ #include int main(int argc, char *argv[]) { int index; char *num; char *tmp; FILE *fd; const char objdump[] = "/usr/bin/objdump"; const char trans[] = "................................ !\"#$%&'()*+,-./0123456789" ":;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklm" "nopqrstuvwxyz{|}~.."; if (argc != 2) { printf("Usage: ./oOps \n"); exit(-1); } if ( fopen(objdump,"r") == NULL ) { fprintf(stderr,"%s not found.\n",objdump); exit(-1); } if ( fopen(argv[1],"r") == NULL ) { fprintf(stderr,"%s does not exist.\n",argv[1]); exit(-1); } tmp=(char *)calloc(0x100+strlen(objdump)+strlen(argv[1]),sizeof(char)); snprintf(tmp,1024,"%s -D %s > .obj 2>/dev/null",objdump,argv[1]); system(tmp); free(tmp); system("grep movb .obj | cut -d$ -f2 | cut -d, -f1 > .str"); num=(char *)calloc(0x8,sizeof(char)); if ( (fd=fopen(".str","r")) == NULL ) { perror("open()"); exit(-1); } while (!feof(fd)) { fgets(num,7,fd); index=(int)strtoul(num,0,16); if(!index) { /* to avoid newlines */ while( (!index) && (!feof(fd)) ) { fgets(num,7,fd); index=(int)strtoul(num,0,16); } printf("\n"); } if (index < 128) printf("%c",trans[index]); } printf("\n\n"); } /* www.thechameleons.com, the best wave band on earth */