Feedback

VB - TCP PortScan in VB.NET

Veröffentlicht von am 12/29/2006
(6 Bewertungen)
Dieses Snippet scant auf einem zu definierenden System eine angegebene Portrange.

Als Ergebnis wird zurückgeliefert, ob über den Port eine Verbindung hergestellt werden kann oder nicht.

Auf einem Formular werden die n.g. Steruelemente zur Verfügung gestellt:

1 Listview Steuerelement
1 Command Button
1 Backgroundworker

Die Listview muss 3 Spaten enthalten, View sollte auf Details stehen.
Public startPort As Integer
Public endPort As Integer
Public IPAddress As String

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        Try
            Dim lvi As New ListViewItem(startPort)
            Dim tryToConnect As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient(IPAddress, startPort)

            'Es kann eine Verbindung hergestellt werden
            'somit ist der Port offen
            lvi.SubItems.Add("is opend")
            lvi.ForeColor = Color.Red
            lvi.EnsureVisible()
            BackgroundWorker1.ReportProgress(0, lvi)

        Catch ex As Exception
            'Es kann keine Verbindung hergestellt werden
            'somit ist der Port geschlossen
            Dim lvi As New ListViewItem(startPort)
            lvi.SubItems.Add("is Closed")
            lvi.SubItems.Add(ex.Message)
            lvi.ForeColor = Color.Green
         
            BackgroundWorker1.ReportProgress(0, lvi)

        End Try
End Sub


Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        Dim lvi As New ListViewItem

        'Daten vom Backgroundworker holen
        lvi = e.UserState

        Me.ListView1.Items.Add(lvi)
        'Das akteulle ListviewItem anzeigen
        lvi.EnsureVisible()

End Sub



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        BackgroundWorker1.WorkerReportsProgress = True
        BackgroundWorker1.WorkerSupportsCancellation = True

        IPAddress = "10.0.0.1"
        startPort = 100
        endPort = 110

        For startPort = startPort To endPort
            Me.BackgroundWorker1.RunWorkerAsync()

            'Da ein Backgroundworker immer nur eine
            'Aufgabe ausführen kann, warten wir hier
            'bis er fertig ist und mit der nächsten
            'Aufgabe weitermachen kann
            While Me.BackgroundWorker1.IsBusy = True
                Application.DoEvents()
            End While
        Next

End Sub
Abgelegt unter TCP PortScan.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!