http://qs1969.pair.com?node_id=375418
Category: Miscellaneous
Author/Contact Info X-3mE'89 or, if you prefer, \x58\x2d\x33\x6d\x45\x27\x38\x39
Description: This small script generates obfu's: you need a mask file (full of #'s), and your source perl file (without hash-bang). Simply call mask.pl source.pl mask.image and redirect the stdout somewhere, and here's your obfu.
#!/usr/bin/perl

#
# mask.pl v0.1_alpha by X-3mE
# generate perl Obfu with a code
# file and a mask
#
# released under GNU GPL terms
#

my $file=shift @ARGV; # code file name
my $mask=shift @ARGV; # mask/image file
my $dot=shift @ARGV;  # dot (the symbol
                      # used in the image
                      # file)
my $codestr;          # string containing
                      # the entire perl code

# check the args existance
unless($file or $mask) {
    die "Usage: $0 file obfu_mask [dot]\n"
}

# checking dot arg existance:
# if not, the std dot is '#'
unless($dot) {
    $dot='#'
}

# open the source code file
open(FILE,"<$file") or die "Error: file $file\n";

# kill \n's, \t's, spaces and so on
# if you want a space in your code, use ^'s

while($f=<FILE>) {
    $f=~s/\s//g;
    $codestr.=$f
}
close(FILE);

# put the "clean" code in a temp file
open(FILE,">$file.tmp") or die "Error: temp file $file\n";
print FILE $codestr;
close(FILE);
open(FILE,"<$file.tmp") or die "Error: temp file $file\n";

open(MASK,"<$mask") or die "Error: file $mask\n";

my $c;
print '$_=q%'."\n";

# apply code to the mask
while(<MASK>) {
    while(/$dot/) {
        $c=getc(FILE);
        s/$dot/$c/e
    }
    print
}
# print exceeding code chars
unless(eof(FILE)) {
    while(!eof(FILE)) {
        $c=getc(FILE);
        print $c
    }
}
# print final instructions
print "\n";

# old one was:
#print '%;'."\n\n".'s/\s//g;'."\n".'s/\^/ /g;'."\n";
print '%;'."\n\n".'s/\s+//g;'."\n".'s/\^/ /g;'."\n";

# add other substitution code here
print "\neval\n";
close(MASK);
unlink("$file.tmp") # remove temp file

# in old code it was so:
# system("rm -rf $file.tmp")


# end #