Недавно я наткнулся в инете на задачку подбора паролей. Будем считать, что мы забыли свой пароль,
который вытащили из файла .htpasswd и который зашифрован по алгоритму MD5. Опять же будем считать, что мы,
как и большинство пользователей имели осмысленный пароль в виде какого-нибудь английского слова.
Попробуем-ка его подобрать по словарю. Стандартный Linux словарь (linux.words) можно скачать здесь.
<? function pass_dict ($hash) { //вычисляем начальное время, необходимое для расчета общего времени выполнения скрипта $start_time = microtime(); $start_array = explode(" ",$start_time); $start_time = $start_array[1] + $start_array[0];
//открываем файл словаря из стандартного дистрибутива линукса $f = fopen("linux.words","r") or die("ошибка"); while (!feof($f)) { $str = strtolower(fgets($f)); //удаляем лишние пробелы и символы конца строки $str = trim($str); $strmd5 = md5($str); if ($strmd5 == $hash) $pass = $str;
if (isset($pass)) { echo "password = ".$pass; $end_time = microtime(); $end_array = explode(" ",$end_time); $end_time = $end_array[1] + $end_array[0]; $time = $end_time - $start_time; echo "<br><center>Найдено за $time секунд!</center>"; fclose($f); return; } }
$end_time = microtime(); $end_array = explode(" ",$end_time); $end_time = $end_array[1] + $end_array[0]; $time = $end_time - $start_time; echo "<br><center>Не найдено за $time секунд!</center>"; fclose($f); return; } pass_dict("e206a54e97690cce50cc872dd70ee896"); ?>
Автор: Юферев Денис.
|