#!/usr/bin/perl -w
#Dominic White
#http://singe.rucus.net/
#Aug 7th 2005
#GPL'ed
#Checks DSheilds 'Are you cracked?' site to see if an IP address is listed
#in the DShield database as an attacker
#http://www.dshield.org/warning_explanation.php
use strict;
use LWP::Simple qw($ua get);
use HTML::TokeParser;
#Proxy init
#my proxy="http://username:password@proxy.org:3128";
my $proxy="";
$ua->proxy('http',$proxy);
#Var init
my $ip="";
my $content="";
my $stream="";
my $output="";
#Get cmd line IP
$ip = (($#ARGV == 0) ? $ARGV[0] : "");
#If no cmd line then use default
if ($ip eq "") {
$content = get("http://www.dshield.org/warning_explanation.php");
} else {
$content = get("http://www.dshield.org/warning_explanation.php?fip=$ip");
}
die "Couldn't fetch the page, something is wrong. Check that your proxy and the
URL work.\n" unless defined $content;
#Init tokenizer
$stream = HTML::TokeParser->new(\$content) ||
die "There was an error reading the page.\n";
#We want the 3rd
tag
$stream->get_tag("img");
$stream->get_tag("img");
$stream->get_tag("img");
#The good stuff is in the tag
$stream->get_tag("b");
#Output data
$output = $stream->get_trimmed_text("/b");
$ip=$output;
$ip =~ s/^.*IP.\((.*)\).*$/$1/;
if ($output =~ /does not appear/) {
print "$ip is Safe\n";
} else {
$output =~ s/^.*attacker.(.*).times.*$/$1/;
print "$ip is Hacked : It appears $output times.\n";
exit 1; #Exit with a return code of 1
}