<?php
// I dont really care about notices, but I do care about errors:
error_reporting(E_ERROR E_WARNING E_PARSE);
// look into chunked encoding (maybe a checkbox?) under 
//transfer encoding. Also header folding with \t

static $logtype 1;
// static $logtype = 0;
// set log type 0 for files, 1 for raw output to screen
if(!empty($_POST['fuzzdatalen']))
{
$fuzzdatalen $_POST['fuzzdatalen'];
}
else
{
$fuzzdatalen rand(65000,1293849);
}

$fuzzpostdatas false;
if(!empty(
$_POST['fuzzpostdatas']))
{
$fuzzpostdatas true;
}

$fuzzreq_uri false;
if(!empty(
$_POST['fuzzreq_uri']))
{
$fuzzreq_uri true;
}
$param1name         $_POST['param1name'];
$param1val             $_POST['param1val'];
$fuzzparam1 false;
if(!empty(
$_POST['fuzzparam1']))
{
$fuzzparam1 true;
}
$param2name         $_POST['param2name'];
$param2val             $_POST['param2val'];

$fuzzparam2 false;
if(!empty(
$_POST['fuzzparam2']))
{
$fuzzparam2 true;
}

$param3name         $_POST['param3name'];
$param3val             $_POST['param3val'];

$fuzzparam3 false;
if(!empty(
$_POST['fuzzparam3']))
{
$fuzzparam3 true;
}

$cookie1name         $_POST['cookie1name'];
$cookie1val         $_POST['cookie1val'];

$fuzzcookie1 false;
if(!empty(
$_POST['fuzzcookie1']))
{
$fuzzcookie1 true;
}
$cookie2name         $_POST['cookie2name'];
$cookie2val         $_POST['cookie2val'];

$fuzzcookie2 false;
if(!empty(
$_POST['fuzzcookie2']))
{
$fuzzcookie2 true;
}

$cookie3name         $_POST['cookie3name'];
$cookie3val         $_POST['cookie3val'];

$fuzzcookie3 false;
if(!empty(
$_POST['fuzzcookie3']))
{
$fuzzcookie3 true;
}

$authuser false;
if(!empty(
$_POST['authuser']))
{
$authuser         $_POST['authuser'];
}
$authpass false;
if(!empty(
$_POST['authpass']))
{
$authpass         $_POST['authpass'];
}

$strutscancel     $_POST['strutscancel'];
$meth             $_POST['method'];
$timeout          $_POST['timeout']; 
$cmd              $_POST['cmd'];
$param            $_POST['param'];
$target           $_POST['target'];
$requri           $_POST['request_uri'];
$doitfgt          $_POST['doitfgt'];
$numberofreqs   $_POST['numberofreqs']; // number of requests
$postdatas         $_POST['postdatas'];

// self preservation //
if(preg_match("/gironsec\.com/i",$target))
{
die(
"Thats fucked up dude, don't do that! :(");
}
if(!
strcmp($target,"69.10.32.3"))
{
die(
"Thats fucked up dude, don't do that!");
}
if(empty(
$target))
{
die(
"no target set yet");
}
// end self preservation //

