Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Динамическое создание циклов Добавлено: 24.03.04 14:54  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru

Проблема вот в чём. Пишу я переборщик паролей. Простой переборщик. Читаю код примера на эту тему: в нём

такая структура:

Dim S As String

For B = 32 To 255

S = Chr(B)

(проверка пароля)

Next B

For A = 32 To 255

For B = 32 To 255

S = Chr(A) & Chr(B)

(проверка пароля)

Next B

Next A

То есть, какая длина паролья столько будет и вложеных циклов, верно? А если мне надо будет угадать очень

длинный пароль? Нее, так дело не пойдёт. Нужно чтоб прога сама (если это конеччно в принципе возможно)

создавала вложенные циклы. Я написал кое-что (см. ниже), но есессно это не заработало:

for i=1 to l

for L(i)=32 to 255

next

pwd=""

for i=1 to l

S=S & chr(i)

next

(checking password......)

for i=1 to l

next

next

Работать он должен был вот как: сначала мы L раз создаём цикл (строка 1,2,3). потом очищаем строку-пароль

(строка 4). Затем генерируем эту строку-пароль заново (стр. 5,6,7). Потом проверяем , подходит ли пароль (стр.

8). Строки 9,10 и 11 L раз закрывают цикл. Может кто подскажет более работоспособный вариант

вышеуказанного кода :-) ?

Заранее благодарен.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Pashenko



ICQ: 176176951 

Вопросов: 14
Ответов: 655
 Профиль | | #1 Добавлено: 24.03.04 15:43

Это конеччно в принципе возможно.

Первое, что приходит в голову - использование рекурсивных алгоритмов.

Ответить

Номер ответа: 2
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #2
Добавлено: 25.03.04 04:20

Ну, да... С рекурсией у меня хреново получается... Хотя идея супер! А можж кинуть какой нить примерчик, чтоб хоть разобрался? А то я с энтой фигнёй на паскале крутые веши писал, нечасто правда, если чесно всего один раз... да и то всё равно не заработало :-)

Ответить

Номер ответа: 3
Автор ответа:
 dem



Вопросов: 3
Ответов: 20
 Профиль | | #3 Добавлено: 25.03.04 20:49
Зачем рекурсивные алгоритмы в такой задаче? Вы когда-нибудь пробовали писать
работу с большими числами? А это очень просто.
Вспомните, как происходит сложение столбиком. К примеру, чтобы прибавить 1 к
1999, нужно идти по числу 1999 справа налево: пока встречаем 9, заменяем его
на 0, иначе увеличиваем цифру на единицу и выходим.
У нас прибавление единицы к числу в 224-ричной системе счисления. Вот
примерный алгоритм:

N-число цифр (т.е. символов в пароле)
Dim Number(N) As Byte 'Строка представлена массивом, каждый элемент - код
символа
For i=1 to N 'Это минимальное число
Number(N)=32
Next i

'Начинаем перебор
Do
i=N
Do While Number(i)=255
Number(i)=32
i=i-1
Loop
If i=1 And Number(1)=255 Then 'Проверим, не перебрали ли уже все числа
MsgBox "Пароль не найден"
Exit Do
End If
Number(i)=Number(i)+1
Loop Until <Проверка пароля>

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам