Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Another First JAPH

by life_monger (Hermit)
on Nov 27, 2000 at 23:03 UTC ( [id://43530]=obfuscated: print w/replies, xml ) Need Help??

#!/usr/bin/perl -w use strict; $_="crypt:nhftlkkmuJAABQcEaionjiftapyvreAAAIGoLUlaA5x8A7x6A2x11A7"; $^='(.{8})(..)';/(.{5}).$^$^$^$^(.{15})/;$_=join$",unpack$10,join'', eval"$1('$2','$3'),$1('$4','$5'),$1('$6','$7'),$1('$8','$9')"; s:^:-:;do{s?-(.)(.)?$2$1-?}until(/-$/);s+-$+\n+;print

Any and all comments are welcome and appreciated.

Replies are listed 'Best First'.
Re: Another First JAPH
by Dominus (Parson) on Nov 28, 2000 at 01:48 UTC
    I'm delighted at the way you got the crypt() output to come out the way you wanted it to. How did you arrange that? Did you just use trial and error to try input strings until you found the ones you needed? Or is there something clever going on that I missed?

    If I were doing this, I would have mixed up the $2... variables:

    eval"$1('$6','$7'),$1('$2','$3'),$1('$4','$9'),$1('$8','$5')";
    and then permuted the initial value for $_ to match the new order, but that's just me.

      I just used brute force to get the results I wanted. You're not missing anything :)

      I thought, after posting, about messing around with the eval, but someone had something better for me to do :)

      Here's the brute force hack, and I do mean hack, I used to get the right data to make it work. I'm sure there are much quicker ways of doing this, but I had CPU cycles and time to kill. It took less than 24 hours on my puny box. Further chaos could be created by pushing for more "random" strings, but that just seemed like it would try my patience too much. I didn't bother cleaning it up much, but here it is FWIW.

      #!/usr/bin/perl -w use strict; my @foo; my $salt = 'ja'; my $match = 'ph'; for ('A'..'Z','a'..'z') { $foo[0] = $_; for ('A'..'Z','a'..'z') { $foo[1] = $_; for ('A'..'Z','a'..'z') { $foo[2] = $_; for ('A'..'Z','a'..'z') { $foo[3] = $_; for ('A'..'Z','a'..'z') { $foo[4] = $_; for ('A'..'Z','a'..'z') { $foo[5] = $_; for ('A'..'Z','a'..'z') { $foo[6] = $_; for ('A'..'Z','a'..'z') { $foo[7] = $_; if ( crypt(join('', @foo), $salt) =~ /$match/) { print "Result: ", join('', @foo, "\n"); exit; } } } } } } } } }
        That works, but here's an alternative that may run faster.

        The code on that page isn't quite what you want, but it's close: It checks all possible strings of 8 characters. You would probably want to fix up the code to only do the letters. If you did that, you would be able to get rid of the map. Of course you'd want to change the success condition also.

        I'm really glad we got to discuss this, because up until now I thought the code on that page was completely useless, and now I know it's only almost completely useless.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2025-07-11 23:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.