#!/usr/bin/perl
@lista=`/sbin/iptables -L -n`;
print "Hosts bloccati: \n";
for(@lista)
{
    if (/DROP/)
	{  $indirizzo=(split(' '))[3] ;
	   print "$indirizzo \n";
	   @bloccati=(@bloccati, $indirizzo);
	};
};
print "Hosts da bloccare: \n";
while(<>)
{
    if (/
         (system32)|
         (default\.ida)|
         (cmd\.exe)
       /x)
    {
	$indirizzo=get_ipaddr((split(' '))[0]);
	if (( join(" ", @bloccati) !~ /$indirizzo/) &&
                                      ($indirizzo =~ /[0-9]/))
	{
	    print "$indirizzo \n";
	    retailate($indirizzo);
	    lock_inbound($indirizzo,80);
	    @bloccati=(@bloccati, $indirizzo);
	}
    }
} 

sub get_ipaddr($)
{
    my $name_of_host=shift;
    my $addr =join('.',unpack('C4',(gethostbyname($name_of_host))[4])) or
       $addr=$name_of_host;
    return $addr;
}

sub lock_inbound($,$)
{
    my $addr = shift;
    my $port = shift;
    system ("/sbin/iptables -A INPUT -s $addr -p tcp --destination-port $port -j DROP");
    return;
}

sub unlock_inbound($,$)
{
    my $addr = shift;
    my $port = shift;
    system ("/sbin/iptables -D INPUT -s $addr -p tcp --destination-port $port -j DROP");
    return;
}

sub retailate($)
{
    my $addr= shift;
    return;
}
