Здраствуйте, недавно получил задание по информационной безопасности - сделать программу для брута 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я не обязательна). Может кто нибудь сообразит, как объединить все эти процедуры в одну чтобы запихать в бакграунд вокер (брут паролей дедо ни одного часа и плохо если все это вреня на форме будет написано НЕ отвечает). Или может есть другое решение этой проблеммы?
во первых убери миды, преобразуй алфавит в массив, это ускорит работу перебора и упростит логику. во творых я совсем недавно писал алгоритм для перебора вариантов произвольного алфавита. основывалось все на обычном сложении, чтении элемента массива, и флага переноса. т.е. на обычной арифметике. да и вообще стоит попробовать погуглить, это же заезженная до дыр тема.