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

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

 

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

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

тема: Ответ 006 на задачу N 5
 
 автор: SoftTime   (10.02.2006 в 02:54)   письмо автору
 
 

Ответ 006 на задачу N 5.
С условиями задачи можно ознакомится по ссылке.
Мой второй вариан (первый был небольшой ошибкой) . Второй вариант немного по лучше.

password3 = cluster hesh = 06b2d4b91b5c9eaa8c20a1c270f95b3c
password4 = linux hesh = e206a54e97690cce50cc872dd70ee896
password5 = lisbon hesh = fbfa6902f089e5a0fa2424bd460ecfd0
password2 = pyramid hesh = 437233c74e25fe505293cd2e8ecc2696
password1 = subprogram hesh = fb28e9240e83a5264566de844cc45523
time=0.977846 s.


<?
   $server_dic 
"linux.words";     // Словарь на сервере.
?>
<html>
<head><title>пороль по словарю</title></head>
<body>
<!-- Форма для выбора словаря. --!>
<form enctype='multipart/form-data' name=form action="slovo.php" method=post>
  <br>Выберите словарь по которому будет осуществляться подбор</br>
  Если ничего не выбрано, будет использоватся словарь сервера <?echo $server_dic?>
  <br>
  <br><input type=file name="slovar"></br>
  <br><input name="knop" type="submit" value="Искать">
</form>
<?
if (isset($_POST['knop'])) // Т.е. нажата кнопка.
{
   function 
gettime()      // Функция подсчёта времени.
   
{
      
$part_time explode(' ',microtime());
      
$real_time $part_time[1].substr($part_time[0],1);
      return 
$real_time;
   }
   
$start_time gettime();// Начальное время
   
$hesh[1] = "fb28e9240e83a5264566de844cc45523"// Наши хеши.
   
$hesh[2] = "437233c74e25fe505293cd2e8ecc2696";
   
$hesh[3] = "06b2d4b91b5c9eaa8c20a1c270f95b3c";
   
$hesh[4] = "e206a54e97690cce50cc872dd70ee896";
   
$hesh[5] = "fbfa6902f089e5a0fa2424bd460ecfd0";
   if (!empty(
$_FILES['slovar']['tmp_name']))     // Если на сервер передавался словарь,
   
{$file_name $_FILES['slovar']['tmp_name'];}  // то будем работать с его временной копией.
   
else                                           // Если нет,
   
{
      if (
is_file($server_dic))                // проверяем существование словаря на сервере,
      
{
         echo 
"Словарь не был передан, по-этому был исполбзован словарь $server_slovar<br><br>";
         
$file_name $server_dic;             // работаем с ним.
      
}
      else {echo 
"Словарь не передан, словарь сервера $server_slovar не обнаружен<br>";exit;}
   }
   
$file_array file($file_name);                // Загоняем весь словарь в массив.
   
if(!$file_array) {echo("Ошибка открытия файла<br>");exit;}
   
$cou count($file_array);                     // Выесняем кол-во элементов массива.
   
for($i=0$i $cou$i++)
   {
      
$file_array[$i] = rtrim($file_array[$i]);   // Удаляем переводы строк.
   
}
   for (
$i 0$i <= $cou$i++)                 // Перебор массива строк.
   
{
      
$h md5(strtolower($file_array[$i]));      // Переводим слово в нижний регистр, вычисляем хеш.
      // Используем foreach т.к. кол-во элементов массива будет меняться.
      
foreach ($hesh as $key => $val)
      {
         if (
$h === $val)
         {
            echo 
"password$key = ".strtolower($file_array[$i])." &nbsp; &nbsp; hesh = ".$val."<br>";
            
// Уничтожаем из массива хешей найденый хеш, чтобы сократить кол-во проходов цикла
            
unset ($hesh[$key]);
            break;
         }
      }
   }
   
// Уничтожаем временный файл, если он есть.
   
if (!empty($_FILES['slovar']['tmp_name'])) {unlink($_FILES['slovar']['tmp_name']);}
   
$stop_time gettime();                       // Конечное время.
   
echo "time=".(bcsub($stop_time,$start_time6))." s.";  // Выводим время работы скрипта.
}
?>
</body></html>


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

   
 
 автор: cheops   (12.02.2006 в 23:41)   письмо автору
 
   для: SoftTime   (10.02.2006 в 02:54)
 

Хм... немного громоздко, складывается впечатление о лишних пассах. Цикл
<?php
   
for($i=0$i $cou$i++) 
   { 
      
$file_array[$i] = rtrim($file_array[$i]);   // Удаляем переводы строк. 
   
}
?>

совершенно лишний, так как словарь из Linux и \r в конце слов отсутствует.

   
 
 автор: Necro   (13.02.2006 в 00:08)   письмо автору
 
   для: cheops   (12.02.2006 в 23:41)
 

Перевод строки в этом словаре точно есть (во всяком случае в том что я скачал). У меня без этого цикла вообще паролей не находит.

   
 
 автор: cheops   (13.02.2006 в 00:54)   письмо автору
 
   для: Necro   (13.02.2006 в 00:08)
 

Да с этим заявлением я погорячился, однако нет досрочного выхода, если все пароли найдены.

   
Rambler's Top100
вверх

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