Verificação de IP em blacklists
Publicado por Lauro Salmito Pinheiro 30/07/2009
[ Hits: 7.724 ]
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
Nenhum comentário foi encontrado.
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
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (8)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









