|

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
|