Foros del Web » Programando para Internet » PHP »

escanear puertos

Estas en el tema de escanear puertos en el foro de PHP en Foros del Web. Hola amigos, tengo un pekeño script para scanear puertos, sencillo pero funciona bien, funciona de esta manera: pones la direccion www.tuweb.com/scan.php?ip=aqui_la_ip escribiendo la ip correcta ...
  #1 (permalink)  
Antiguo 05/10/2006, 10:35
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
escanear puertos

Hola amigos, tengo un pekeño script para scanear puertos, sencillo pero funciona bien, funciona de esta manera:

pones la direccion www.tuweb.com/scan.php?ip=aqui_la_ip escribiendo la ip correcta te dice ke puertos tienes abiertos y cuales no lo ke yo kiero es ingresar dicha ip desde un formulario y ke al enviarla a dicha url me arroje los puertos abiertos ya ke de momento solo funciona escribiendo toda la url incluyendo la ip he tratado muchas formas pero no consigo lo ke kiero, el script en mecion es el siguiente:

Código PHP:
<div style="text-align: center;">
<table style="border: 1px dashed #000000;" width="50%">
    <tr style="background-color: #E1E1E1; font: 10px Tahoma;">
        <td width="15%" style="text-align: center;"><b>Status</b></td>
        <td width="25%" style="text-align: center;"><b>Puerto</b></td>
        <td width="60%" style="text-align: center;"><b>Descripción</b></td>
    </tr>
<?php

# Pongo el time limit en 0 para que no se acabe el script por time limit.
set_time_limit(0);

# Cojo los puertos de puertos.txt y los meto en un array
$db file('puertos.txt');
foreach (
$db as $a=>$b) {
    
$puerto explode(" ",$b);
    
$desc str_replace($puerto[0]." ","",$b); 
    
$ports[$puerto[0]] = $desc;
}

# Verifico que la ip sean numeros
if(is_numeric(str_replace(".","",$_GET['ip']))) {
    
# Con este foreach verifico todos los puertos
    
foreach($ports as $a=>$b) {
        
# Si conecto pongo que conecto
        
if(conecta($a)) {
            
pon($a,$b,"./images/on.gif");
        }
        
# Si no conecto pongo que no conecto
        
else {
            
pon($a,$b,"./images/off.gif");
        }
    }
}
else { die(
"La ip debe contener solamente numeros."); }

# Función que me dice si el puerto esta abierto o no
function conecta ($port) {
    
$conexion = @fsockopen($_GET['ip'],$port,$errno,$errstr,5);
    @
fclose($conexion);
    if(
$conexion) return 1;
    else return 
0;
}

# Función que pone si el puerto esta abierto o no.
function pon ($port,$desc,$img) { ?>
    <tr style="font: 9px Tahoma;">
        <td width="15%" style="text-align: center;"><img src="<?=$img?>" /></td>
        <td width="25%" style="text-align: center;"><?=$port?></td>
        <td width="60%" style="text-align: left;"><?=$desc?></td>
    </tr>
<? ?>
</table>
</div>
La solucion parece simple pero la verdad es ke yo me estoy liando muchisimo, espero ke alguno de uds. me pueda echar una mano con ello, gracias de antemano.

Saludos

Última edición por ZydRick; 05/10/2006 a las 14:35
  #2 (permalink)  
Antiguo 05/10/2006, 10:48
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Pues creo que sólo tendrías que crear un formulario común y corriente en donde le especificarás el metodo de envío que a lo que veo es metodo GET pasandole la variable ip que tienes en el imput y lo harías más o menos así:

<form name = "fomu" action = "scan.php" method = "GET">
Teclee la IP a escanear: <input type = "text" name = "ip"><br>
<input type = "submit" name = "submit" value = "Escanear">
</form>

Y creo que eso sería todo. Por cierto podrías poner tu archivo 'puertos.txt' y el código completo? esto que hiciste tal vez podría servirnos a todos. Suerte
  #3 (permalink)  
Antiguo 05/10/2006, 16:32
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Hola finalmente lo pude conseguir pero enviando las variables por post mediante formulario y pues ahora funciona muy bien aki les pongo el script para ke cualkiera ke este mucho mas entendido sobre el tema lo mejore

1. Con un editor de imagenes(Photoshop p. ej.) creamos dos graficos pekeños uno rojo ke indicarake el puerto esta cerrado y uno verde ke indicara ke el puerto esta abierto y lo guardamos en un directorio llamado images.

2. Creamos un archivo txt y lo llamamos puertos y en ello ponemos los puertos mas comunes y su descripcion uno debajo de otro. P. ej.:

Cita:
21 FTP
23 Telnet
3. Luego creamos un formulario:
Código HTML:
<form action="scan.php" method="post">
	<input name="ip" type="text" size="15" maxlength="15" />
	<input type="submit" name="accion" value="Escanear" />
</form> 
4. Finalmente este es el script ke recoge los datos enviados desde el formulario y los procesa para luego arrojar los resultados del analisis:

Código PHP:
<table style="border: 1px solid #0066cc;" width="70%">
    <tr>
        <td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px; color: #FFF; background: #0066cc; font-weight: bold;">Status</td>
        <td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px; color: #FFF; background: #0066cc; font-weight: bold;">Puerto</td>
        <td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px; color: #FFF; background: #0066cc; font-weight: bold;">Descripción</td>
    </tr>
    <?php
    
        
# Pongo el time limit en 0 para que no se acabe el script por time limit.
        
set_time_limit(0);
        
        
# Cojo los puertos de puertos.txt y los meto en un array
        
$db file('puertos.txt');
        foreach (
$db as $a=>$b) {
            
$puerto explode(" ",$b);
            
$desc str_replace($puerto[0]." ","",$b); 
            
$ports[$puerto[0]] = $desc;
        }
        
        
# Verifico que la ip sean numeros
        
if(is_numeric(str_replace(".","",$_POST['ip']))) {
            
# Con este foreach verifico todos los puertos
            
foreach($ports as $a=>$b) {
                
# Si conecto pongo que conecto
                
if(conecta($a)) {
                    
pon($a,$b,"./images/on.png");
                }
                
# Si no conecto pongo que no conecto
                
else {
                    
pon($a,$b,"./images/off.png");
                }
            }
        }
        else { die(
"La ip debe contener solamente numeros."); }
        
        
# Función que me dice si el puerto esta abierto o no
        
function conecta ($port) {
            
$conexion = @fsockopen($_POST['ip'],$port,$errno,$errstr,5);
            @
fclose($conexion);
            if(
$conexion) return 1;
            else return 
0;
        }
        
        
# Función que pone si el puerto esta abierto o no.
    
function pon ($port,$desc,$img) { ?>
    <tr>
        <td style="text-align: center; border: 1px solid #e0e0e0; background: #f7f7f7; padding: 5px;"><img src="<?=$img?>" alt="Resultado de an&aacute;lisis" /></td>
        <td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px;"><?=$port?></td>
        <td style="text-align: left; border: 1px solid #e0e0e0; background: #f7f7f7; padding: 5px;"><?=$desc?></td>
    </tr>
    <? ?>
</table>
Eso seria todo, espero ke les sirva de ayuda y si alguien sabe como poder mejorarlo pues se agradece su colaboracion.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:41.