Archivo etiqueta script

Creando un Script en PHP para chequear IPs en Listas negras (Blacklist)

Una lista negra (black list) es una lista donde se registran direcciones IPs que generan SPAM ya sea de forma voluntaria o involuntaria. Estas listas aunque las hay de pago suelen ser libres y cualquiera puede añadir una IP inocente de manera malintencionada por lo que también podemos solicitar ser removidos de ellas si hemos sido incluidos.

Tanto chequear diferentes tipos de webs  con listas negras he decidido crear este pequeño Script en PHP que nos será de utilidad ya que comprueba una lista personalizada de Black List y nos devuelve el resultado en pantalla o a un email si se lo indicamos. Es totalmente personalizable y muy sencillo de modificar.

if ($_POST['ip']) { $ip = $_POST['ip']; } 

function blacklist($ip) {
   $dnsbl=array("b.barracudacentral.org"=>"",
   "bl.deadbeef.com"=>"",
   "bl.emailbasura.org"=>"",
   "bl.spamcannibal.org"=>"",
   "bl.spamcop.net"=>"Blacklist de Spamcop",
   "blackholes.five-ten-sg.com"=>"",
   "blacklist.woody.ch"=>"",
   "bogons.cymru.com"=>"",
   "cbl.abuseat.org"=>"Composite Blocking List)",
   "cdl.anti-spam.org.cn"=>"",
   "combined.abuse.ch"=>"",
   "combined.rbl.msrbl.net"=>"",
   "db.wpbl.info"=>"",
   "dnsbl-1.uceprotect.net"=>"",
   "dnsbl-2.uceprotect.net"=>"",
   "dnsbl-3.uceprotect.net"=>"lista de pago",
   "dnsbl.ahbl.org"=>"",
   "dnsbl.cyberlogic.net"=>"",
   "dnsbl.inps.de"=>"",
   "dnsbl.njabl.org"=>"",
   "dnsbl.sorbs.net"=>"rangos dinámicos",
   "drone.abuse.ch"=>"",
   "drone.abuse.ch"=>"",
   "duinv.aupads.org"=>"",
   "dul.dnsbl.sorbs.net"=>"rangos dinámicos",
   "dul.ru"=>"",
   "dyna.spamrats.com"=>"rangos dinámicos",
   "dynip.rothen.com"=>"",
   "fl.chickenboner.biz"=>"",
   "http.dnsbl.sorbs.net"=>"",
   "images.rbl.msrbl.net"=>"",
   "ips.backscatterer.org"=>"",
   "ix.dnsbl.manitu.net"=>"",
   "korea.services.net"=>"Block Asian spam (Korea)",
   "misc.dnsbl.sorbs.net"=>"",
   "noptr.spamrats.com"=>"",
   "ohps.dnsbl.net.au"=>"",
   "omrs.dnsbl.net.au"=>"",
   "orvedb.aupads.org"=>"",
   "osps.dnsbl.net.au"=>"",
   "osrs.dnsbl.net.au"=>"",
   "owfs.dnsbl.net.au"=>"",
   "owps.dnsbl.net.au"=>"",
   "phishing.rbl.msrbl.net"=>"",
   "probes.dnsbl.net.au"=>"",
   "proxy.bl.gweep.ca"=>"",
   "proxy.block.transip.nl"=>"",
   "psbl.surriel.com"=>"Passive Spam Block List",
   "rbl.interserver.net"=>"",
   "rdts.dnsbl.net.au"=>"",
   "relays.bl.gweep.ca"=>"",
   "relays.bl.kundenserver.de"=>"",
   "relays.nether.net"=>"",
   "residential.block.transip.nl"=>"rangos dinámicos",
   "ricn.dnsbl.net.au"=>"",
   "rmst.dnsbl.net.au"=>"",
   "short.rbl.jp"=>"",
   "smtp.dnsbl.sorbs.net"=>"",
   "socks.dnsbl.sorbs.net"=>"",
   "spam.abuse.ch"=>"",
   "spam.dnsbl.sorbs.net"=>"",
   "spam.rbl.msrbl.net"=>"",
   "spam.spamrats.com"=>"",
   "spamlist.or.kr"=>"",
   "spamrbl.imp.ch"=>"",
   "t3direct.dnsbl.net.au"=>"",
   "tor.ahbl.org"=>"",
   "tor.dnsbl.sectoor.de"=>"",
   "torserver.tor.dnsbl.sectoor.de"=>"",
   "ubl.lashback.com"=>"Tracking Unsubscribe Abuse",
   "ubl.unsubscore.com"=>"",
   "virbl.bit.nl","virus.rbl.jp"=>"",
   "virus.rbl.msrbl.net"=>"",
   "web.dnsbl.sorbs.net"=>"",
   "wormrbl.imp.ch"=>"",
   "sbl.spamhaus.org"=>"Spamhaus Block List",
   "xbl.spamhaus.org"=>"Spamhaus Exploits Block List",
   "pbl.spamhaus.org"=>"Spamhaus Policy Block List",
   "zen.spamhaus.org"=>"Spamhaus (Combinación Spamhaus)",
   "zombie.dnsbl.sorbs.net"=>"",
   "1.apews.org"=>"Anon. Postmasters Early Warning System",
   "2.apews.org"=>"Anon. Postmasters Early Warning System",
   "bulk.rhs.mailpolice.com"=>"domains",
   "porn.rhs.mailpolice.com"=>"pornograf sites",
   "fraud.rhs.mailpolice.com"=>"phising",
   "block.rhs.mailpolice.com"=>"bulk y fraud",
   "dynamic.rhs.mailpolice.com"=>"dinamicas",
   "adv.rhs.mailpolice.com"=>"email marketing",
   "webmail.rhs.mailpolice.com"=>"webmails services",
   "adult.rhs.mailpolice.com"=>"adult sites, blogs etc",
   "redir.rhs.mailpolice.com"=>"sites redirigidos");

if ($_POST['ip']) {
   $parte=explode(".",$ip);
   $rip=$parte[3].".".$parte[2].".".$parte[1].".".$parte[0];

   foreach ($dnsbl as $key=>$value){
      if (checkdnsrr($rip.".".$key . '.',"A")) { $lista[]=$key." - ".$value; }
   }

   echo "<ul>";
   foreach ($lista as $server){
      echo "<li>".$server."</li>";
      $bl .= $server."\n";
   }
   echo "</ul>";  

   # ---------------------------------------------
   # - enviamos un reporte a un email.
   if ($_POST['report'] == "on") {
      $email = "su@email";
      $headers = "MIME-Version: 1.0\n";
      $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
      $headers .= "From: $email \r\n";
      $asunto = "Report Blacklist: $ip";
      $txt = "La ip $ip esta listada en:\n\n".$bl;
      mail($email, $asunto, $txt, $headers);
   } # fin reporte
   # ---------------------------------------------

} # fin if
} // fin funcion listas negras

if ($_POST['ip']) {
   echo "Su IP: <strong>".getenv('REMOTE_ADDR')." </strong>esta en las siguientes listas negras:<p />";
   echo blacklist($ip);
}

El formulario en HTML quedaría de la siguiente forma:

<form method="post">
 <input name="ip" type="text" />
 <input name="report" type="checkbox" /> Enviar reporte por email.
 <input type="submit" value="Comprobar" />
</form>

Para una demo del script:
http://www.artegrafico.net/laboratorio/php/blacklist.php

, , , , , ,

2 Comentarios