PHP скрипты, MySQL, Java, документация Unix, Linux, FreeBSD, Apache, Оптимизация сайта
Библиотека компании MNWhost.RU

Web-development
Shell
PHP
Perl
Java
ASP
VB Script
HTML
XML
WML
Cookies

Документация
FreeBSD
Linux
Apache
Язык UML
Поисковые системы
Модель OSI
CGI
Технология VPN
ADSL
SSI
DNS
Протоколы
Шифрование дисков
Обжим витой пары
Маски сети/подсети

Хостинг MNW.RU
Услуги
Хостинг
Регистрация доменов
Размещение серверов
Аренда серверов


Hosted by MNW

Яндекс цитирования

Подбор пароля по словарю
Недавно я наткнулся в инете на задачку подбора паролей. Будем считать, что мы забыли свой пароль, который вытащили из файла .htpasswd и который зашифрован по алгоритму MD5. Допустим, что у нас был коротенький пасс длиной от 1 до 4х символов латинского алфавита в нижнем регистре - значит нам придется перебрать всего лишь 456976 комбинаций :)

<?
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("e206a54e97690cce50cc872dd70ee896");

?>


Автор: Юферев Денис.
размещение сервера