note
teamster_jr
I couldn't sleep last night and started deobfuscating this. This is very rough and i haven't investigated too closely how it actually does stuff - just ran perltidy, then dropped some basic substitutions and dropped prints in certain places
<spoiler>
as far as i can tell the first line ("with adspace available")
sets a hash with this:
<code>
%}={
'6' => '1',
'1' => '2',
'3' => '6',
'7' => '1',
'2' => '3'
};
</code>
and sets
<code>
$; $. $= $, to 3 1 6 2
</code>
<h1>Update</h1>
if we go through and recursively replace all the $} calls we get this:
<code>
sub e {
my ( $s, $w, $x, $y, $z, $c ) = (
(
join '',
map { chr }
6 * 6 * 3 + 6 + 1,
6 * 6 * 3 + 6 + 1 -
3,
6 * $= * 3 + 6 + 1 - 3 + 2,
6 * 6 * 3 - 3,
$= * 6 * 3 - 3 + 3 + 2,
6 * 6 * 3 + $, * 3 + 2,
6 * 6 * 3 - 6,
6 * 6 - 2 - 2,
6 * 6 * 3 + 6 - 1,
2**( 6 + 1 ) - 3 - 1,
6 * 6 + 1,
6 * 6 * 3 + 6 + 1,
6 * 6 + 1,
6 * 6 * 3 + 6 + 1,
6 * 6 + 1,
6 * 6 * 3 + 6 + 1,
2**( 6 + 1 ) - 3 - 1,
6 * 6 + 2**3,
6 * 6,
6 * 6 * 3 + 2 * 3 + 2 *
3,
6 * 6 + 2**3,
6 * 6 * 3 + 6 - 1,
2**( 6 + 1 ) - 3 - 1,
6 * 6 * 3 - 3 - 2 - 2,
2**( 6 + 1 ) - 3 - 1,
6 * 6 + 2**3,
6 * 6,
$= * 6 * 3 + 2 * 3 + 2 * 3 +
1
),
@_
);
$s =~ s/(.+)/$1/ee;
0 + $s;
}
print chr for(
join '',
do { 1 ^ 1 },
do {
$- = e $;+ 1, $= + $., 3 + $., $= + 1, 2;
$- += e 1 ^ 1, $; + $., 3, $= + $,,
$= + 2;
$- += e 1 ^ 1, 1, $,,
$= * $; + $, * 2, 6 + $;;
$- += e rand, 6 * $, + $= - $., 1 ^ 1,
1 ^ 1,
2 + 6 * 2 - 1;
$-;
},
do {
$- = e rand, 1, 3 + $., 3 + 6 * 2,
6 * 3 - 3;
$- += e 1 ^ 1, 1, 3,
6 * 3 * 6 + 1, 3 + $.;
$- += e 1 ^ 1, $= - $., $,, $= - 1,
3 * 6 * 3 + 3;
$- += e rand, 1, 1, 3,
6 + 6 * 3 - 1;
$- += e 1 ^ 1, 1, 1 ^ 1, $,;
$-;
},
do {
2 * 6 * 3 * 2 - 6 * 2;
},
do {
$- = e 1 ^ 1,
6**3 + 6**2 * 3 -
2**2, $,,
2 + 1 + 6 * 3;
$- += e rand,
6**2 - 3 + 3**( 2 * 2 ) -
3 * 3 * 2 + 1, 1 ^ 1,
1 ^ 1, 1 ^ 1;
$-;
},
do {
$- = e 1 ^ 1, 1, 3, $=, $,;
$- += 2**6 + 6**2 + 3 - 2;
$-;
},
do {
2 + 2**6 + 6**2 + 3**2;
},
do { 1; },
do {
6;
},
do {
$- = e 6 * 6 - 2,
-1 + 3**( 2 * 2 ) + 3 * 6 +
6, 3, $= * $, + $= - $.,
3**2**2 + 6;
$- += 6 * 3 + 2 + 3**2**2;
$-;
},
do {
$- = e 1 ^ 1,
6**3 - 3**( 2 * 2 ) -
2**( 2 * 2 ) - 3 * 2 +
1, 2, 2**6 + 1,
3 * 3 * 3 + 2 * 2 * 2;
$- += 3;
$-;
},
do {
6 * 3 * 6 * 3 * 6 -
6**( 2 * 2 ) + 1 +
3**6 + 6 * 2 * 6 -
3 * 3 * 2 + 6 * 6 *
3 * 6;
},
do { -6 + 6 * 6 * 3 - 1; },
do {
$- = e 6 + 3 + 2, 2 + 3 + 6,
3, 2 + 6 + 3,
3 + 6 + 2;
$- += e rand, 6 * 6 + 3 + 2, 1,
6 + 3, 2**6 - 2**3 *
2**2;
$-;
},
do {
$- = e rand,
0 - 6 + 6**3 * ( 2 * 2 ) + 1 -
2 - 3**3 * 2, 1;
$- += $,;
$-;
},
do {
$- = e $,,
-2 * 2 + 3 * 3 * 2 *
3 * 2, 2,
2**( 2 * 2 ) * 6 -
2**( 2 * 2 ),
-( 2 * 2 ) - 2**( 2 * 2 ) +
6 * 2**( 2 * 2 );
$- += 6 + 3;
$-;
},
do {
$- = e 3,
3 * 3 * 6 + 2**( 2 * 2 ),
$= - $., 2 + 3 * 1 * 2 * 3 + 2 *
3, 3;
$- +=
e 1 + 3**( 2 * 2 ) +
2**( 2 * 2 ) + 1,
2**6 - 1 + 2 * 3 * 3 +
6 * 3, 3,
2 * 6 * 6 + 6 * 2 + 1,
-6 + 2 * 6 + 2 * 6 *
6 + 1;
$- += e 1, 1, $,, 6 * 6 - 1,
$= + $.;
$- += e 6 + 1, $= + $., 1 ^ 1,
2**( 3 + 2 ) + 6 * 3 - 1,
6 * 3 + 2 * 3;
$-;
},
do {
-6 * 2 - 1 + 2**3**2 *
2;
},
do {
$- = e 1 ^ 1, 1, 3 + 1,
-1 + 2 * 3**3 - 1,
2 * 3 * 2;
$- += e 6 * 6 + 2 + 2,
2 + 2 + 6 * 6, $,,
1 + 2 * 3 * 2,
3 * 6 + 2;
$- += e 6 * 2 + 6 - 1,
6 * 6 + 6 + 2,
1 ^ 1, rand, $= + 1;
$- + 1 ^ 1;
}
</code>
and the final regex:
<code>
) =~ m$.{\$a{\$a{\$a{\$=}}}}$g;
</code>
is just:
<code>
=~m/.{3}/g
</code>
essentially the bottom block calls sub e, which generates a string:
<code>
sprintf q|%s%s%s|,$x,q|e|,$y
</code>
(ie the third and fourth arguments with "e" in the middle);
this generates:
<code>
074117115116032097110111116104101114032080101114108032104097099107101114044
</code>
which when split into triplets are just ascii codes.
</spoiler>
but of course i could be wrong :) <br>
a
547911
547911