Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ответ 009 на задачу N 4
 
 автор: SoftTime   (07.02.2006 в 12:57)   письмо автору
 
 

Ответ 009 на задачу N 4.
С условиями задачи можно ознакомится по ссылке.
1. user - заняло 6.56959199905 сек
2. igor - заняло 2.5124540329 сек
3. lena - заняло 4.22129893303 сек
4. atom - заняло 0.584014177322 сек
Всего сценарий выполнялся 13.8876821995 сек

Можно, конечно уменьшить время, если перебирать только 4х значные пароли. Но раз уж мы не знаем точно длину, то вот так:


<?
$start_time 
microtime();
$start_array explode(" ",$start_time);
$start_time $start_array[1] + $start_array[0];
function 
pass_md5 ($hash)
{
 
$start_time microtime();
 
$start_array explode(" ",$start_time);
 
$start_time $start_array[1] + $start_array[0];
 
$alf = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
 
$acount count ($alf);
 for (
$i=0$i<$acount$i++)
 {
  
$str=$alf[$i];
  if (
md5($str) == $hash)
  {
   echo 
"Gotcha! pass is <font color=red>$str</font>";
   
$end_time microtime();
   
$end_array explode(" ",$end_time);
   
$end_time $end_array[1] + $end_array[0];
   
$time $end_time $start_time;
   echo 
" - Найдено за $time секунд!<br>";
   return;
  }
 for (
$i=0$i<$acount$i++)
  for (
$j=0$j<$acount$j++)
  {
   
$str=$alf[$i].$alf[$j];
   if (
md5($str) == $hash)
   {
    echo 
"Gotcha! pass is <font color=red>$str</font>";
    
$end_time microtime();
    
$end_array explode(" ",$end_time);
    
$end_time $end_array[1] + $end_array[0];
    
$time $end_time $start_time;
    echo 
" - Найдено за $time секунд!<br>";
    return;
   }
  }
 for (
$i=0$i<$acount$i++)
  for (
$j=0$j<$acount$j++)
   for (
$k=0$k<$acount$k++)
   {
    
$str=$alf[$i].$alf[$j].$alf[$k];
    if (
md5($str) == $hash)
    {
     echo 
"Gotcha! pass is <font color=red>$str</font>";
     
$end_time microtime();
     
$end_array explode(" ",$end_time);
     
$end_time $end_array[1] + $end_array[0];
     
$time $end_time $start_time;
     echo 
" - Найдено за $time секунд!<br>";
     return;
    }
   }

 for (
$i=0$i<$acount$i++)
  for (
$j=0$j<$acount$j++)
   for (
$k=0$k<$acount$k++)
    for (
$l=0$l<$acount$l++)
    {
     
$str=$alf[$i].$alf[$j].$alf[$k].$alf[$l];
     if (
md5($str) == $hash)
     {
      echo 
"Gotcha! pass is <font color=red>$str</font>";
      
$end_time microtime();
      
$end_array explode(" ",$end_time);
      
$end_time $end_array[1] + $end_array[0];
      
$time $end_time $start_time;
      echo 
" - Найдено за $time секунд!<br>";
      return;
     }
    }
 }
}

pass_md5('ee11cbb19052e40b07aac0ca060c23ee');
pass_md5('dd97813dd40be87559aaefed642c3fbb');
pass_md5('8dbc672497bdc46f88e864bb1121232c');
pass_md5('3e10f8c809242d3a0f94c18e7addb866');
$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>";

?>


http://www.softtime.ru/info/task.php?id_article=74

   
 
 автор: cheops   (08.02.2006 в 23:43)   письмо автору
 
   для: SoftTime   (07.02.2006 в 12:57)
 

Плохо, что пароли перебираются отдельно и используется большое количество вложенных циклов, но диапазон символов перебора легко расширяем и настраиваем.

   
 
 автор: Artem S.   (09.02.2006 в 00:08)   письмо автору
 
   для: SoftTime   (07.02.2006 в 12:57)
 

Все хорошо, только я бы вынес счет времини из цикла, сократив бы код. А так ничего нового.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования