Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: el-brujo en 16 Mayo 2012, 12:20 pm



Título: Función comprobar si una ip es privada PHP
Publicado por: el-brujo en 16 Mayo 2012, 12:20 pm
Código
  1. function ip_is_private($ip)
  2. {
  3.        $pri_addrs = array(
  4.                          '10.0.0.0|10.255.255.255',
  5.                          '172.16.0.0|172.31.255.255',
  6.                          '192.168.0.0|192.168.255.255',
  7.                          '169.254.0.0|169.254.255.255',
  8.                          '127.0.0.0|127.255.255.255'
  9.                         );
  10.  
  11.        $long_ip = ip2long($ip);
  12.        if($long_ip != -1) {
  13.  
  14.            foreach($pri_addrs AS $pri_addr)
  15.            {
  16.                list($start, $end) = explode('|', $pri_addr);
  17.  
  18.                 // IF IS PRIVATE
  19.                 if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
  20.                 return (TRUE);
  21.            }
  22.    }
  23.  
  24. return (FALSE);
  25. }


Código
  1. if ( ip_is_private ( $ip_address1 ) )
  2. {
  3.    printf ( "%s is from a private address range\n", $ip_address1 );
  4. }


Con PHP 5.2 o superior


Código
  1. <?php
  2. function is_private_ip($ip)
  3. {
  4.     return !filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE);
  5. }
  6. ?>

Código
  1. if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE)) {
  2.  // it's valid
  3. }

Citar
FILTER_VALIDATE_IP = validar una ip
FILTER_FLAG_IPV4 = validar una ip v4
FILTER_FLAG_NO_PRIV_RANGE = validar una ip rango privado
FILTER_FLAG_NO_RES_RANGE = validar una ip rango reservado
FILTER_FLAG_IPV6 = validar una ip v6

Ejemplo valdiar ip excluyendo ip's privadas y reservadas

Código
  1. if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
  2.  // it's valid
  3. }


Título: Re: Función comprobar si una ip es privada PHP
Publicado por: Graphixx en 17 Mayo 2012, 09:13 am
Xelente que el jefe le apueste al php, gracias por los post de programacion, de verdad super utiles como el de los emails:
http://foro.elhacker.net/php/validacion_email_formulario-t361047.0.html;topicseen

me surge una pregunta, como detecto desde php si la ip es ipv4 o si es ipv6 ???

aparte, existira alguna BD publica que indique los rangos de ips fijas publicas que poseen empresas como logmein hamachi, o tunngle, NOIP etc... para uno saber si es una ip de esas.

Puedo detectar si desde determinada ip, se esta consumiendo un canal irc ?, para saber si ese cliente es posiblemente una botnet...