#!/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; }