Unique

Статус
  • Активный

Последние сообщения Unique

  • PHP для идиотовраспределенная система подбора пароля • 10 октября 2007 г. 19:16

    <?php /* вывод формы для выбора метода перебора */ echo ' <form action=md5.php method=POST> <table border=1 align=center width=60%> <tr bgcolor=#ED9F4C align=center> <td><h3><input type=radio name=method checked=1 value=brute> Прямой перебор</h3>&l...

    <?php

    /* вывод формы для выбора метода перебора */
    echo '
    <form action=md5.php method=POST>
    <table border=1 align=center width=60%>
    <tr bgcolor=#ED9F4C align=center>
    <td><h3><input type=radio name=method checked=1 value=brute> Прямой перебор</h3></td>
    <td><h3><input type=radio name=method value=dict> Перебор по словарю</h3></td>
    </tr>';

    echo '
    <tr bgcolor=#FBFBD1>
    <td valign=top>
    Количество символов: от <input type=text value='.(!empty($_POST['min'])?$_POST['min']:'1').' name=min size=2 maxlength=2> до <input type=text value='.(!empty($_POST['max'])?$_POST['max']:'3').' name=max size=2 maxlength=2><br>
    Использовать символы:<br>
    <input type=checkbox checked=true name=big_AZ> A - Z<br>
    <input type=checkbox checked=true name=small_az> a - z<br>
    <input type=checkbox checked=true name=digits> 0 - 9<br>
    <input type=checkbox checked=true name=spec> <input type=text value="!@#$%^&*()_-" name=spec_str><br>

    </td>
    <td valign=top>Адрес словаря: <input type=text value="http://" name=path2dic></td>
    </tr>
    </table>';
    echo '
    <p align=center>
    MD5-хэш: <input type=text name=hash size=40 maxlength=32 value='.(!empty($_POST['hash'])?$_POST['hash']:'').'>
    <br><br>
    <input type=submit value="Начать перебор">
    </p>
    </form>';
    /* проверка, выбран ли метод перебора */
    if (!empty($_POST['method']))
    {
    /* проверка, указан ли хэш */
    if (!empty($_POST['hash']))
    $hash = $_POST['hash'];
    else
    {
    echo 'Ошибка: не введен хэш!';
    exit;
    }
    /* задаем начальные значение для пароля и количества комбинаций*/
    $pass = 'не найден';
    $combs = 0;
    /* проверка, выбран ли метод перебора */
    if (!empty($_POST['method']))
    {
    /* проверка, указан ли хэш */
    if (!empty($_POST['hash']))
    $hash = $_POST['hash'];
    else
    {
    echo 'Ошибка: не введен хэш!';
    exit;
    }
    /* задаем начальные значение для пароля и количества комбинаций*/
    $pass = 'не найден';
    $combs = 0;
    if ($_POST['method'] == 'brute')
    {
    //строка символов, которые допустимы в пароле
    $str = '';

    //подключение символов от A до Z
    if (!empty($_POST['big_AZ']) && $_POST['big_AZ'])
    for($i=65;$i<91;$i++)
    $str .= chr($i);

    //подключение символов от a до z
    if (!empty($_POST['small_az']) && $_POST['small_az'])
    for($i=97;$i<123;$i++)
    $str .= chr($i);

    //подключение цифр от 0 до 9
    if (!empty($_POST['digits']) && $_POST['digits'])
    $str .= '0123456789';

    //подключение символов, которые ввел пользователь
    if (!empty($_POST['spec']) && $_POST['spec'] && !empty($_POST['spec_str']))
    $str .= $_POST['spec_str'];

    //проверка на пустую строку
    if ($str == '')
    {
    echo 'Ошибка: не выбраны символы для перебора!';
    exit; //выход
    }

    //проверка, заданы ли значение длины пароля
    if (empty($_POST['min']) || empty($_POST['max']))
    {
    echo 'Ошибка: не задана одна из величин!';
    exit;
    }

    $min = $_POST['min'];
    $max = $_POST['max'];

    //проверка на размеры минимального и максимального значений
    if ($min>$max)
    {
    echo 'Ошибка: неверно заданы величины!';
    exit;
    }

    //подсчет количества возможных сочетаний
    for($i=$min;$i<=$max;$i++)
    $combs += pow(strlen($str),$i);

    $l = strlen($str);
    $a[100][2] = '';
    $c[100] = 0;
    $y = 0;

    /* перебор всех возможных сочетаний символов */

    for($m=$min;$m<=$max;$m++)
    {
    $inc = $m;
    for($f=0;$f<100;$f++)
    $c[$f] = 0;

    for($j=0;$j<$l;$j++)
    {
    $a[$j][1] = $str[$j];
    $a[$j][2] = $j;
    }

    do
    {
    $cur = '';
    for ($j=0;$j<$inc;$j++){
    for ($k=0;$k<$l;$k++){
    if ($c[$j]==$a[$k][2])
    {
    $cur.=$a[$k][1];
    $k=$l+1;
    }
    }
    }
    //если хэш текущей строки равен указанному хэшу
    if ($_POST['hash'] == md5($cur))
    {
    $pass = $cur; //запоминаем текущую строку как пароль
    break; //прерываем выполнение цикла перебора
    }

    $c[$inc-1]+=1;
    for ($j=$inc-1;$j>0;$j–){
    if ($c[$j]>$l-1){
    $c[$j]=$c[$j]-$l;
    $c[$j-1]=$c[$j-1]+1;
    }
    }
    }
    while ($c[0]<$l);
    //если пароль найден
    if ($pass != 'не найден')
    break; //прерываем выполнение цикла
    }

    }
    if ($_POST['method'] == 'dict')
    {
    //проверка, указан ли путь к словарю
    if (!empty($_POST['path2dic']))
    {
    $path2dic = $_POST['path2dic'];
    //заносим все слова из файла в массив
    $words = @file($path2dic) or die('Ошибка: словарь не найден!');
    //подсчет количества слов
    $combs = count($words);

    $pass = '';
    //перебор массива
    for($i=0;$i<$combs;$i++)
    {
    //если идентичный хэш найден
    if (md5(trim($words[$i])) == $hash)
    {
    //запоминаем пароль
    $pass = trim($words[$i]);
    //заканчиваем перебор
    break;
    }
    }
    }
    }
    echo '<table border=1><tr><td>';
    echo 'Кол-во комбинаций: <font color=green>'.$combs;
    echo '</font></td></tr><tr><td>Пароль: <font color=red>'.$pass;
    echo '</font></td></tr></table>';
    }
    ?>

    А вот насчет того, чтобы сделать ее еще и распределенной - вообще не догоняю
  • PHP для идиотовраспределенная система подбора пароля • 9 октября 2007 г. 18:43

    Думаешь мне по приколу сидеть и ломать голову уже месяц над этой задачей. Просто эта задача - вопрос жизни и смерти. Если не сдам в четверг - вылет мне обеспечен из универа. эта задача - условие для дальнейшего продолжения учебы….
    Думаешь мне по приколу сидеть и ломать голову уже месяц над этой задачей. Просто эта задача - вопрос жизни и смерти. Если не сдам в четверг - вылет мне обеспечен из универа. эта задача - условие для дальнейшего продолжения учебы….
  • PHP для идиотовраспределенная система подбора пароля • 9 октября 2007 г. 18:25

    Надо создать распределенную систему подбора пароля. В роли исходной информации выступают пароль, зашифрованный алгоритмом MD5, длина пароля, используемый алфавит. Программу подбора пароля желательно написать на php. Типа один комп одну часть пароля подбирает, второй - другую,тртий-третью и т.д. А...
    Надо создать распределенную систему подбора пароля. В роли исходной информации выступают пароль, зашифрованный алгоритмом MD5, длина пароля, используемый алфавит. Программу подбора пароля желательно написать на php. Типа один комп одну часть пароля подбирает, второй - другую,тртий-третью и т.д.
    Алгоритм шифрования MD5 приведен по адресу http://quazer.ssea.ru/teach/tnp/

    Мучаюсь около месяца и ничего не могу сделать….
    Может это для кого-то как орешки, поэтому помогите пожалуйтса, срочно нужно.