[VB]Crear un escaneador de puertos

Iniciado por .;., 31 Mayo 2009, 12:49 PM

0 Miembros y 1 Visitante están viendo este tema.

.;.

Creo este tutorial, para crear un sencillo escaneador de puertos abiertos.

Primero de todo creamos un nuevo EXE Estandar.



Crearemos primero de todo un timer.

Ya creado lo dejamos donde sea en cualquier parte del formulario y le ponemos de Valor Enabled (False) y en Interval (5).

Usaremos para mostrar si tenemos puertos abiertos un Winsock.

Os mostraré como agregarlo.



En la barra de herramientas le damos a Proyecto y en ese menu desplegable le damos a Componentes, si no sabes como dale a [Ctrl+T].

Luego buscamos Microsoft Winsock Control y lo activamos.



Nos saldrá esto en la barra de herramientas.



Y lo ponemos también en nuestro formulario, y no le tocamos nada, porque sus opciones las editaremos después.

Ahora creamos una lista.

Creamos 2 TextBox y 4 Botones .

Nos quedaría algo así.


Ahora le cambiamos los captions a los botones, por los de: Comenzar, Parar, Limpiar, Cancelar.

Y el texto del Text1 por: 127.0.0.1 y el del Text2 por: 1

Y empezamos con el código.

Código (vb) [Seleccionar]

'-----------------------------------
Private Sub Command1_Click()
  Timer1.Enabled = True 'Activa el timer, para que empiece a analizar puertos
  Command1.Enabled = False 'Desactiva el botón Comenzar
  Command2.Enabled = True 'Activa el botón Parar, la primera vez que se inicia no hace nada
End Sub
'-----------------------------------
Private Sub Command2_Click()
  Timer1.Enabled = False 'Desactiva el timer.
  Command1.Enabled = True 'Activa el botón comenzar
  Command2.Enabled = False ' Y desactiva el botón Parar
End Sub
'-----------------------------------
Private Sub Command3_Click()
  List1.Clear 'Limpia la lista de puertos que hayan sido detectados abiertos
End Sub
'-----------------------------------
Private Sub Command4_Click()
  Timer1.Enabled = False ' Desactiva el timer
  Text2.Text = "1" 'Y retorna al principio el remoteport
  Command1.Enabled = True
  Command2.Enabled = True 'Activa los dos botones de comenzar y parar
End Sub
'-----------------------------------

Private Sub Timer1_Timer()
  On Error Resume Next
  Winsock1.Close
  Text2.Text = Int(Text2.Text) + 1 ' va agregando un puerto cada vez que el timer pasa.
  Winsock1.RemoteHost = Text1.Text 'IP
  Winsock1.RemotePort = Text2.Text 'Puerto
  Winsock1.Connect 'Intenta conectarse
End Sub
'-----------------------------------
Private Sub Winsock1_Connect()
List1.AddItem "Puerto: " & Winsock1.RemotePort & " Abierto!" 'En caso de que el winsock se conecte nos lo muestra en la lista, con el puerto correspondiente
End Sub
'-----------------------------------


Y esto sería en realidad todo lo que nos hace falta para crear un escaneador de puertos realmente sencillo.

Luego podemos mejorar su aspecto por otro como este.



Mi proyecto: http://www.megaupload.com/?d=LXEK8A0P


EddyW

Creo que sale muy lento..
pero esta bueno para comenzar por ahi asta llegar ha construir uno mas rapido
yo lo uso creando matrizes de Winsocks, escanea asta 100 puertos por 3 segundos...
haber si lo hago de nuevo y posteo.

Igual esta muy bien.. :)
SaluDOS!!!

.;.

es para principiantes, pero bien.

Gracias!

h0oke

A pesar de que es para principiantes. Lo interesante está en la simplicidad del code.

Salu2!

h0oke

Esta es una función muy interesante para escanear puertos.  ;)

Código (vb) [Seleccionar]
Private Sub wskTCPWinsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
   Dim DataStr As String
   Dim i As Integer
   
   If chkDoPassiveBannerGrabbing.Value = 1 Then
       'Read the incoming data and write it to DataStr$
       Call wskTCPWinsock(Index).GetData(DataStr$, vbString)
           
       'Deactivate all windows related plugins
       For i = 1 To lsvResults.ListItems.Count
           If lsvResults.ListItems.Item(i).SubItems(1) = _
               wskTCPWinsock(Index).RemotePort Then
                                             
               lsvResults.ListItems.Remove (lsvResults.ListItems(i).Index)
               
           End If
       Next i
       
       AddPortToList wskTCPWinsock(Index).RemotePort, DataStr
   ElseIf chkDoActiveBannerGrabbing.Value = 1 Then
       wskTCPWinsock(Index).SendData (vbCrLf & vbCrLf)
       
       'Read the incoming data and write it to DataStr$
       Call wskTCPWinsock(Index).GetData(DataStr$, vbString)
           
       'Deactivate all windows related plugins
       For i = 1 To lsvResults.ListItems.Count
           If lsvResults.ListItems.Item(i).SubItems(1) = _
               wskTCPWinsock(Index).RemotePort Then
                                             
               lsvResults.ListItems.Remove (lsvResults.ListItems(i).Index)
               
           End If
       Next i
       
       AddPortToList wskTCPWinsock(Index).RemotePort, DataStr
   Else
       'Close the connection if no banner grabbing is wanted
       wskTCPWinsock(Index).Close
   End If
End Sub


La saque de un escaneador de puertos de cvb

seba123neo

cuando bajas CSocketMaster te trae un ejemplo de escaner de puertos...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

invisible_hack

Buen tutorial, esto me trae lindos recuerdos de cuando hice mi PortSec  :P
"Si no visitas mi blog, Chuck te dará una patada giratoria"

.;.

Cita de: seba123neo en  3 Junio 2009, 02:33 AM
cuando bajas CSocketMaster te trae un ejemplo de escaner de puertos...
Cierto, lo miré pero este me parece que es muy bueno y realmente rápido, aunque tenga el incoveniente de usar winsock.

CSocketMaster: http://www.megaupload.com/?d=BC2WK7JQ

Karcrack