Underc0de

Programación Web => Back-end => Mensaje iniciado por: arthusu en Marzo 29, 2013, 11:10:20 PM

Título: Miniscanner de puertos en PHP
Publicado por: arthusu en Marzo 29, 2013, 11:10:20 PM
Bueno siguiendo la idea de Sanko en su post: http://underc0de.org/foro/ruby/easy-portscanner-sanko/
pues entonces pense que se podia hacer en php y pues aqui lo dejo, no soy muy bueno programando pero a lo mejor  alguien le sirve....

(http://i.imgur.com/38UAjjm.png)
(http://i.imgur.com/MWfs1kw.png)

Código (php) [Seleccionar]
<title>Escaner puertos</title>
<style>
body{
background-color: black;
color:white;
}
</style>
<?php
//no se cuantos puertos escanearemos entonces dejo que el script pueda ejecutarse y se tome su tiempo :P
set_time_limit(0);
//si existe enviar entonces.... que realice los siguientes procesos
if(isset($_POST['enviar'])){
//atrapo todos los parametros del formulario y les quito xss :P
$url=htmlentities($_POST['url'],ENT_QUOTES);
$pi=htmlentities($_POST['pi'],ENT_QUOTES);
$pf=htmlentities($_POST['pf'],ENT_QUOTES);
//si no esta vacio ninguno de los campos Nota: Esto se puede validar mucho mas tanto como tu quieras...
if(!empty($url) && !empty($pi) && !empty($pf)){
//le muestro un mensaje con el objetivo y uno que espere mientras esta escaneando...
echo '<h3>Objetivo:<font color="red">'.$url."</font></h3><br />";
echo 'Espere mientras se esta escaneando puede tardar.<blink>.</blink><blink>.</blink><br />';
//le asigno a $i el valor de pi que es el puerto inicial y mientras el puerto inicial sea menor al puerto final va aumentar de 1 a 1
for($i=$pi;$i<=$pf;$i++){
//si la coneccion se realizo existosamente entonces el puerto esta abierto
//los parametros de fsockopen son la url,puerto,error coneccion,error coneccion,tiempo limite
if($connect=@fsockopen($url,$i,$errno,$errstr,5)){
echo '<font color="#30E319">Puerto abierto:'.$i."</font><br />";
//cierro la coneccion
@fclose($connect);
//borro la variable connect se creara arriba
unset($connect);
}else{
//si no se realizo la coneccion no devuelvo nada
echo NULL;
//echo 'Puerto cerrado:'.$i."<br />"
}
//libero el buffer
flush();
}
}else{
//si los campos estan vacios muestra un mensaje y el formulario
echo '<b>Rellena los campos correctamente</b><br />';
echo '
<h1>MiniScanner de Puertos:</h1>
<form action="" method="post">
<b>Ingresa la url:</b><input name="url" type="text" value="www."><br />
<b>Ingresa el puerto inicial:</b><input name="pi" type="text"><br />
<b>Ingresa el puerto final:</b><input name="pf" type="text"><br />
<input name="enviar" type="submit">
</form>
'
;
}
}else{
//sino existe enviar que me muestre el formulario
echo '
<h1>MiniScanner de Puertos:</h1>
<form action="" method="post">
<b>Ingresa la url:</b><input name="url" type="text" value="www."><br />
<b>Ingresa el puerto inicial:</b><input name="pi" type="text"><br />
<b>Ingresa el puerto final:</b><input name="pf" type="text"><br />
<input name="enviar" type="submit">
</form>
'
;
}

?>


Nota: Antes de que que me troleen pueden hacerme criticas constructivas :P xD salu2
Título: Re:Miniscanner de puertos en PHP
Publicado por: 2Fac3R en Marzo 30, 2013, 11:08:16 PM
Yo también hice uno cuando leí sobre sockets en php jeje

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Nota: Antes de que que me troleen pueden hacerme criticas constructivas :P xD salu2

No soy bueno troleando, así que me paso a las criticas constructivas xD...


Y en:

Código (PHP) [Seleccionar]

if(!empty($url) && !empty($pi) && !empty($pf)){...


Puedes hacerlo más "simple":

Código (PHP) [Seleccionar]

if(!empty($url)&&($pi)&&($pf)){...
8)

Zalu2!  ;D
Título: Re:Miniscanner de puertos en PHP
Publicado por: arthusu en Marzo 31, 2013, 01:54:56 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Yo también hice uno cuando leí sobre sockets en php jeje

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Nota: Antes de que que me troleen pueden hacerme criticas constructivas :P xD salu2

No soy bueno troleando, así que me paso a las criticas constructivas xD...


  • Deberías empezar a usar funciones para una mejor "Programación estructurada"
  • Te recomiendo usar Operaciones Ternarias, así es más legíble el código ;)

Y en:

Código (PHP) [Seleccionar]

if(!empty($url) && !empty($pi) && !empty($pf)){...


Puedes hacerlo más "simple":

Código (PHP) [Seleccionar]

if(!empty($url)&&($pi)&&($pf)){...
8)

Zalu2!  ;D
Gracias bro :D salu2
Título: Re:Miniscanner de puertos en PHP
Publicado por: Okol en Abril 16, 2013, 12:52:54 PM
Muy bueno tu aporte, lo único es que concuerdo con 2facer, deberías comenzar a usar funciones; Es más sencillo y mucho más ordenado.
Saludos hermano.
Título: Re:Miniscanner de puertos en PHP
Publicado por: arthusu en Abril 16, 2013, 02:15:33 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Muy bueno tu aporte, lo único es que concuerdo con 2facer, deberías comenzar a usar funciones; Es más sencillo y mucho más ordenado.
Saludos hermano.
Gracias por la sugerencia la tomare en cuenta bro salu2
Título: Re:Miniscanner de puertos en PHP
Publicado por: F0M3T en Abril 16, 2013, 02:48:57 PM
Esta bueno.
Saludos.
Título: Re:Miniscanner de puertos en PHP
Publicado por: WHK en Abril 18, 2013, 02:35:40 PM
Está bien bueno, pero podrias potenciarlo un poco mas, por ejemplo utilizando hilos de proceso para escanear de 5 en 5 puertos y la posibilidad de establecer manualmente el tiempo limite de conección del socket ya que talves queremos detectar algo que se demora en abrir.

¿Como se pueden hacer hilos o threads en php?, no se puede :P a menos que lo hagas desde la consola con forks o alguna librería especial, pero si se puede simular desde javascript.

Por ejemplo... tienes la vista en html con los botones, al hacer click javascript llamará 5 veces a una misma función no sincronizada, por ejemplo usando setTimeOut(function(){ ... }, 0) esto hará que se hagan 5 peticiones web al mismo archivo del escaneador pero con variables, donde pueden ser por ejemplo, ip, timeout del socket, puerto, etc.

Despues el retorno de este script que lo vaya mostrando en la vista de html con un cargador por cada socket.

Si lo haces no utilices gif animados porque si pones varios mas el settimeout vas a causar que se queden pegados, mejor usa css3:
http://fortawesome.github.io/Font-Awesome/

Ahi hay buenas animaciones.

Saludos.