2008-01-05, 23:31
				
				
				
	
					
					 
					#13
					
				
				
		
	
				PHP är faktiskt rätt långsamt märkte jag. Perl däremot är lika snabbt som C på sådana här saker. Inte lika snabbt som mdcrack, men ändå riktigt snabbt. Testa nedanstående perl-script för att leta efter salt-strängen. Jag ligger på 5 tecken nu och har inte hittat det än. Kanske är den rätta algoritmen inte med, eller så har de en låångt salt-sträng. Ändra i try_salt vilka algoritmer som ska testas. Om du lyckas googla fram rätt algoritm, kommentera bort de andra algoritmerna så går det snabbare.
	
	
		
			
			
			
		
	Kod:
	
	#!/usr/bin/perl -w
use Digest::MD5 "md5_hex";
use sigtrap qw(die normal-signals);
@arr = split(//, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#¤%&/()=?`´^¨~*_-:.;, ');
$pass = "a";
$hash = "518b7e4def1438cf4f8e6a37433d538c";
# Testa några varianter utan salt
print " -> " . $hash . "\n";
print "MD5(pass) = " . md5_hex($pass) . "\n";
print "MD5(MD5(pass)) = " . md5_hex(md5_hex($pass)) . "\n";
print "MD5(hex(pass)) = " . md5_hex(unpack('H*', $pass)) . "\n";
print "MD5(hex(MD5(pass))) = " . md5_hex(unpack('H*', md5_hex($pass))) . "\n";
# Går nog att loopa smartare..
$tries = 0;
print "1 char\n";
foreach $i (@arr) {
    try_salt($i);
}
print "2 chars\n";
foreach $i (@arr) {
    foreach $j (@arr) {
	try_salt($i . $j);
    }
}
print "3 chars\n";
foreach $i (@arr) {
    foreach $j (@arr) {
	foreach $k (@arr) {
	    try_salt($i . $j . $k);
	}
    }
}
print "4 chars\n";
foreach $i (@arr) {
    foreach $j (@arr) {
	foreach $k (@arr) {
	    foreach $l (@arr) {
		try_salt($i . $j . $k . $l);
	    }
	}
    }
}
print "5 chars\n";
foreach $i (@arr) {
    foreach $j (@arr) {
	foreach $k (@arr) {
	    foreach $l (@arr) {
		foreach $m (@arr) {
		    try_salt($i . $j . $k . $l . $m);
		}
	    }
	}
    }
}
print "6 chars\n";
foreach $i (@arr) {
    foreach $j (@arr) {
	foreach $k (@arr) {
	    foreach $l (@arr) {
		foreach $m (@arr) {
		    foreach $n (@arr) {
			try_salt($i . $j . $k . $l . $m . $n);
		    }
		}
	    }
	}
    }
}
sub try_salt {
    $salt = shift;
    # MD5($salt.$pass)
    if ($hash eq md5_hex($salt . $pass)) {
	print "MD5($salt.$pass): " . $salt . "\n";
	exit 0;
    }
    # MD5($pass.$salt)
    if ($hash eq md5_hex($pass . $salt)) {
	print "MD5($salt.$pass): " . $salt . "\n";
	exit 0;
    }
    # MD5($salt.MD5($pass))
    if ($hash eq md5_hex($salt . md5_hex($pass))) {
	print "MD5($salt.MD5($pass)): " . $salt . "\n";
	exit 0;
    }
    # MD5(MD5($pass).$salt)
    if ($hash eq md5_hex(md5_hex($pass) . $salt)) {
	print "MD5(MD5($pass).$salt): " . $salt . "\n";
	exit 0;
    }
    # MD5(MD5($salt.$pass))
    if ($hash eq md5_hex(md5_hex($salt . $pass))) {
	print "MD5(MD5($salt.$pass)): " . $salt . "\n";
	exit 0;
    }
    # MD5(MD5($pass.$salt))
    if ($hash eq md5_hex(md5_hex($pass . $salt))) {
	print "MD5(MD5($pass.$salt)): " . $salt . "\n";
	exit 0;
    }
    $tries++;
}
END { print "tries = $tries\n"; }
 
					 
					
 
					 
					 
  skulle vara guld värt!
  skulle vara guld värt!
			 
					