---[ Phrack Magazine Volume 7, Issue 51 September 01, 1997, article 17 of 17 -------------------------[ Phrack Magzine Extraction Utility --------[ Phrack Staff This time around, you have the option of using the C version of extract, or the PERL version, contributed by Daos. ---------------------8<------------CUT-HERE----------->8--------------------- /* extract.c by Phrack Staff and sirsyko * * (c) Phrack Magazine, 1997 * * Extracts textfiles from a specially tagged flatfile into a hierarchical * directory strcuture. Use to extract source code from any of the articles * in Phrack Magazine (first appeared in Phrack 50). * * gcc -o extract extract.c * * ./extract filename */ #include #include #include int main(int argc, char **argv){ char *s="<++> ",*e="<-->",b[256],*bp; FILE *f,*o = NULL; int l, n, i=0; l = strlen(s); n = strlen(e); if(argc<2) { printf("Usage: %s \n",argv[0]); exit(1); } if(! (f=fopen(argv[1], "r"))) { printf("Could not open input file.\n"); exit(1); } while(fgets(b, 256, f)){ if(!strncmp (b, s, l)){ b[strlen(b)-1] = '\0'; if((bp=strchr(b+l+1,'/'))) while (bp){ *bp='\0'; mkdir(b+l, 0700); *bp='/'; bp=strchr(bp+1,'/'); } if((o = fopen(b+l, "w"))) printf("- Extracting %s\n",b+l); else { printf("Could not extract '%s'\n",b+l); exit(1); } } else if(!strncmp (b, e, n)){ if(o) fclose(o); else { printf("Error closing file.\n"); exit(1); } } else if(o) { fputs(b, o); i++; } } if(!i) printf("No extraction tags found.\n"); return(0); } ---------------------8<------------CUT-HERE----------->8--------------------- # Daos <++> extract.pl #!/bin/sh -- # -*- perl -*- -n eval 'exec perl $0 -S ${1+"$@"}' if 0; $opening=0; if (/^\<\+\+\>/) {$curfile = substr($_ , 5); $opening=1;}; if (/^\<\-\-\>/) {close ct_ex; $opened=0;}; if ($opening) { chop $curfile; $sex_dir= substr( $curfile, 0, ((rindex($curfile,'/'))) ) if ($curfile =~ m/\//); eval {mkdir $sex_dir, "0777";}; open(ct_ex,">$curfile"); print "Attempting extraction of $curfile\n"; $opened=1; } if ($opened && !$opening) {print ct_ex $_}; <--> ----[ EOF