Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2012, 18:36   #1
NightVamp
Пользователь
 
Регистрация: 06.02.2012
Сообщений: 12
По умолчанию программа для подбора пароля

Нужно написать программу измерения времени при подборе пароля методом перебора при использовании различных линеек символов. Т.е., забить какой-либо пароль в массив и потом путём перебора букв, цифр и символов его подобрать. И в итоге получить время длительности всей этой процедуры. Как это можно реализовать на языке Pascal?
NightVamp вне форума Ответить с цитированием
Старый 06.02.2012, 23:09   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) по известным формулам (см. комбинаторику) вычисляем всё возможное количество вариантов (исходя из длины пароля и используемых символов)

2) запускаем тест на перебор N-го числа паролей (например, 1000 или 10000). получаем среднюю скорость перебора (количество паролей в секунду). Делим общее количество на скорость перебора - получаете требуемое время (сколько потребуется времени, чтобы перебрать все пароли из "данной линейки символов".
всё.


p.s. обычно программы постоянно контролируют прошедшее с начала перебора время и количество перебранных вариантов и, исходя их этого, скорость перебора и требуемое время могут динамически изменяться...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.02.2012, 09:56   #3
NightVamp
Пользователь
 
Регистрация: 06.02.2012
Сообщений: 12
По умолчанию

Не напишете примерный код, если вам не сложно..? Или хотя бы, с помощью каких функций ищется средняя скорость перебора..?
NightVamp вне форума Ответить с цитированием
Старый 07.02.2012, 10:32   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Или хотя бы, с помощью каких функций ищется средняя скорость перебора..?
запоминаете время в начале (перед циклом).
в цикле перебираете N значений.
получаете время после цикла.
вычитаете из второго времени первое ( получается длительность выполнения цикла - t ).
Делите N (число перебранных паролей) на длительность t - получаете ответ:
число паролей в единицу времени (то, в чём у Вас измерялось t),
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.02.2012, 10:51   #5
NightVamp
Пользователь
 
Регистрация: 06.02.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
запоминаете время в начале (перед циклом).
Это начальное время должно же быть равным 0??

Допустим, что пароль состоит из 2 символов, вернее из двух цифр от 1 до 5. Тогда примерный код на Си:

i
Код:
nt parol [2];
int parol1 [2];
for (int i=0;i<1;i++)
scanf ("%i", &parol[i]);  //ввод пароля
t=0;                          //начальное время равно 0
do {
for(int j=1;j<25;j++)   //число перебираемых паролей - 25
}
while (parol[i]=parol1[n]);
???
Дальше не могу понять как узнать время после цикла?? Возможно, я слишком буквально понимаю...

Последний раз редактировалось ACE Valery; 07.02.2012 в 13:48.
NightVamp вне форума Ответить с цитированием
Старый 07.02.2012, 11:25   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Это начальное время должно же быть равным 0??
ну вы же время прочитаете из системных часиков (таймера). Там оно, очевидно, в момент начала цикла будет явно не нулевое. вот и запомните это время. а потом, когда отнимите его от текущего и получите разницу. Таким образом (за счёт вычитания) мы и получаем, что, как-будто начальное время было равно нулю.

p.s. ну если вы хотите узнать, сколько времени займёт у Вас прогулка до магазина, а секундомера у Вас нет, есть только ЧАСЫ. Вы как поступите?! Засечёте начальное время, так? потом конечное. и разница даст Вам требуемый ответ.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.02.2012, 11:45   #7
NightVamp
Пользователь
 
Регистрация: 06.02.2012
Сообщений: 12
По умолчанию

Ну да, без системных функций не обойтись получается... Скажите, организация циклов в приведённом коде у меня правильная хоть?
NightVamp вне форума Ответить с цитированием
Старый 07.02.2012, 15:19   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

без системных функций не обойтись (практически не обойтись. да и не вижу в их использовании больших проблем. в конце концов, вас же не смущает, что Вы используете системную функцию ввода данных scanf ?!)

что касается вашего кода, то
1) я абсолютно не знаю С
2) в коде явно не хватает в цикле одного значения:
вы цикл по j крутите от 1 до 24 (<25) - тогда уже от нуля надо:
Код:
for(int j=0;j<25;j++)   //число перебираемых паролей - 25
3) у вас в коде ЖЁСТКО задаётся, что пароль из двух символов. что всего паролей 25 и т.д. и тп.
что, если пароль будет из 4-х символов, будете код полностью переписывать?!
надо не так делать...
4) я ваш алгоритм перебора абсолютно не понял - зачем две переменные, зачем два вложенных друг в друга цикла - непонятно. Вы бы посмотрели комбинаторные алгоритмы. Они достаточно просто решают подобные задачи (особенно при использовании рекурсии).


p.s. а зачем Вам это нужно? Возьмите на форуме/интернете готовую программку и пользуйтесь на здоровье...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.02.2012, 16:57   #9
NightVamp
Пользователь
 
Регистрация: 06.02.2012
Сообщений: 12
По умолчанию

Проще задать определённое количество символов в пароле, чем писать от 1 до n или что-то в этом роде...
parol - это массив целых чисел, пароль, вводимый с консоли
parol1 - это результат перебирания паролей
Объясняю свою идею кода: инициализируются 2 массива, один из них, т.е. пароль, вводится сразу же в первом цикле. Далее начинается перебор 25 вариантов пароля до тех пор, пока один из перебираемых вариантов, записанный в массив parol1 не сравнится с начальным введённым паролем. Правда я здесь, в коде, забыла указать, что перебор происходит именно между числами от 1 до 5, поэтому и получаются 25 вариантов...
Как на паскале такую идею реализовать, не забыть, что используются числа от 1 до 5 и всё остальное, если вы поняли мою идею?

P.S.: Уже совсем запуталась, некудышный из меня программист. Я пыталась найти такую программу, нету, может неправильно искала...Здесь на форуме есть?
NightVamp вне форума Ответить с цитированием
Старый 07.02.2012, 17:07   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Я пыталась найти такую программу, нету, может неправильно искала
Дык смотря для чего она вам нужна. Различных программ для перебора паролей к чему-либо много (обычно их называют брутфорсами (bruteforce) паролей).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу получить запрос пароля для подключения к firebird toboom БД в Delphi 0 06.12.2011 16:21
Запрос пароля на начале программы и запускалась ли ранее программа pastuhdima Помощь студентам 1 06.10.2011 17:39
Поле ввода для пароля Небесный HTML и CSS 2 06.11.2010 21:09
Спам атака методом подбора. Alex Cones Свободное общение 14 21.10.2009 11:22
Сохранение пароля для расшифровки Lime Общие вопросы Delphi 25 01.03.2009 19:57