Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/10/2006, 16:32
Avatar de ZydRick
ZydRick
 
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 3 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