Прямой перебор

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Прямой перебор

Сообщение burik » 23.06.2006 (Пт) 22:21

Сдравствуйте уважаемые программисты!
У меня возникла следующая проблема:
Я делал программу, которая должна была выполнять прямой перебор паролей Access, но при этом реагировать на кнопку "Стоп" и прочее :) .
Вот как раз этого и неполучилось. И вообще при переборе пароля более двух символов прога виснет :( .

Подскажите пожалуйста, как с этим бороться?
Заранее благодарен!
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.06.2006 (Пт) 22:53

Во-первых, прочитай http://bbs.vbstreets.ru/viewtopic.php?t=23315 и больше так не делай.
Во-вторых, подбирать чужие пароли плохо.
В-третьих, телепатией не владеем. Покажи, как пробуешь пароли.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 24.06.2006 (Сб) 10:51

Во-первых, больше не буду.
Во-вторых, плохо, но необходимо.
В-третьих, вот код:

Код: Выделить всё
Sub pPerebor()
Dim S As String
'Перебор одного символа
For A = 32 To 255
    S = Chr(A)
    If prov(S) = True Then Exit Sub
    If fstop = True Then Exit Sub
Next A
'Перебор двух символов
For A = 32 To 255
    For B = 32 To 255
        S = Chr(A) & Chr(B)
        If prov(S) = True Then Exit Sub
        If fstop = True Then Exit Sub
    Next B
Next A
'Перебор трех символов (здесь прога виснуть начинает)
For A = 32 To 255
    For B = 32 To 255
        For C = 32 To 255
            S = Chr(A) & Chr(B) & Chr(C)
            If prov(S) = True Then Exit Sub
            If fstop = True Then Exit Sub
        Next C
    Next B
Next A
'Пребор четырех символов
For A = 32 To 255
    For B = 32 To 255
        For C = 32 To 255
            For D = 32 To 255
                S = Chr(A) & Chr(B) & Chr(C) & Chr(D)
                If prov(S) = True Then Exit Sub
                If fstop = True Then Exit Sub
            Next D
        Next C
    Next B
Next A
'Пока четырех хватит
End Sub


'Функция проверяющая правильность пароля
Function prov(pwd As String) As Boolean
On Error GoTo ErrT
Set db1 = DAO.OpenDatabase("", True, False, ";Database=" & frmMain.Text1.Text & ";pwd=" & pwd)
prov = True
MsgBox pwd
ErrT:
    If Err = 3031 Then prov = False
End Function
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.06.2006 (Сб) 10:55

В самое начало prov() вставь DoEvents.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 24.06.2006 (Сб) 11:14

Amed
Спасибо большое! Теперь все работает! :D
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 60

    TopList