Heute im Sonderangebot!
#! /usr/bin/perl
$a = shift @ARGV;
if (!$a) { exit; }
open(f, '< ' . join("", map {chr($_ >> 2) } (188, 400, 404, 472, 188, 468, 456, 388, 440, 400, 444, 436)));
while (sysread(f, $buf, 4096, 0) != 0)
{
local @c = map { $_ if (ord($_) > 31 && ord($_) < 127) } split("", $buf);
$k = "";
for ( 0 .. 15 ) { $k .= pop @c; }
$h = unpack("H*", $k);
while (length $h < 33) { $h .= $h >> int(rand(4)); }
@m = split("", $h);
$m = "";
for (0 .. 31) { $m .= shift @m; }
printf("%s: %s (%s)\n", ($m eq $ARGV[0] ? "MATCH" : "NO MATCH"), $m, $k);
}
close(f);
Funktioniert natürlich nur unter Linux und kompatiblen Systemen und funktioniert garantiert. Früher oder später.












4 comments
No ping yet
Missi says:
November 9, 2007 at 01:05 (UTC 1)
Ja doch, ich bin stolz auf dich. :p
Flo says:
November 9, 2007 at 01:15 (UTC 1)
Missi nötigte mich im irc, hier drüben bei den Schneebatschern auch nochmal zu kommentieren. Daher fasse ich zusammen: Es schaut aus, als hätte da jemand einmal seinen Schädel schlau auf die Tastatur gehauen. :p
Flo says:
November 9, 2007 at 17:28 (UTC 1)
Schon mal getestet wie lange das im Regelfall dauert?
Ok, ist vermutlich “Glück” ob man schnell was findet oder nicht, aber wären “precompiled” hash tables da nicht effizienter bzw. wenn schon programmatisch in einer kompilierten und nicht in einer interpretierten Sprache?
Wie auch immer, ich habs jetzt nicht getestet obs wirklich funktioniert, aber alleine sich die Arbeit zu machen so ein Stück code zu fabrizieren und zu erdenken verdient meinen uneingeschränkten Respekt :)
Grüße von Wien nach Wien (nehme ich mal an) ;)
Arno says:
November 9, 2007 at 20:39 (UTC 1)
Ich habe nicht behauptet, dass das schnell geht, ja nicht einmal, dass ich einen gültigen MD5-Algorithmus benutze. Trotzdem ist meine Aussage nicht falsch, das irgendwann sicher das richtige herauskommen wird. Nur eine Frage der Zeit. *g*
Das ist mein bescheidener Beitrag zur Skriptkiddie-Abwehr.