Crea tu propio PortScanner Asincrono de Consola en VB.NET en solo 3 pasos

  • 1 Respuestas
  • 797 Vistas

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

Desconectado 79137913

  • *
  • Co Admin
  • Mensajes: 708
  • Actividad:
    0%
  • Country: 00
  • Reputación 136
  • 4 Esquinas
  • Skype: [email protected]
    • Ver Perfil
    • Doors.Party
    • Email
HOLA!!!

Hoy veremos como crear un PortScanner asincrono con VB.NET!

1)Primero crearemos el proyecto


2)Entramos en la seccion de Codigo Fuente de nuestra aplicacion y pegamos lo siguiente:
Código: (vbnet) [Seleccionar]
'By 79137913 for http://underc0de.org
Imports System.Net.Sockets
Imports System.Net
Imports System.Threading
Module PortScanner
    Sub Main()
        'Creamos el banner
        Console.WriteLine("  _    _           _                ___      _      ")
        Console.WriteLine(" | |  | |         | |              / _ \    | |     ")
        Console.WriteLine(" | |  | |_ __   __| | ___ _ __ ___| | | | __| | ___ ")
        Console.WriteLine(" | |  | | '_ \ / _` |/ _ \ '__/ __| |/| |/ _` |/ _ \")
        Console.WriteLine(" | |__| | | | | (_| |  __/ | | (__| |_| | (_| |  __/")
        Console.WriteLine("  \____/|_| |_|\__,_|\___|_|  \___|\___/ \__,_|\___|")
        Console.WriteLine("                            Port Scanner By 79137913")
        Console.WriteLine("")

        Console.WriteLine("Inserte el Puerto de inicio:    ")
        Dim PortIni As Integer = Console.ReadLine 'Solicitamos el Puerto de inicio
        Console.WriteLine("Inserte el Puerto de finalizacion: ")
        Dim PortFin As Integer = Console.ReadLine 'Solicitamos el Puerto de Finalizacion
        Console.WriteLine("Inserte IP a escanear: ")
        Dim IP As String = Console.ReadLine
        If IPAddress.TryParse(IP, Nothing) = False Then 'Si el ip esta mal escrito
            Console.WriteLine("El IP Ingresado es erroneo.")
            Exit Sub
        End If

        If PortIni <= 0 Then PortIni = 1 'Verificamos que ninguno de los dos puertos sea 0 o menor
        If PortFin <= 0 Then PortFin = 1 'Verificamos que ninguno de los dos puertos sea 0 o menor
        If PortFin < PortIni Then 'Si el puerto de incio es mayor que el puerto final los intercambiamos
            Dim Aux As Integer
            Aux = PortIni
            PortIni = PortFin
            PortFin = Aux
        End If
        If PortFin > 65535 Then PortFin = 65535 'Verificamos que el puerto final no sea mayor que 65535

        For port = PortIni To PortFin
            Dim auxPort As Long = port 'Creamos una variable auxiliar para manejar la funcion lambda de una manera segura.
            Task.Run(Sub() CheckPort(auxPort, IP))
        Next
        Console.WriteLine("Espere los resultados o presione ENTER para salir.")
        Console.ReadLine() ' Esperamos los resultados
    End Sub

    Private Sub CheckPort(ByVal port As Long, ByVal IP As String)
        Dim myTcpClient As New TcpClient() ' Creamos un cliente TCP
        Try
            myTcpClient.Connect(IP, port) 'Creamos una conexion con el ip y puerto
            Console.WriteLine("Puerto " + port.ToString() + " Abierto ")
            myTcpClient.Close() 'Cerramos la conexion
        Catch ex As SocketException
            Console.WriteLine("Puerto " + port.ToString() + " Cerrado " + ex.Message)  'Si hay un error lo ponemos como cerrado e indicamos cual es la causa.
        End Try
    End Sub
End Module

3)Cuando ya colocamos el codigo solo queda iniciar (apretar F5) e ir respondiendo lo que nos pide el programa:


Descargar Source: http://www.mediafire.com/file/6dup4er1u4otdec/PortScanner.rar

Hecho y redactado por 79137913

Agradecimientos @Antrax

Para los curiosos:
Veran que mediante el metodo Task.Run Pude ejecutar funciones de forma asincrona, esto nos sirve para que el codigo no se quede esperando a que cada puerto sea escaneado y a su vez escanee todos a la vez.
Si quieres ver el codigo en C# te invito a usar el conversor de codigo de http://converter.telerik.com/ es muy facil y practico.

GRACIAS POR LEER!!!
« Última modificación: Diciembre 05, 2019, 10:25:42 am por 79137913 »
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                   DOORS.PARTY

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 154
  • Actividad:
    26.67%
  • Country: 00
  • Reputación 6
  • (:{
    • Ver Perfil
Me gustó y me pareció interesante el aporte.

Soy partidario de que te pases a C#.

También use el vb 6.0, con el antiguo ADO y DAO.

Bueno, Saludos.