Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

first time caller, long time listener

by chargrill (Parson)
on Jan 03, 2006 at 20:43 UTC ( [id://520723] : obfuscated . print w/replies, xml ) Need Help??

This is my first posted obfuscation. Many thanks to my fellow monks for sharing tricks and treats that led to the following:
#!/usr/bin/perl -wire $_=q|$/="J";$\=",";$s=kpjo"",nbq{ $_+=79;dis}nbq{ pse}tqmju//,"4*(/;87 +(";@u=tpsu nbq{jg(n*^\x$*n){$_}}lfzt%{*::};tvc'v{$"}tvc't{$^I.tvctus$s,5,7}tvc'k{ +$u[-7].$^I . $u[ -35 ] } tvc'P{$^I.tvctus$s,2,6}tvc'm{$u[-4].$u[-5].$u[-3].$/}qsj +ou nbq{jg( n#bdl#){$_}fmtf{$_.=&v} }nbq{~~sfwfstf}(m,&t,&k,&P);|;$e=q=fho'e{49}fh +o'n{e()-1} fho'o{n( )-1}fho'p{o( )+3}fho'q{0}=;$e=~y/a-z/n-za-m/;eval$e;eval join +'',map{if( m|^\d+$|){pack'c',$_}else{$_}}(22+c( )+r( ),b(),(~~join'',map{$a=$_+a( +);$a=pack( 'c',$a);$a=~s{(b|2)}[$1-];$a}(c(),24+c(),r(),2,9,d(),1)),b(),(~~join'' +,map{$b=$_ +r();$b=pack('c',$b);$b=~s=(a|0)=$1-=;$b}( a(), 24 + r(), -1,8 ) ), b +() ); eval
I kept thinking at each stage "well, that's entirely too obvious" so I just kept at it, adding more misdirection.

Let me know if this is confusing as intended, or as plain as the nose on my face.

Thanks (and happy new year!)


Replies are listed 'Best First'.
Re: first posted obfu, explanation
by chargrill (Parson) on Jan 17, 2006 at 19:02 UTC
    I just thought I'd post the steps I took to create this.

    This is all pretty much a spoiler, so I'm tucking it all away into a readmore.

    Many thanks to the following monks, tidbits, and snippets: gmax and their post Structured obfuscation - the fifth level of obfuscation listed there in particular, and in Writing highly obfuscated code in Perl there are many gems including the ~~ for scalar substitution, and my inspiration for using $^I.

    Hopefully, it's not bad form to post the explanation of my obfuscation to my post without giving anyone else the chance to do so :)

Re: first time caller, long time listener
by jdalbec (Deacon) on Jan 04, 2006 at 20:27 UTC
    I was confused. I had to run it through perltidy twice while deobfuscating, and even then I had to ask in the chatterbox about the
    sub'x{...} syntax.
    Also, I don't think I've seen
    used before. Well done!++
      Drat. All I had was this: old obfu tricks revealed - I wouldn't've minded seeing the explanation as to WHY it's acceptable syntax :)

      As far as $^I... Really? After all I've read about fans of obfu searching perldoc perlvar for vars to exploit...

      Thanks for the ++. I hope to produce more fine nuggets of misleading and hard to follow code.

      Oh. And stuff that's actually helpful for people too. ;)