Bienvenido a Tecnohackers

Tecnohackers » General del foro » Area de Programacion » Programacion a Alto Nivel. Visual Basic, Java, delphi, etc. (Moderadores: jarexalf, Doddy)
 » 

[VB.NET]Creando un simple escaneador de puertos



Autor Tema: [VB.NET]Creando un simple escaneador de puertos  (Leído 786 veces)

Desconectado 3xN

  • Co-Admin
  • Colaborador
  • *****
  • Mensajes: 716
[VB.NET]Creando un simple escaneador de puertos
« en: Agosto 20, 2010, 05:49:07 pm »
Bueno en este artículo voy a explicar o comentar como hacer un escáner de puertos en VB.NET, para ello y como ejemplo utilizaremos el que hice hace algún tiempo. El resultado final será: No puedes ver links Registrate o Login
Antes de comenzar debemos de comprender que hace un escaneador de puertos, es algo fácil de comprender y muy racional, lo que hace es intentar conectarse a un equipo a través de un puerto, si este puerto está cerrado no podrá conectarse.
No puedes ver links Registrate o Login

Le haremos dos funciones
-   Escanear un solo puerto
-   Empezar desde el 1 hasta que se paré

Vamos a necesitar dos textbox, uno para el puerto y otro para la ip, un checkbox para seleccionar si un puerto o todos, dos botones uno para comenzar y otro para parar el escaneo y dos listbox uno para los todos los puertos y otro para los abiertos.
Necesitaremos un timer, para que repita la acción de escanear cada X tiempo, pero este no es del todo necesario ya que la función de todos los puerto se puede hacer con un for o con do…loop, haciendo un if para que nunca caiga en el bucle infinito. En este caso lo haremos con un timer, pero insisto no es necesario.

Definimos tres variables, la del puerto, la del host, y un contador para que el puerto vaya aumentando.
Código: No puedes ver links Registrate o Login
Dim host As String
Dim port As Integer
Dim counter As Integer = 0

Pasamos al código del timer. Primero de todo debemos de comprobar cual de las dos funciones quiere el usuario, comprobando en el checkbox.
Si está activado le sumamos uno al contador para ir sumándole uno a uno, el número que se va creando lo igualamos a la variable “port” que será el puerto al que se intente conectar, y la variable host se iguala al textbox del host.
Código: No puedes ver links Registrate o Login
If tick_all.Checked = True Then
        counter = counter + 1
        port = counter
        tx_port.Text = counter
Else
        port = tx_port.Text
End If
        host = tx_host.Text

Ahora que ya esta definido el host y el puerto vamos a configurar la conexión
Código: No puedes ver links Registrate o Login
Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
Dim s As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)

Definimos la variable hostadd que será a donde nos conectaremos, del tipo ip como se muestra en la definición. EPhost el puerto y el equipo, se utiliza el tipo System.Net.IPEndPoint es decir un host y un puerto.
La variable s, será el socket final, tipo de socket y tipo de conexión, es decir TCP.
Una vez definido y creado el socket para conectarnos, nos conectamos. Lo haremos así

Código: No puedes ver links Registrate o Login
  Try
       s.Connect(EPhost)
  Catch
       Msgbox(“Se ha producido un error”)
  End Try

Se usa el try por si al conectarse ocurre cualquier error no interrumpa nuestra aplicación. Se conecta al SPhost, que antes definimos (Host y puerto).

Código: No puedes ver links Registrate o Login
If Not s.Connected Then
    ListBox1.Items.Add("Puerto " + port.ToString + " cerrado")
Else
    ListBox1.Items.Add("Puerto " + port.ToString + " abierto")
    ListBox2.Items.Add("Puerto " + port.ToString + " abierto")
End If

Comprueba si se pudo conectar, si no se pudo se añade al listbox1, donde estará todos los puertos abiertos y cerrados, y en el listbox2 solo estarán los abiertos.
Le añadiremos un label que nos dirá todos los puertos que hay abiertos, pero el número. En mí caso será label3.
Código: No puedes ver links Registrate o Login
Label3.Text = "Open Ports: " + ListBox2.Items.Count.ToString
Con esta línea cuenta los items del listbox, es decir por cada puerto abierto que antes añadimos al listbox

El código final del timer, para ver si se tiene que parar o no, es decir si el checkbox que indicaba la función de un puerto o todos.
Código: No puedes ver links Registrate o Login
If tick_all.Checked = False Then
    Timer1.Stop() ‘Para el timer
    Button1.Enabled = True ‘Boton de aceptar activado
    Button2.Enabled = False ‘boton de parar desactivado
End If
El código del botón de aceptar el que activaría todo:
Código: No puedes ver links Registrate o Login
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _ As System.EventArgs) Handles Button1.Click
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        ListBox1.Items.Add("Scanning: " + tx_host.Text)
        ListBox1.Items.Add("-------------------")
        Button2.Enabled = True
        Button1.Enabled = False
        Timer1.Start()
