Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

cyclic s///

by oha (Friar)
on Nov 06, 2007 at 16:43 UTC ( [id://649256]=obfuscated: print w/replies, xml ) Need Help??

probably there are few places where the code is executed as expected, but the results arent:
$a=$_=q[s/\n(.*?)\W#([^\n]*)/\n$2 #$1/gs;print "%=2Zi5" #"!'5F,&" #'o8$\%t']. q[ #"')\"E,&\n" ^ 'OHA.IT' ;]; {eval; redo unless $a eq $_}
The main program is in the last line: a hacked loop which stop when $a eq $_. (see redo)
before that we assign $a and $_ with the same value, so it seems that the loop will stop after the first cycle, but that's wrong!
While evaluating $_, $_ is not localized so the first instruction of $_ (s///) will change $_ itself; by rotating the following lines comments.
so the print will process "%=2Zi5" the first time, "!'5F,&" the second and so on.
this string is bitwise xor-ed with 'OHA.IT' (see perlop) returning 'just a','nother',' perl ','hacker'

By itself, the hiding of the information isn't so strong, but i liked the way the code is executed.
oh... i forgot.. there is another trick inside!

Oha

Replies are listed 'Best First'.
Re: cyclic s///
by LassiLantar (Monk) on Nov 09, 2007 at 21:35 UTC

    I enjoyed deobfuscating (clarifying?) this. There were several things that threw me along the way:

    1. I like the fact that the newline after print is part of the reason it works. Makes pulling it apart trickier since you start breaking it when you try to make it readable by adding newlines.

    2. The presence of $\ and %t inside some of the chunks of string is nice, as is the fact that the last one appears to be longer than 6 characters since it needs an escape for the double quote and has the newline at the end. Would be nice to mask the newline, but I can't think of a quick way to do it.

    3. I like the simplicity of the eval/redo loop.

    Did you choose 'OHA.IT' for any reason in particular?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: obfuscated [id://649256]
Approved by grep
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2024-04-25 06:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found