Your Ad Here

---[ 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 <inputfile>\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 daos@nym.alias.net

<++> extract.pl

!/bin/sh -- # -- perl -- -n

eval 'exec perl $0 -S ${1+"$@"}' if 0;

$opening=0;

if (/^\<++>/) {$curfile = substr($_ , 5); $opening=1;}; if (/^\<-->/) {close ctex; $opened=0;}; if ($opening) {
chop $curfile;
$sex
dir= substr( $curfile, 0, ((rindex($curfile,'/'))) ) if ($curfile =~ m/\//); eval {mkdir $sexdir, "0777";}; open(ctex,">$curfile"); print "Attempting extraction of $curfile\n"; $opened=1; } if ($opened && !$opening) {print ctex $}; <-->

----[ EOF