#!/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 #
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|