Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Брут Добавлено: 02.03.09 23:43  

Автор вопроса:  3oleg
Здраствуйте, недавно получил задание по информационной безопасности - сделать программу для брута md5 (подбора пароля). Саму процедуру кодирования в md5 найти в интернете ни составило труда. Проблемма заключается в следующем. У меня есть массив с символами, по которым мне нужно подбирать пароли. Из этих символов мне нужно составить все возможные слова. Ни думал, что с этим у меня возникнут проблеммы, но факт есть факт: уже третий день голову ломаю. На вашем сайте нашел програмный код перебора паролей:

Public Dict, Base, Pass As String
    Public T, I(15) As Long
    Sub run()
        Base = ""
        Dict = "0123456789"
        For T = 1 To 15
            Base = Base + "a"
            BruteForce(Len(Base))
        Next
    End Sub


    Sub BruteChild(ByVal L As Integer)
        BruteForce(L)
    End Sub

    Sub BruteForce(ByVal N As Integer)
        For I(N) = 1 To Len(Dict)
            Mid(Base, N, 1) = Mid(Dict, I(N), 1)
            If N = 1 Then
                ' Text1.Text = Base
                If Pass = Base Then yes()
                ' Text1.Refresh()
            Else
                BruteChild(N - 1)

            End If
        Next
    End Sub

    Sub yes()
        MsgBox("Угадано!!! Пароль" + Base, vbExclamation, "Сообщение")
        End
    End Sub


чесно сказать, для меня было сложно разобраться как он работает, но я разобрался вроде. Но этот код я использовать ни могу, потому что после нажатия на форму в процессе ее работы, она зависает навсегда. Первоначально я думал что меня спасет BackgroundWorker, но как видите програмный код состоит из 3х процедур (4я не обязательна). Может кто нибудь сообразит, как объединить все эти процедуры в одну чтобы запихать в бакграунд вокер (брут паролей дедо ни одного часа и плохо если все это вреня на форме будет написано НЕ отвечает). Или может есть другое решение этой проблеммы?

Ответить

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

Номер ответа: 1
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #1
Добавлено: 03.03.09 00:19
во первых убери миды, преобразуй алфавит в массив, это ускорит работу перебора и упростит логику. во творых я совсем недавно писал алгоритм для перебора вариантов произвольного алфавита. основывалось все на обычном сложении, чтении элемента массива, и флага переноса. т.е. на обычной арифметике. да и вообще стоит попробовать погуглить, это же заезженная до дыр тема.

Ответить

Номер ответа: 2
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #2
Добавлено: 14.04.09 06:44
Если бакграунд воркер, так сразу юзай их штучек десять, чтобы ускорить код на многоядерных компах

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 14.04.09 15:01
  1. template<typename TIt>
  2. void bruteforce(vector<typename TIt::value_type>& v,
  3. TIt begin, TIt end, size_t cdepth, size_t depth, void (*func)(TIt, TIt))
  4. {
  5. func(v.begin(), v.end());
  6. if (cdepth < depth) for (TIt iter = begin; iter != end; ++iter) {
  7. v.push_back(*iter);
  8. bruteforce(v, begin, end, cdepth + 1, depth, func);
  9. v.pop_back();
  10. }
  11. }
  12.  
  13. template<typename TIt>
  14. void bruteforce(TIt begin, TIt end, size_t depth, void (*func)(TIt, TIt))
  15. {
  16. vector<typename TIt::value_type> v;
  17. bruteforce(v, begin, end, 0, depth, func);
  18. }

Ответить

Страница: 1 |

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



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