|
|
|
| Ответ 002 на задачу N 4.
С условиями задачи можно ознакомится по ссылке.
Пароли:
Пароль №1: user
Пароль №2: igor
Пароль №3: lena
Пароль №4: atom
Время подбора:
14.7724061012
Код:
<?php
function timer()
{
$t=explode(' ',microtime());
$subtime=$t[1].substr($t[0], 1);
return $subtime;
}
$total_start=timer();
?>
<html>
<head>
<title>Подбор паролей</title>
</head>
<body bgcolor=silver>
<center>
<?php
// Начальные условия задачи
//-------------------
// Зашифрованные пароли
$crypted[1]="ee11cbb19052e40b07aac0ca060c23ee";
$crypted[2]="dd97813dd40be87559aaefed642c3fbb";
$crypted[3]="8dbc672497bdc46f88e864bb1121232c";
$crypted[4]="3e10f8c809242d3a0f94c18e7addb866";
// Максимальная длина пароля
$limit=4;
//-------------------
// Воспользуемся тем, что РНР работает с буквами так же, как с числами
//-----
// Формируем "максимальный" пароль
$char_limit="";
$c=1;
for ( ; $c <= $limit; $c++)
{
$char_limit .= 'z';
}
// Для четырех символов будет zzzz.
$clear_start=timer();
$stop=false;
$i="a";
for ( ; $i <= $char_limit; $i++)
{
foreach($crypted as $key => $item)
{
if (md5($i) == $item)
{
echo "Пароль №".$key.": ".$i.'<br>';
unset($crypted[$key]); // удаляем найденный пароль из массива
if (empty($crypted))
{
$stop=true; // флаг прекращения внешнего цикла
break;
}
}
}
if ($stop) break;
}
$end=timer();
$total=$end-$total_start;
$clear=$end-$clear_start;
?>
<p>
Всего времени (с инициализацией всех переменных): <?=$total?><br>
"Чистое" время (только брутфорс): <?=$clear?> <br>
На инициализацию потрачено: <?=$total-$clear?>
<center>
</body>
</html>
|
http://www.softtime.ru/info/task.php?id_article=74 | |
|
|
|
|
|
|
|
для: SoftTime
(06.02.2006 в 13:42)
| | Отсутствие вложенных циклов - это очень хорошо, пароли перебираются в куче - тоже очень хорошо - это позволяет сэъкономить время, ведь для всех четырёх паролей нужно будет перебирать одни и те же комбинации, так почему это не сделать в один присест. Однако скрипт хитроват (в плохом смысле слова) и расширить диапазон, особенно на русские символы даже не знаешь с налёту как... | |
|
|
|
|
|
|
|
для: SoftTime
(06.02.2006 в 13:42)
| | Если чесно я сходу не понимаю как это скрипт работает =)
Комментарии по алгоритму были бы кстате.
И как отметил cheops, за идею перебора сразу всех паролей +1 | |
|
|
|