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

Форум PHP

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

 

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

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

тема: Подбор пароля перебором состоящего из цифр, букв и символов.
 
 автор: Dimon-zmey   (25.12.2010 в 16:55)   письмо автору
 
 

Помогите решить задачу!

Есть пароль зашифрованный двойным md5:

d2753430857961661550d9a5dcfc5d46


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

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 17:23)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 16:55)
 

[поправлено модратором]

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 17:38)   письмо автору
 
   для: neadekvat   (25.12.2010 в 17:23)
 

Да, знаком! Я не знаю как сделать перебор символов.. Я написал скрипт для перебора, но условие, что пароль чисто из цифр, а если еще и буквы и символы.. хз..

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 17:43)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 17:38)
 

Записываете в строку весь возможный алфавит и перебераете себе на здоровье.

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 17:50)   письмо автору
 
   для: neadekvat   (25.12.2010 в 17:43)
 

Вот как я написал:

$pass = "пароль в двойном md5";
$lom = 0;

do
{
$lom = $lom + 1;
$md5 = md5(md5($lom));
}
while($md5 != $pass);

echo $lom;

Что добавить или изменить для перебора символов и букв?

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 17:53)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 17:50)
 

Все изменить.
По условию в слове 5 символов.
То есть вы прогоняете цикл 99999 лишних раз как минимум.
Вообще, задача кажется немного странной. Как минимум.
К тому же, буквы могут быть и верхнего, и нижнего регистра или он таки определен, например, как нижний?

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 17:56)   письмо автору
 
   для: neadekvat   (25.12.2010 в 17:53)
 

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

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 17:58)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 17:56)
 

То есть вы собираетесь подбирать чужие пароли?

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 18:01)   письмо автору
 
   для: neadekvat   (25.12.2010 в 17:58)
 

Да, но не для себя, а для того, если пользователь забыл пароль и не хочет вводить новый, то он нажмёт выслать на почту текущий пароль и запустится скрипт расшифровки..

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 18:08)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 18:01)
 

Во-первых, вы не сможете составить весь алфавит вомзожных символов, т.к. пользователь может ввести что угодно, ведь...
...Во-вторых, вы не имеете права ограничивать пользователя в выборе символов для пароля.
В-третьих, на расшифровку может уйти такая уйма времени, что пользователь проклянет тот момент, когда нажал ссылку "восстановить пароль".
Подытожив, предлагаю отказаться от этой глупой затеи и поступить следующим образом:
пользователю нажимает "восстановить пароль", вводит свой email, на его приходит некий случайный код и ссылка (в ссылке может быть заключен этот код, но на всякий случай следует сделать возможность ввести его в поле на сайте) на страницу, на которой пользователь сам вводит свой новый пароль.

P.S. Захешированная строка - 24-di?

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 18:24)   письмо автору
 
   для: neadekvat   (25.12.2010 в 18:08)
 

Полностью с вами согласен! Да, верно: 24-di, но всё-же.. хотя бы для себя его можно использовать.. хотя.. если пользователю нужен будет старый пароль любыми способами, то он будет готов и час ждать (если укажет примерное количество символов)..

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 18:29)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 18:24)
 

Еще и количество символов попросите? Нет, извините, извините. Я лично не буду помогать конкретно с затеей подбора хэша пароля.

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 18:36)   письмо автору
 
   для: neadekvat   (25.12.2010 в 18:29)
 

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

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 18:38)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 18:36)
 

*затеей подбора пароля по хэшу - оговорился.

Я не единственный участник форума. Возможно, кто-то посчитает это здравой идеей, и она не будет противоречить его принципам, и вам подскажут (или дадут готовый код) решение.

Но я вас призываю еще раз подумать.
А если пользователь ошибется? А если скажет, "где-то между 5-ю и 8-ю символами, и там, кажется, было что-то из спецсимволов". А если у вас обычный хостинг? Неужели игра стоит свеч?

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 18:47)   письмо автору
 
   для: neadekvat   (25.12.2010 в 18:38)
 

Сайт лежит на моем компьютере до полной готовности и в дальнейшем будет перенесён на купленный мной сервер.. Возможно и в правду стоит отказаться от данной затеи.. но для своего развития всё-же пригодится.. Спасибо!

  Ответить  
 
 автор: Valick   (25.12.2010 в 22:07)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 18:24)
 

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

  Ответить  
 
 автор: Trianon   (25.12.2010 в 19:36)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 18:01)
 

Если пользователь забыл пароль, то как он докажет сайту, что является владельцем пароля?

Если сайт будет иметь такой функционал, зачем вообще использовать хеши?
Если сайт держит пароли открытыми, или позволяет расшифровывать их - откуда возьмется доверие к такому сайту?

Я знаю единственное разумное применение этого скрипта - Вы его не назвали.

  Ответить  
 
 автор: Dimon-zmey   (25.12.2010 в 19:48)   письмо автору
 
   для: Trianon   (25.12.2010 в 19:36)
 

Вы что, считаете, что я собираюсь давать доступ к данному скрипту по любому требованию?? Во первых будет проверка e-mail и ответа на вопрос (который пользователь указал при регистрации) и уже потом будет предоставлен выбор: либо ввести новый пароль, либо попытаться расшифровать старый (также будет предупреждение о том, что расшифровка может длится от нескольких секунд, до нескольких часов)..

  Ответить  
 
 автор: Trianon   (25.12.2010 в 19:57)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 19:48)
 