End Sub
Este código lo que hace es limpiar los listbox por si se había ejecutado antes. Se añade la ip al listbox, esto no es necesario pero siempre se queda mejor. Se activa el botón de parar, el de stop, y se desactiva el botón de escanear. Y se inicia el timer que fue al que antes le añadimos el código.
Los botones, el botón de parar (stop), le daremos enabled=false, ya que no se puede parar antes de comenzar, y su código seria
     
Código: No puedes ver links Registrate o Login
Timer1.Stop()
 Button1.Enabled = True
 Button2.Enabled = False

Como dije al principio del mini-articulo, es algo bastante fácil de hacer y simple. Si he cometido algún error o cualquier problema avisen.

SAludos

Fuente: geekhispano.com
« última modificación: Agosto 20, 2010, 07:12:06 pm por ninfas »

No puedes ver links Registrate o Login

Desconectado Necrófero

  • Gran Colaborador
  • ****
  • Mensajes: 1697
    • TecnoHackers
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #1 en: Agosto 20, 2010, 05:57:52 pm »
Es super fácil .NET , muy buena explicación  ;)

No puedes ver links Registrate o Login

Desconectado char

  • Gran Colaborador
  • ****
  • Mensajes: 1387
  • Ingeniero de Sistemas
    • TIC´S
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #2 en: Agosto 20, 2010, 06:17:25 pm »
Primero el link del recurso no lleva a ningún archivo segundo sí no existe para un nuevo en .Net no sabría que tipos de elementos llevaría el formulario principal, medio leyendo hay botones, listBox, label, etc. En conclusión sería bueno dejar una captura del formulario.

Muy buen aporte  ;)

::Así es Volví::

Desconectado 3xN

  • Co-Admin
  • Colaborador
  • *****
  • Mensajes: 716
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #3 en: Agosto 20, 2010, 07:08:45 pm »
No puedes ver links Registrate o Login
Primero el link del recurso no lleva a ningún archivo segundo sí no existe para un nuevo en .Net no sabría que tipos de elementos llevaría el formulario principal, medio leyendo hay botones, listBox, label, etc. En conclusión sería bueno dejar una captura del formulario.

Muy buen aporte  ;)

En el link de descarga del source, se habia colado una ".  La idea es bajar el source e ir leyendo, para entender lo que hace paso a paso  ;). Aunque tienes razon, seria bueno haber puesto una captura.

Edit: ahi se la añadi
« última modificación: Agosto 20, 2010, 07:12:30 pm por ninfas »

No puedes ver links Registrate o Login

Desconectado char

  • Gran Colaborador
  • ****
  • Mensajes: 1387
  • Ingeniero de Sistemas
    • TIC´S
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #4 en: Agosto 20, 2010, 07:33:14 pm »
Ahora si  ;) por ahí tengo uno que escanea por toda la Lan y muestra las IP´s y las Mac´s de los PC´s conetados pronto lo subo...

::Así es Volví::

Desconectado JJBreaker

  • Recien Llegado
  • *
  • Mensajes: 2
  • Unlimited Games!
    • Unlimited Games Community Gamers
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #5 en: Septiembre 01, 2011, 12:27:05 am »
Hola gente y admin ^^

podrías re-subir el proyecto? el link de arriba ya murió :/

Gracias por el post!

Desconectado 3xN

  • Co-Admin
  • Colaborador
  • *****
  • Mensajes: 716
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #6 en: Septiembre 01, 2011, 10:47:45 am »
No puedes ver links Registrate o Login

No puedes ver links Registrate o Login

Desconectado JJBreaker

  • Recien Llegado
  • *
  • Mensajes: 2
  • Unlimited Games!
    • Unlimited Games Community Gamers
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #7 en: Septiembre 01, 2011, 11:57:08 am »
Que rapidez ^^ Gracias! ;)

Desconectado Daio_max

  • Recien Llegado
  • *
  • Mensajes: 1
Re:[VB.NET]Creando un simple escaneador de puertos
« Respuesta #8 en: Septiembre 16, 2011, 06:35:52 pm »
Gracias :)

Tags:

 

Related Topics

  Asunto / Iniciado por Respuestas Último mensaje
0 Respuestas
219 Vistas
Último mensaje Mayo 04, 2009, 07:32:44 am
por Arwen
0 Respuestas
150 Vistas
Último mensaje Junio 23, 2009, 11:31:11 am
por Arwen
0 Respuestas
50 Vistas
Último mensaje Noviembre 13, 2011, 06:45:33 am
por zolo
0 Respuestas
106 Vistas
Último mensaje Diciembre 19, 2011, 09:03:01 pm
por merovingio


SMF 2.0.2 | SMF © 2011, Simple Machines
Paginas Afiliadas
InfraBios - i-hacker - Twitter - FaceBook - Troyanosyvirus - LaWebDeGoku - daraxblog
Designed by Smf Personal