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

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


Пора бы создать свой собственный BruteForce

Horrific aka Фленов Михаил (smirnandr@mail.ru) http://www.cydsoft.com/vr-online/

(Внимание!!! Пример, написанный в Kylix, прекрасно работает в Delphi)

Иногда мне приходит один интересный вопрос: "Почему, когда я пытаюсь взломать сервак тупым перебором, после какой-то попытки происходит time-out и взлом останавливается?". Я уже несколько раз отвечал, что после определенного числа попыток сервер может блокировать учетную запись на некоторые промежутки времени. Если выждать это время, то можно без проблем продолжать подбор дальше.

К этому вопросу мне часто присылают до кучи еще один: "А как продолжить подбор с остановленного места?". Вот этого я не знаю. Все зависит от проги, с помощью которой ты пытаешься подобрать пароль. Не каждая тулза позволяет приостанавливать брутфорс и продолжать его дальше. В этом случае единственный выход - корректировать словарь.

Тупой перебор - глупейшее занятие, отнимающее много времени, но иногда единственный выход. А каждый раз корректировать словарь - еще тупее. Чтобы ты не столкнулся с такой проблемой, лучше всего написать собственную тулзу. Я сегодня покажу тебе, как самому написать брутфорсник. И сделаем мы это на примере взломщика почтовых ящиков. Код примера будет дан для Kylix и для Delphi, чтобы ты мог собрать его под любую ОС.

Стройся!!!

Работу с почтовым ящиком я решил построить на основе уже знакомой тебе библиотеки Indy (напоминаю, что она встроена в Delphi6, для более старой версии нужно устанавливать отдельно).

Для самого примера нам понадобятся четыре компонента TEdit:

1. Назовем "NameEdit" - для указания файла-справочника имен.

2. Назовем "PassEdit" - для указания файла-справочника паролей.

3. Назовем "ServerNameEdit" - для указания имени сервера.

4. Назовем "PortEdit" - для указания порта. Я не думаю, что он будет отличаться от 110, но все же дадим возможность изменять его.

Можешь располагать эти компоненты как угодно, но я решил сделать это в столбик. Мой вариант формы можешь увидеть на рисунке 2.

Добавим на форму еще один компонент-кнопку типа TButton, по нажатию которой будет начинаться перебор паролей по словарю. Ну и, наконец, IdPOP3 с закладки Indy - компонент для работы по протоколу POP3.

Антифриз

Для большей солидности я бросил на форму еще и IdAntiFreeze с закладки Indy Misc. Это компонент, который следит за тем, чтобы прога не зависла в ожидании ответа от сервера при работе с портом.

Я советую тебе постоянно использовать антифриз, когда работаешь с библиотекой Indy. Хотя я проблем пока не встречал, но софт с досадными ошибками никого не возбудит.

Шкодинг

Теперь давай поймаем обработчик события OnClick для кнопки и напишем в нем содержимое листинга 1. Ты пока переписывай, а я растолкую тебе о его содержимом. В нем объявлено две переменные типа TStrings (это массивы строк) и две целые переменные, которые я буду использовать при переборе.

В самом начале кода я инициализирую обе переменные. Напоминаю, что любой объект нужно инициализировать. В этот момент ему выделяется необходимая область памяти и выставляются значения по умолчанию для основных свойств. Для инициализации нужно присвоить переменной, указывающей на объект, результат вызова метода Create.

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