Verificação de IP em blacklists
Publicado por Lauro Salmito Pinheiro 30/07/2009
[ Hits: 7.732 ]
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.
#!/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";
}
Introdução a Persistência de Estrutura de Dados em Perl
Algoritmo de Fatoração de Fermat (FFA) em Perl
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (1)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









