A few months ago, I was in the middle of another Perl project, and on an impulse took time out to try something new. As is often the case, I didn't expect it would take more than a few days to finish it.
Many weeks later, I have this obfuscation to show for it:
use Tk ; ($ "= q \$ +;
W) i(s -9o ),B )$,} n$ p90)=2+$
m$sdnr 0,;/)$,=w uo,ix+((; E,s)bw$
n3&" -())h=N -ot/9x?$} ?i(A>,fg
0"[xp (f"{n$"; ,e0,u$t" meP#$4q-$
s1|,yw," J5$9yhe|J( ;$ .=,Z])@q3 ($ $O"~9)+=B"
;1fM,%s0&)(,*@,,-$0/ :&($H"F4$>k2#2n[v()=)t
a)xp4e:,$?@))f="/0xx $b$A;=t@x1,t]I,2Rm@e$3
0-;?)$:Ga_r_,09i)} B1Vp;(;A,0f(},/;{$1$(2
:(-$$$@(f0V041" ?Me2F"+0-,02.[-,:="r=>2
,0"0>$1sea>d 5 7,e-uF;pqnse52-q9p,$l$dul
):3$]d1liW(b e,20Z+a)=t)${tA8:))t;("otd
e(04{?e($&r -o(0,0p/($U"$${$,-,u;)b=,W
f$k 27-s(;,~".) V)5 26h"$$/9=}=;5x0@:HB^0"s$f)4
:B";)(,,uMo,/6,e p=[3" b-rAg0Hqu(a6;N>((;,($s$-0
$PC$0$-$shez,W {aj,J6 b) @,]9.mn=2 =0,aS$+0=yv05~
:$n,F):s(a;5s 4B d$)/6p $s$ )/0,(H}i0 rq (j;#,$$;(),
i,-<@h-cPp0?-n$h@_/3,,u.09 treA=80$$s.:0f ),;s0 :Cd
h@$:"=6$p,7,)@UU6%@4jl301=I-;0d_0+i2,)(,1$ ,*;,+t0 9;1
$)r9%(-)",0n,A}=0.$w{,6:e$}(s:3ri$"01xP@0 q1f*,
Z,:4t)F.r2"c6=$20};;.t0,o4$J4,$$p@(,Js0A;0
+sPrA$9($,[$,&=|i-s00q-$x-3$|n1*:,,bj=66c=
t)$63$g]$00-1$}s06r=;Xx,$;/@+,0*>$=54bw;
$$-)s"bs/5;h&HS9,ib=hg,$i_;*0Anl$i;9Sl(
$$:($anf$0=e2MS6.qc+tT:$()-)02)k(;=2C$;>
;,,}"$$J4-Pmu$-.s)jy(0$-apq95u-/=1,B-p
d=0)b>@$ ,-;){aa:}NpAz59@{$tt1(Ha
)= )0U$Yea81{c*6;:=g=(n0.$k
(4@6s+s)2,.Q;$0r0p=h;(-$=mP-
=,l$i$$9wpa-sm-iufHS0)op$ha9
t;t=,:;p{nip0((@[$6$;()f {:
"$C@s0W[$;t$8,D;B),.@J$ ;_0",$];
-=_,B$},,$H}$9",$=H(9$E=}G0,$A$=00Z)s@=
:+V)o[.:)=hI$6"-=+].8;Pi;q0;>s(;$0m(f@*
,$cp$$T,a(tS59grljg-9p1@=70[ei/=10{8S@.:
$at@0):$0;I21pt"A;;8U+$=98]e=)f@0=$h(50
=L"*og,$g=)7,$i;(r=-U)$;i+Wn$$((9[/_&f&}eJO
@"0$5;_!3((=-_.:_7$($51@~$)"6].K3_0._so{)0;
2=);,. ,/)ix,i9$;$3J-#;f$-f5m$G6(ft$(T9(7;V-01i
/c" ;0",w- =,,l8=+$:+$h>$7$l0$"L2"dipl5L=,ne=4e)la;:)
>1+ q(0q;e c(2)$7($5,$((k $5;Y6(_>-U$$FD0$,,$)$9)vK
o,,A-6j{T0 {, -r$-|w0+p ):( $-gE7| i: 1u?6$I)e)5=d4)
s$0e){t=:jt8/h T,,=&}P9oh 0@ @:-$(_ w(0i=,A$59F$(h$
,n>-)H;0)x.iG-"$1*,m:=-5l/ 7!Q2( Ha8($)e55")0$(p0
$D;+7:,]xP${,c,@1.2@}2-x$9 ,$ A}25gs/$,p0 $y =
)90;ugn$=:C+s;5,wb;)ys8)$pM 7 -aN$;,p0}El
a,1r_J$$l,e)ii$0n{=CXi9l; tnI5"s~=,c0s
p(L*:Aes$$e:eu"o$4ll/oz(8{ s! or5ge#+,@0$
h"p),=cs(2r,I@,;;-$t/( ),+=$$s(7A$1$;
J"(Hhu$5$a3jl(i$,)be: /,0+a1fUH;N,9"$,1s
,!=(mJ$0;a1)t@@~$y{F,p, 3/}rFsx@i)7u$0@();,
, Bn=5sa,A$-$($=t(:h,9)u 1M[y(($8@$0*,,=*,)A
b0C _:($ 1M/ $;(+,,[3 $s )a]vm@$7$0 8O,;i),a
_D5Y]0-$( n ($p),:=} , $P$W.I{\ )=~s"[
$/ ]""g ;map{$h{$_} .=substr $",0
,1,""} split//, crypt(qw/ FRaCtal:
/, q+rp +)x160; $_=join //,map
{$h {$_ }} sort keys %h ;s /N
/ /xg; eval #l iv er po le
The purpose of the program (if peek you must) is ...
s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/
|
#!/usr/bin/perl -w
#justanotherperlhacker
use strict;
open*_,$0;<_>;
(y,#,,d,s,t,t ,,s,r,r ,,s,l,l ,,y,j,J,,y,p,P,,s,$,.,,print,goto'')
for<_>
... and another happy little comma lives over here.
Not particularly obfuscated, but I think it's enough to initially confuse someone who isn't paying attention. It does use a few fun tricks, though, and it passes warnings and strictures.
|
Not exactly on obfuscation, but I didn't know where else to put it... Warning: neither __END__ nor @data can be used anywhere in the programs in question, lest it will fail.
#!/usr/bin/perl
use strict;
use warnings;
die("File does not exist.\n") unless -e $ARGV[0];
open(QUINE, "+<", shift);
my @quine = <QUINE>;
push @quine,
'my @data = <DATA>;'."\n",
'print @data, @data'."\n",
"__END__\n";
push @quine, @quine;
seek(QUINE, 0, 0);
print QUINE @quine;
close(QUINE);
my @data = <DATA>;
print @data, @data
__END__
#!/usr/bin/perl
use strict;
use warnings;
die("File does not exist.\n") unless -e $ARGV[0];
open(QUINE, "+<", shift);
my @quine = <QUINE>;
push @quine,
'my @data = <DATA>;'."\n",
'print @data, @data'."\n",
"__END__\n";
push @quine, @quine;
seek(QUINE, 0, 0);
print QUINE @quine;
close(QUINE);
my @data = <DATA>;
print @data, @data
__END__
|