$fp  fsockopen($target80$errno$errstr$timeout);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";

    else 
    {
switch(
$meth)
{
  case 
'GET':
  {    
        
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
        if(
$fuzzreq_uri)
        {
       
$out "GET " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
        else
        {
       
$out "GET " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
// params and fuzz
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
       
// cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
}
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        
        if(
$logtype) { 
        echo 
fgets($fp1024);
                     }
        else{
        
store_log(fgets($fp,1024));
            }
       
fclose($fp);
    }
   }
   }break;
   case 
'POST':
    {
    
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
        if(
$fuzzreq_uri)
        {
       
$out "POST " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
        else
        {
       
$out "POST " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
      
     
     if(
$fuzzpostdatas)
     {
     
$out .= "POSTDATA=" randfuzz($fuzzdatalen) .  "\r\n";
     }
     else
     {
     
$out .= "POSTDATA=" $postdatas .  "\r\n";
     }
     
// $postdata = each request separated by a semicolon
    // come back to me
     // cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
}
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
    }
    } break;
   case 
'TRACE':
        {
        
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
        if(
$fuzzreq_uri)
        {
       
$out "TRACE " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
       else
        {
       
$out "TRACE " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
       
// cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
}
      
        
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
     }
    }
     break;
     
   case 
'HEAD'// HEAD is the same as a GET request, but might be handled differently
   
{
   
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
        if(
$fuzzreq_uri)
        {
       
$out "HEAD " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
        else
        {
       
$out "HEAD " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
      
// cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
}
        
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
        }
        
// every HTTP request ends with 2 control-linefeeds
        
        
}break;
   case 
'PUT':
        {
   
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
        if(
$fuzzreq_uri)
        {
       
$out "PUT " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
        else
        {
       
$out "PUT " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
      
        }
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
        } 
        } break;
   case 
'DELETE':
        {
   
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
                if(
$fuzzreq_uri)
        {
       
$out "DELETE " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
        else
        {
       
$out "DELETE " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
     
// cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
}
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
        } 
        } break;
   case 
'CONNECT':
       {
   
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
                if(
$fuzzreq_uri)
        {
       
$out "CONNECT " randfuzz($fuzzdatalen) . " HTTP/1.1\r\n";
        }
        else
        {
       
$out "CONNECT " $requri " HTTP/1.1\r\n";
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
      
    
// cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
}
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
        } 
        }    break;
   case 
'OPTIONS':
       {
    
$cntr 0;
    for(;
$cntr $numberofreqs;$cntr++)
    {
       
$out "OPTIONS * HTTP/1.1\r\n"// no need for a URI with OPTIONS, star is accepted global
       
$out .= "Host: " $target "\r\n";
       
$out .= $param1name "=";
       if(
$fuzzparam1)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param1val " \r\n";
       }
       
$out .= $param1name "=";
       if(
$fuzzparam2)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param2val " \r\n";
       }
       
$out .= $param3name "=";
       if(
$fuzzparam3)
       {
       
$out .= randfuzz($fuzzdatalen) . " \r\n";
       }
       else
       {
       
$out .= $param3val " \r\n";
       }
       
       
// cookies and fuzz
       
if($fuzzcookie1)
       {
       
$out .= "Cookie: " $cookie1name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= "Cookie: " $cookie1name "=" $cookie1val ";";
       }
       if(
$fuzzcookie2)
       {
       
$out .= $cookie2name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie2name "=" $cookie2val ";";
       }
       if(
$fuzzcookie3)
       {
       
$out .= $cookie3name "=" randfuzz($fuzzdatalen) . ";";
       }
       else
       {
       
$out .= $cookie3name "=" $cookie3val ";";
       }
              
       
$out .= "\r\n"// end of the cookies ends with control line-feed
       
       
      
        
$out .= "\r\n\r\n";
        
fwrite($fp$out);
        while (!
feof($fp)) {
        echo 
fgets($fp128);
        }
       
fclose($fp);
       }
     } break;


}


}
function 
randfuzz($len
{
    if (
is_readable('/dev/urandom')) {
        
$f=fopen('/dev/urandom''r');
        
$urandom=fread($f$len);
        
fclose($f);
    }
    else
    {
    die(
"either /dev/urandom aint readable or this aint a linux machine!");
    }
    
$return='';
    for (
$i=0;$i<$len;++$i) {
        if (!!empty(
$urandom)) {
            if (
$i%2==0mt_srand(time()%2147 1000000 + (double)microtime() * 1000000);
            
$rand=48+mt_rand()%64;
        } else 
$rand=48+ord($urandom[$i])%64;

        if (
$rand>57)
             
$rand+=7;
        if (
$rand>90)
            
$rand+=6;

        if (
$rand==123$rand=45;
        if (
$rand==124$rand=46;
        
$return.=chr($rand);
    }
    return 
$return
}
function 
store_log($status)
{
$outputfile "log.txt";
$fp fopen($outputfile,"+a");
fwrite($status);
fclose($fp);
}    
?>