\n";
}
else {
fputs ($fp, "GET /admin.cgi?mode=viewxml HTTP/1.1\r\nHost: $server:$portnumber\r\nUser-Agent: Mozilla/4.0\r\nAuthorization: Basic ".base64_encode ("$username:$password")."\r\n\r\n");
while (!feof($fp)) {
$xml .= fgets ($fp,128);
}
fclose ($fp);
if (!preg_match ("/(.+)<\/LISTENERS>/", $xml, $regs)) {
print "Could not find information. Possible incorrect username or password.";
exit;
}
$blocks = split ("", $regs[1]);
array_pop ($blocks);
// Loop through each listener
foreach ($blocks as $block) {
preg_match ("/(.+)<\/USERAGENT>/", $block, $regs);
$useragent = $regs[1];
preg_match ("/(.+)<\/POINTER>/", $block, $regs);
$pointer = $regs[1];
preg_match ("/(.+)<\/HOSTNAME>/", $block, $regs);
$hostname = $regs[1];
print "Known ripper found: ";
$ripperfound = false;
foreach ($knownrippers as $lookfor) {
if (stristr ($useragent, $lookfor)) {
$ripperfound = $lookfor;
}
}
// Ripper found. Ban listener.
if ($ripperfound) {
print "$ripperfound for pointer $pointer. Banning ";
$fp = @fsockopen ($server, $portnumber, $errno, $errstr, 30);
if (!$fp) {
print "failed
\n";
}
else {
fputs ($fp, "GET /admin.cgi?mode=bandst&bandst=$pointer&banmsk=255 HTTP/1.1\r\nHost: $server:$portnumber\r\nUser-Agent: Mozilla/4.0\r\nAuthorization: Basic ".base64_encode ("$username:$password")."\r\n\r\n");
fclose ($fp);
print "successful!";
if ($recipient) {
mail($recipient, "Listener banned", "$hostname\n$useragent", "From: $recipient");
}
}
}
else {
print "No ($useragent)";
}
print "
\n";
}
}
?>