пятница, 27 сентября 2013 г.

Брут (подбор) пароля по md5 php скриптом


Брут (подбор) пароля по md5 php скриптом



// Устанавливаем неограниченное время выполнения скрипта
  set_time_limit(0);
  // Читаем пароли из файла password
  $pass = file("password.txt");
  foreach($pass as $password)
  {
    // Замеряем время, затраченное на подбор пароля
    $begin = time();
    echo decrypt_md5(trim($password),"");
    $end = time();
    echo "  (На подбор затрачено ".($end - $begin)." секунд) <br>";
  }
  // Функция посимвольного перебора пароля
  // $pass - расшифровываемый пароль
  // $answer - текущий ответ, при первом вызове - пустая строка
  function decrypt_md5($pass, $answer)
  {
    $arr = 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');
    // Будем считать, что пароль не превышает
    // 4 символов
    $max_number = 3;
    if(strlen($answer) > $max_number) return;
    for($j = 0; $j < count($arr); $j++)
    {
      $temp = $answer.$arr[$j];
      if(md5($temp) == $pass) return $temp;
      // Рекурсивно вызываем фукнцию для увеличения
      // длины подбираемого пароля
      $result = decrypt_md5($pass, $temp);
      // Если функция возвращает непустую строку,
      // следовательно, найден ответ и дальше искать
      // не следует
      if(strlen($result) > 0) return $result;
    }
  }


3 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. М.Кузнецов, И.Симдянов "Головоломки на PHP"

    Подбор пароля по словарю
    ";
    }

    // Функция посимвольного перебора пароля
    // $pass - расшифровываемый пароль
    // $answer - текущий ответ, при первом вызове - пустая строка
    function decrypt_md5($pass)
    {
    // Переносим содержимое словаря в массив
    $dict = file("words.txt");
    // В цикле подбираем пароль
    foreach($dict as $word)
    {
    if(md5(trim($word)) == $pass) return $temp;
    }
    }
    ?>


    Файл password
    PHP:

    ee11cbb19052e40b07aac0ca060c23ee
    dd97813dd40be87559aaefed642c3fbb
    8dbc672497bdc46f88e864bb1121232c
    3e10f8c809242d3a0f94c18e7addb866

    ОтветитьУдалить
    Ответы
    1. // Устанавливаем не ограниченное время выполнения скрипта
      set_time_limit(0);

      // Читаем пароли из файла password
      $pass = file("password");
      foreach($pass as $password)
      {
      // Замеряем время, затраченное на подбор пароля
      $begin = time();
      echo decrypt_md5(trim($password));
      $end = time();
      echo " (на подбор затрачено ".($end - $begin)." секунд)
      ";
      }

      Удалить

Постоянные читатели

Популярные сообщения