>Вы что, считаете, что я собираюсь давать доступ к данному скрипту по любому требованию??

Я считаю, что требование "узнать забытый пароль" нарушает саму концепцию паролей.
И потакать ему - абсурдно.

  Ответить  
 
 автор: LEM   (25.12.2010 в 21:01)   письмо автору
6.2 Кб
 
   для: Trianon   (25.12.2010 в 19:57)
 


<?php


include 'm.php';


    
// Массив букв и цифр 
 
$ex = array (1,2,3,'a','b','c');
    foreach (
$ex as $v)
    {
        if (
$v == '') continue;
        
$new[] = intval($v);
    }
    
$all count($new);

$combinatorics = new Math_Combinatorics;
foreach(
$combinatorics->permutations($new$all) as $k=>$p
{

  echo 
join(' '$p).'\r\n';
}

?>
// Так можно получить разные варианты
// m.php прилогаю

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 21:05)   письмо автору
 
   для: LEM   (25.12.2010 в 21:01)
 

Что это?

  Ответить  
 
 автор: LEM   (25.12.2010 в 21:10)   письмо автору
 
   для: neadekvat   (25.12.2010 в 21:05)
 

вот автор пишет:
Да, знаком! Я не знаю как сделать перебор символов.. Я написал скрипт для перебора, но условие, что пароль чисто из цифр, а если еще и буквы и символы.. хз..

Я привел пример...

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 21:12)   письмо автору
 
   для: LEM   (25.12.2010 в 21:10)
 

И что ваш пример будет перебирать и что на выходе выдаст?

  Ответить  
 
 автор: Trianon   (25.12.2010 в 21:13)   письмо автору
 
   для: LEM   (25.12.2010 в 21:10)
 

я такого не писал.

  Ответить  
 
 автор: Tamplier   (24.01.2011 в 18:09)   письмо автору
 
   для: Trianon   (25.12.2010 в 19:57)
 

>Я считаю, что требование "узнать забытый пароль" нарушает саму концепцию паролей.
>И потакать ему - абсурдно.

На все 100% верное утверждение!!!

  Ответить  
 
 автор: Tamplier   (24.01.2011 в 17:56)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 18:01)
 

Время выполнение данной задачи, прямо пропорционально её идиотизму!
Куда проще отправить пользователю на ящик ссылку для изменения пароля и создать его с нуля..

  Ответить  
 
 автор: Красная_шляпа   (25.12.2010 в 21:28)   письмо автору
 
   для: Dimon-zmey   (25.12.2010 в 16:55)
 

62 + 2 = 64
64 * 64 * 64 * 64 * 64 = 1 073 741 824 вариантов паролей, а где в паролях тире и подчеркивание используется?

тебе нужно пять вложенных циклов

Пример с тремя(238 328 вариантов) вот:

<?php

$chars 
"1234567890qwertyuiopasdfghjklzxcvbn mQWERTYUIOPASDFGHJKLZXCVBNM";
$chars str_split($chars);
$c count($chars);

for (
$i 0$i $c; ++$i) {
    for (
$k 0$k $c; ++$k) {
        for (
$l 0$l $c; ++$l) {
            
$array[] = $chars[$i].$chars[$k].$chars[$l];
        }
    }
}
print_r($array);


Учитывая что в году 31 536 000 сек времени у тебя на взлом уйдёт даже не знаю

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 21:34)   письмо автору
 
   для: Красная_шляпа   (25.12.2010 в 21:28)
 

$chars = str_split($chars); 
$c = count($chars);

Это лишнее.
$c = strlen($chars); // или mb_

  Ответить  
 
 автор: Trianon   (25.12.2010 в 21:38)   письмо автору
 
   для: Красная_шляпа   (25.12.2010 в 21:28)
 

Вот мое решение одной очень давней задачи.
Там можно и скорость оценить.

  Ответить  
 
 автор: neadekvat   (25.12.2010 в 21:44)   письмо автору
 
   для: Trianon   (25.12.2010 в 21:38)
 

Вот это скорость!

Мне, кстати, первым делом в голову тоже вложенные цикли пришли.
Сколько вам понадобилось времени для второго варианта решения (показанного по ссылке)?

  Ответить  
 
 автор: Trianon   (26.12.2010 в 00:11)   письмо автору
 
   для: neadekvat   (25.12.2010 в 21:44)
 

Понадобилось времени на подбор?
Я и не проверял, это ж от процессора зависит.
А надо было попытаться?

  Ответить  
 
 автор: neadekvat   (26.12.2010 в 00:23)   письмо автору
 
   для: Trianon   (26.12.2010 в 00:11)
 

Времени на приход к такому алгоритму

  Ответить  
 
 автор: Trianon   (26.12.2010 в 01:02)   письмо автору
 
   для: neadekvat   (26.12.2010 в 00:23)
 

А я помню? Это ж почти 4 года назад было - даж обращения к символам строки извратные стоят.
Часа 2-4 наверное.

  Ответить  
 
 автор: neadekvat   (26.12.2010 в 12:13)   письмо автору
 
   для: Trianon   (26.12.2010 в 01:02)
 

Но идея использовать ключи массива в таком качестве - это открытие для меня. Я бы ковырялся с функциями array_*, а так сколько ресурсов экономится.

  Ответить  
 
 автор: Trianon   (26.12.2010 в 12:55)   письмо автору
 
   для: neadekvat   (26.12.2010 в 12:13)
 

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

  Ответить  
Rambler's Top100
вверх

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