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