# line noise by kilinrax
#
# another read and run dissection by tachyon
#
# I needed to rearrange the line breaks and add
# a space between the = and r on at the begining
# of the third line to make this run as shown below
use strict; $\=$/;$_=q&&;s()/#?=>$":}\~>\\!;/;$/=~
s~~s{;};$")!{$"\\:<_!;~e;y{%*-.$'&(#-<}$@-~$s;{y(;-?)
= r-{)!=s;y$T-_$`-|$;y}{-~}l-\}};s{!}$Y<$g&&redo}print;
# this is an awesome obfu, here is a quick dissect
# first the exact original code with some whitespace
use strict;
$\=$/;
$_=q&&;
s()/#?=>$":}\~>\\!;/;
$/ =~ s~~s{;};$")!{$"\\:<_!;~e;
y{%*-.$'&(#-<}$@-~$s;
{
y(;-?)= r-{)!=s;
y$T-_$`-|$;
y}{-~}l-\}};
s{!}$Y<$g && redo
}
print;
# make it a bit more readable by using
# the usual / for our s and tr (y); also the
# bareblock rearranged, and now executes only once
# as s/!/Y</g is only true once and we can do it
# before all the transliteration
use strict;
$\="\n"; # set output rec sep to newline, neat trick!
$_='';
s//#?=>$":}\~>\\!;/;
$/ =~ s//s{;};$")!{$"\\:<_!;/e;
tr/%*-.$'&(#-</@-~/s;
while (s/!/Y</g){
tr/;-?/ r-{)!/s;
tr/T-_/`-|/;
tr/{-~/l-\}/;
}
print;
# here it is with the $/ =~ s///e simplified as we only
# want the effect of the code evaled in the second part
# the unecessary while block has been removed
# the unecessary /s modifiers on the trs are gone
# as there are no duplicate chars to squash
# and some print statements show the secrets
use strict;
$\="\n";
$_='';
s//#?=>$":}\~>\\!;/; print "1: $_";
s/;/$")!{$"\\:<_!/; print "2: $_";
tr/%*-.$'&(#-</@-~/; print "3: $_";
s/!/Y</g; print "4: $_";
tr/;-?/ r-{)!/; print "5: $_";
tr/T-_/`-|/; print "6: $_";
tr/{-~/l-\}/; print "7: $_";
print;
# You can see what happens, the reason the changes
# occur are that the - within the tr (y) has a special
# meaning - it specifies a range of chars to
# transliterate. Although A-Z is common *-. is OK
# too, and certainly less readable!
#
# This is an really unreadable obfu, even in this state
# Top effort!!!
#
# tachyon
|