elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Validar IP's que esten dentro de un segmento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Validar IP's que esten dentro de un segmento  (Leído 9,763 veces)
FeArX

Desconectado Desconectado

Mensajes: 45


Debemos combatir nuestro instinto basico el miedo


Ver Perfil
Validar IP's que esten dentro de un segmento
« en: 26 Junio 2008, 00:27 am »

Hola de nuevo, estoy haciendo validaciones de IP's a una red, como puedo saber dado un segmento de red y una mascara, si una IP está dentro de este segmento, es que necesito validar las ips para dar entrada a un sistema.

Ejemplo: Solamente las ips que esten dentro de esta subred pueden entrar:
Red             / Mascara
192.168.1.0 / 255.255.255.240 -> da 16 ip's (contando bc y la de red).

Si entro con una ip 192.168.1.10 ->entro
Si entro con una ip 192.168.1.33 -> NO entro

Ya tengo la funcion que verifica la IP desde donde me estoy conectando, pero no tengo esa.
Agradeciendo de antemano toda la ayuda posible me despido esperando una pronta respuesta =)


En línea

Solo los mas debiles son los que no quieren ni estan dispuestos a dejar de depender de los demas
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Validar IP's que esten dentro de un segmento
« Respuesta #1 en: 26 Junio 2008, 00:31 am »

Prueba abriendo un socket, si responde pues ya lo tienes.

Suerte


En línea

FeArX

Desconectado Desconectado

Mensajes: 45


Debemos combatir nuestro instinto basico el miedo


Ver Perfil
Re: Validar IP's que esten dentro de un segmento
« Respuesta #2 en: 29 Junio 2008, 19:58 pm »

Bueno básicamente cree 4 funciones (algunas las consegui en este foro otras en el foro de php org)
Código:
<?php
function getIp() //Esta funcion devuelve la ip desde donde te estas conectando
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
       $ips = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } 
    elseif (isset($_SERVER['HTTP_VIA'])) {
       $ips = $_SERVER['HTTP_VIA'];
    } 
    elseif (isset($_SERVER['REMOTE_ADDR'])) {
       $ips = $_SERVER['REMOTE_ADDR'];
    }
    else { 
       $ips = "unknown";
    }

return $ips;
    //echo "Tu IP es: $ips";
}

function validarIP($ipAntena) //Valida que la conexion sea desde una Ip especifica
{
$ipRemota=getIp();

if($ipAntena==$ipRemota)
{
$idInstalacion=$_GET["idInstalacion"];

//echo "Estas en la antena para realizar la conexion<br>";
return true;
}
else
{
echo "<h1>No estas en la antena para realizar la conexion<h1>Estas en la ip".$ipRemota." ipantena: ".$ipAntena."<br>";
return false;
}
}

function in_rango_ip($ip_one, $ip_two=false, $ip_remota)//funcion que recibe 2 ips para un rango y una ip para verificar que este en ese rango
{
    if($ip_two===false){
        if($ip_one==$ip_remota){
            $ip=true;
        }else{
            $ip=false;
        }
    }else{
        if(ip2long($ip_one)<=ip2long($ip_remota) && ip2long($ip_two)>=ip2long($ip_remota)){
            $ip=true;
        }else{
            $ip=false;
        }
    }
    return $ip;
}

function getMask($mask) //funcion que recibe una mascara y consigue cuantas direcciones hay disponible
{
if($mask=="255.255.255.252")//30
return 4;
else if($mask=="255.255.255.248")//29
return 8;
else if($mask=="255.255.255.240")//28
return 16;
else if($mask=="255.255.255.224")//27
return 32;
else if($mask=="255.255.255.192")//26
return 64;
else if($mask=="255.255.255.128")//25
return 128;
else if($mask=="255.255.255.0")//24
return 256;
else
return -1;
}

function validarIpSegmento($ip_red,$mascara) //Esta recibe una ip y una mascara y automaticamente localiza la ip desde donde se esta conectando
{
$nroMascara=getMask($mascara); // Obtengo los valores de la mascara
$ipFinalSegmento=ip2long($ip_red)+$nroMascara-1; // Le sumo la cantidad de ips de la red que obtuve en la mascara y resto 1
$ip_broadcast=long2ip($ipFinalSegmento); // Consigo la ip de bc en formato xxx.xxx.xxx.xxx
$ipConex=getIp(); // Consigo la ip desde donde estoy navegando
$esta_dentro_rango=in_rango_ip($ip_red, $ip_broadcast, $ipConex);
echo "<br>".$ip_red." ".$ip_broadcast." ".$ipConex."<br>";
return $esta_dentro_rango;
}

function in_rango_ip('192.168.1.0', '192.168.1.255', '192.168.1.19'); //true
function in_rango_ip('192.168.1.0', '192.168.1.255', '192.168.100.1'); //false

//la ip desde donde estoy conectado es 192.168.1.19
function validarIpSegmento('192.168.1.0','255.255.255.224'); //true
function validarIpSegmento('192.168.1.0','255.255.255.248'); //false
?>

Espero que les sirva, me estoy volviendo loco con estas IP's XD pero para que no le pase lo mismo a los demas :P ;D
En línea

Solo los mas debiles son los que no quieren ni estan dispuestos a dejar de depender de los demas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
ASM
S3kh 7 8,860 Último mensaje 4 Febrero 2011, 20:56 pm
por S3kh
Problema con violación de segmento « 1 2 »
Programación C/C++
Triper0 17 16,560 Último mensaje 8 Noviembre 2015, 21:34 pm
por alesurf1989
Nping - Evitar segmento TCP RST
Redes
pablox_co 5 3,909 Último mensaje 15 Agosto 2013, 12:07 pm
por pablox_co
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines