Port Scanner mit Visual Basic erstellen – So gehts

Ein Port Scanner ist eine gute Möglichkeit den eigenen Server auf offene Ports zu scannen.Zu viele nicht benötigte und offene Ports können auf Ihrem Server und auf Ihrem Computer ein Sicherheitsrisiko darstellen, deswegen sollte regelmäßig überprüft werden, ob möglicherweise unbeabsichtigt welche geöffnet worden sind. Es gibt bereits einige fertige Port Scanner zum herunterladen im Internet. – Dennoch möchte ich Ihnen zeigen, wie Sie mit wenig Aufwand einen eigenen programmieren können.

Zuerst benötigen wir Visual Studio 2010 Express Visual Basic. Dieses ist eine kostenlose Software von Microsoft, die es uns ermöglicht eigene Programme zu schreiben. Die benötigte Software erhalten Sie hier: http://go.microsoft.com/?linkid=9709933

Nach der Installation kann es auch schon losgehen. Für unseren Port Scanner erstellen wir zunächst ein neues Projekt:

  • Datei -> Neues Projekt -> Windows Forms Anwendung
neuesprojekt

 

Nun erscheint ein neues Fenster mit einer kleinen, grauen Box. Passen Sie die Boxgröße nach Ihren Wünschen an und erstellen Sie mithilfe der Toolbox auf der Linken hälfte folgende Elemente:

  • 2x Buttons
  • 3x Label
  • 3x Textbox
  • 1x Progress Bar
  • 1x ListView
  • 1x BackgroundWorker
Das Ganze sieht dann später so aus:

portscanner

Im obigen Bild sind allerdings schon einige grafische Änderungen vorgenommen. Diese sind aber für die Funktion des Port Scanners nicht relevant.

Letztendlich wollen wir erreichen, dass bei Eingabe der IP-Adresse und der Ports nach dem Klicken des Startbuttons der Scanvorgang beginnt. Ist ein offener Port entdeckt worden, wo wird in der Liste auf der rechten Seite dieser Port angezeigt mit dem Zusatz “ist offen”. Während der Suche zeigt der Ladebalken den Fortschritt an. Ein Klick auf “Clear” sorgt dafür, dass der Inhalt in der Liste wieder verschwindet.

Haben Sie nun alle Elemente entsprechend Angeordnet, muss natürlich noch das eigentliche Programm geschrieben werden. Der Code meines Programms sieht folgendermaßen aus:

Public Class Form1
Public startPort As Integer
Public endPort As Integer
Public IPAddress As String
Public MaxValue As Integer
Public CurrentValue As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

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 = TextBox1.Text
startPort = TextBox2.Text
endPort = TextBox3.Text

MaxValue = endPort + 1

Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = MaxValue

For Me.startPort = startPort To endPort
Me.BackgroundWorker1.RunWorkerAsync()
While Me.BackgroundWorker1.IsBusy = True
Application.DoEvents()
End While
Next

Me.ProgressBar1.Value = 0

End Sub

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)
lvi.SubItems.Add(“ist offen”)
lvi.ForeColor = Color.Green
lvi.EnsureVisible()
BackgroundWorker1.ReportProgress(startPort, lvi)

Catch ex As Exception

End Try

End Sub

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Dim lvi As New ListViewItem
lvi = e.UserState
Me.ListView1.Items.Add(lvi)
lvi.EnsureVisible()
Me.ProgressBar1.Value = e.ProgressPercentage

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ListView1.Items.Clear()
End Sub

End Class

Sicherlich ist dort noch Spielraum vorhanden, wie z.B. da Abspielen eines Tons, sobald ein Port gefunden wurde, aber dass kann natürlich jeder für sich selbst noch einbauen.

Im Grunde sehen wir nun eine Windows Forms Anwendung, wo in Textbox1 die IP-Adresse, in Textbox2 der Anfangsport und in Textbox3 der Endport eingegeben wird. Außerdem haben wir einen Startbutton, der nach dem Klick die eingegebenen von-bis Werte abscannt und den Fortschritt anhand der Progressbar zeigt. Die Listview sorgt dafür, dass gefundene Ports aufgelistet werden und in unserem Fall die Zahl in grüner Farbe zu sehen ist.

Der obige Code ist relativ einfach gehalten, sodass mögliche Änderungen recht schnell vorgenommen werden können.

Mit einem Klick auf den grünen Pfeil oben in der Liste, können Sie überprüfen, ob Ihr Programm später auch funktionieren wird. Klappt alles, dann können Sie Ihr Projekt nun fertigstellen und es benutzen. Dazu müssen Sie lediglich oben in der Kopfzeile auf den Punkt “Projekt” gehen und den vorletzten Punkt auswählen, nämlich die Eigenschaften Ihres Projekts.

Sie können nun schauen, ob Sie weitere Einstellungen vornehmen möchten, oder im letzten Punkt auf “Veröffentlichen” gehen.

Normalerweise werden erstellte Programme im Ordner ->Dokumente -> Visual Studio ->Projekt -> Projektname -> bin gespeichert. Sie können den Pfad in den Eigenschaften aber auch ändern.

Viel Spaß beim Nachmachen. Verbesserungsvorschläge werden gern angenommen :-)

 

 

About Manuela

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert