Port Scanner mit Visual Basic erstellen - So gehts

Transcription

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
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:
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 :-)