Итак, есть этот сайт (http://md5decrypter.co.uk), который, учитывая хеш-память md5, попытается вернуть исходную строку.
Есть ли API или кто-то создал класс PHP для работы с ним? Я не могу найти …
Прежде, спросите вы, позвольте мне заверить вас, что у меня нет злонамеренных намерений.
Заранее спасибо.
Несмотря на это, парень из md5decryptor хорош, он не будет предоставлять доступ к своему ресурсу через HTTP только потому, что вы спрашиваете. Как и любой другой, вы можете использовать общедоступный webinterface, который требует captcha – в котором говорится все.
Или, короче говоря: Нет, там нет API-интерфейса PHP.
Однако почему бы вам не запустить свой собственный? Это довольно тривиально:
$decryptors = array('Google', 'Gromweb'); foreach ($hashes as $hash) { echo "$hash"; foreach($decryptors as $decrytor) { if (NULL !== ($plain = MD5Decryptor::plain($hash, $decrytor))) { echo " - found: $plain ($decrytor)"; break; } } echo "\n"; }
Вывод:
fcf1eed8596699624167416a1e7e122e - found: octopus (Google) bed128365216c019988915ed3add75fb - found: passw0rd (Google) d0763edaa9d9bd2a9516280e9044d885 - found: monkey (Google) dfd8c10c1b9b58c8bf102225ae3be9eb - found: 12081977 (Google) ede6b50e7b5826fe48fc1f0fe772c48f - found: 1q2w3e4r5t6y (Google)
Те, кого вы не можете напрямую просмотреть, можно вставить на этом сайте вручную. Имейте в виду, если больше людей думают, как вы, все больше и больше сайтов будут падать (большинство из них уже есть).
abstract class MD5Decryptor { abstract public function probe($hash); public static function plain($hash, $class = NULL) { if ($class === NULL) { $class = get_called_class(); } else { $class = sprintf('MD5Decryptor%s', $class); } $decryptor = new $class(); if (count($hash) > 1) { foreach ($hash as &$one) { $one = $decryptor->probe($one); } } else { $hash = $decryptor->probe($hash); } return $hash; } public function dictionaryAttack($hash, array $wordlist) { $hash = strtolower($hash); foreach ($wordlist as $word) { if (md5($word) === $hash) return $word; } } } abstract class MD5DecryptorWeb extends MD5Decryptor { protected $url; public function getWordlist($hash) { $list = FALSE; $url = sprintf($this->url, $hash); if ($response = file_get_contents($url)) { $list[$response] = 1; $list += array_flip(preg_split('/\s+/', $response)); $list += array_flip(preg_split('/(?:\s|\.)+/', $response)); $list = array_keys($list); } return $list; } public function probe($hash) { $hash = strtolower($hash); return $this->dictionaryAttack($hash, $this->getWordlist($hash)); } } class MD5DecryptorGoogle extends MD5DecryptorWeb { protected $url = 'http://www.google.com/search?q=%s'; } class MD5DecryptorGromweb extends MD5DecryptorWeb { protected $url = 'http://md5.gromweb.com/query/%s'; }
BozoCrack – это мертвый простой рубиновый скрипт, который использует Google как радужный и пугающе хорош при взломе несогласованных паролей MD5. Глядя на код, его не должно быть слишком сложно перенести на PHP.
PS: каждый, кто использует несогласованный MD5 в качестве алгоритма хэширования паролей, должен иметь свои взломанные пароли, один на один … не используйте md5, используйте bcrypt !
Вы всегда можете сделать свой собственный:
<?php //From file or some John the ripper piped input $wordlist=file('some_word_list.lst'); foreach ($wordlist as $word){ $sql="INSERT INTO table (plain_word,hashed_word)values('$word','".md5($word)."')"; ... } ?>