Verificação de IP em blacklists

Publicado por Lauro Salmito Pinheiro 30/07/2009

[ Hits: 7.474 ]

Download spider.pl




Este script em Perl que fiz pode ser usado para validar IPs em blacklists. Implementei ele para gerar logs e gravar em cache uma blacklist e uma whitelist. Está faltando apenas uma implementação que ainda não fiz para renovar os aquivos de cache. Se alguem quiser colaborar vou agradecer.

  



Esconder código-fonte

#!/usr/bin/perl
#******************************************************
# Programa de Verificação de IP em três grandes black-
# lists.
#       By Lauro Salmito Pinheiro
#******************************************************
$date = localtime();
$ip = shift || "ipch"; # IP à ser verifiado!
if ($ip eq "ipch")
{
print "-= Spider v1.2 by Lauro Salmito. =-\n";
print "\tSPAM LIST CHECK!!\n";
print "Use: ./spider ip\n";
exit(1);
}
print "Verificando . . . .! ! !\n";

@vetor = ();
@vetor2 = ();


open (FF,"wl");

while (<FF>)
{
   push @vetor, $_;
}
close(FF);

open (BL,"bl");

while (<BL>)
{
   push @vetor2, $_;
}
close(BL);


open (FLC,">>spider.log");
foreach (@vetor){
      ($ip_cache,$tempo_i) = split ( / -> /,$_);
      if ($ip_cache eq $ip)
      {
         print FLC "Verificação OK!! - ($ip) - > $date IP ainda no cache da WhiteList !\n";
         print "- Ok - (Nao é um SPAM)\n";
         exit(1);
      }
}

foreach (@vetor2){
      ($ip_cache,$tempo_j) = split ( / -> /,$_);
      if ($ip_cache eq $ip)
      {
         print FLC "Verificação FAIL!! - ($ip) - > $date IP ainda no cache da BlackList !\n";
         print "- FAIL - (Possível SPAM)\n";
         exit(1);
      }
}

close(FLC);

# Limpando alguma sujeita possivelmente feita !

`rm -rf lookup.php?domain=* 2> /dev/null`;
`rm -rf ip4r.ch?ip=* 2> /dev/null`;
`rm -rf cblfile 2> /dev/null`;

# Buscando Dados nos Sites

`wget --tries 2 http://www.rfc-ignorant.org/tools/lookup.php?domain=$ip 2> /dev/null`; # Download da Verificação RFC !
`wget --tries 2 http://www.spamhaus.org/query/bl?ip=$ip 2> /dev/null`; # Download da Verificação DNSSTUFF! 
`curl -s cbl.abuseat.org/lookup.cgi?ip=$ip > cblfile `;


# Trabalhando com os Resultados 


# Verificação dos dados baixados da RFC!
open (F1,"lookup.php\?domain\=$ip");
if (<F1>)
{
   $ex_file1=1;
} else {
   $ex_file1=0;
}
close(F1);

if ($ex_file1==1)
{
   $rfc = `cat lookup.php\?domain\=$ip | tail -n 3 | head -n 1 | awk {'print \$5'} | cut -d ">" -f 5`; # Resultado da Busca!
   `rm lookup.php\?domain\=$ip /dev/null 2> /dev/null`;
}

open (F2,"bl?ip\=$ip");
if (<F2>)
{
   $ex_file2=1;
} else {
   $ex_file2=0;
}
close(F2);

if ($ex_file2==1)
{
   $spamhaus = `cat bl?ip\=$ip | grep no | cut -d ">" -f 3 | head -n 1 | awk {\'print \$3\'}`; # Resultado da Busca!
   `rm bl?ip\=$ip /dev/null 2> /dev/null`;
}

open (F3,"cblfile");

if (<F3>)
{
   $ex_file3=1;
} else {
   $ex_file3=0;
}
close(F3);

if ($ex_file2==1)
{
   $cbl = `cat cblfile | tail -n 5 | head -n 1 | awk {\'print \$5\'}`;
   `rm cblfile /dev/null 2> /dev/null`;
}

chomp($spamhaus);
chomp($rfc);
chomp($cbl);

# Resultado das Verificações no Arquivo de LOG!

open (LOGF,">>spider.log");


if ($ex_file1==1)
{
   if ($rfc eq "No") # Resultado da BlackList RFC !
   {
      print LOGF "Verificação OK!! - ($ip) - > $date Não consta na BlackList RFC-IGNORANT !\n";
   } else {
      print LOGF "Verificação FAIL!! - ($ip) - > $date Está na BlackList da RFC-IGNORANT!\n";
   }
} else {
   print "Problema na Conexão com o site da RFC!! Por favor verifique !\n";
}

if ($ex_file2==1)
{
   if ($spamhaus eq "not") # # Resultado da BlackList DNSSTUFF ! 
   {
      print LOGF "Verificação OK!! - ($ip) - > $date Não consta na BlackList da SPAMHAUS !\n";
   } else {
      print LOGF "Verificação FAIL!! - ($ip) - > $date Está na BlackList da SPAMHAUS !\n";
   }
} else {
   print "$date -> Problema na Conexão com o site da SPAMHAUS!! Por favor verifique !\n";
}

if ($ex_file3==1)
{
   if ($cbl eq "not") # # Resultado da BlackList DNSSTUFF ! 
   {
      print LOGF "Verificação OK!! - ($ip) - > $date Não consta na BlackList da CBL !\n";
   } else {
      print LOGF "Verificação FAIL!! - ($ip) - > $date Está na BlackList da CBL !\n";
   }
} else {
   print "$date ->Problema na Conexão com o site da CBL!! Por favor verifique !\n";
}
close(LOGF);
$tempo = `date | awk {\'print \$3"-"\$4\'}`;
chomp($tempo);
# Resultado Geral


if ($ex_file1==1 and $ex_file2==1 and $ex_file3==1){
   if (($rfc eq "No") && ($spamhaus eq "not") && ($cbl eq "not"))
   {
      open (FIC, ">>wl"); #Inclusão de IP no arquivo WhiteList!;
      print FIC "$ip -> $tempo\n";
      print "- Ok - (Nao é um SPAM)\n";
      close(FIC);
   } else { 
      open (FBL, ">>bl"); #Inclusão de IP no arquivo BlackList!;
      print FBL "$ip -> $tempo\n";
      close(FBL);
      print "- FAIL - (Possível SPAM)\n" ;
   }
} else {
   print "ERRO - Verifique a conexão das Listas (Consulte o arquivo de log para mais detalhes)\n";
}



Scripts recomendados

Calculadora de notas versão Perl

Tratando Exceções com o Perl

Biblioteca CGI-LIB.PL

Monitoração Web com Perl

Ler uma sequências fasta e separar por tamanho [Bioinformática]


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts