Portscanner für Dummies *g* oder wie codet man einen Portscanner mit VB by SnakeByte [SnakeByte@kryptocrew.de] Ok, Elmex fragte mich wie ein Portscanner funzt und meinte ein Tutorial drüber wär nicht schlecht.. so here we go ;) Ok, was ist ein Port ? .. Nehmen wir ein simples Beispiel ihr habt die Adresse von einem Haus, in unserem Fall die IP-Adresse. Ein Port stellt in diesem Fall die Wohnungstür der einzelnen Bewohner da. Die Bewohner sind diesem Beispiel so freundlich und öffnen die Tür immer sobald ich klingele ;) Was mach ich nun, wenn ich wissen will welche Bewohner da sind ? Ich fang an bei Klingel 1 und klingele, dann bei Nr. 2, Nr. 3 etc.. Die Namen der Bewohner kann man hierbei recht einfach anhand der Nummer der Klingel feststellen, da festgelegt ist, das Bewohner Telnet zum Beispiel immer die Klingelnummer 23 hat. Und genau das macht ein Portscanner, er versucht eine Verbindung zu allen Ports herzustellen und wenn einer aufmacht sagt er Bescheid. Hier ein kleines Beispiel eines Portscanners in Visual Basic. Ihr braucht dazu allerdings wie MSWINSCK.OCX, wenn diese nicht in euerem Windows-System Verzeichnis ist, einfach aus dem Netz laden und dorthin kopieren. Dies ist ein sehr langsamer und einfacher Portscanner, da er zum Beispiel nur 1 Socket-Verbindung benutzt, aber zum erklären reicht er... ;) Einfach den folgenden Code in eine Textdatei kopieren und unter FORM1.frm speichern... ----8<---(schnipp)---- VERSION 5.00 Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX" Begin VB.Form Form1 Caption = "Form1" ClientHeight = 3864 ClientLeft = 48 ClientTop = 336 ClientWidth = 4788 LinkTopic = "Form1" ScaleHeight = 3864 ScaleWidth = 4788 StartUpPosition = 3 'Windows Default Begin VB.TextBox Status Height = 3132 Left = 120 Locked = -1 'True MultiLine = -1 'True ScrollBars = 2 'Vertical TabIndex = 4 Top = 600 Width = 3612 End Begin VB.CommandButton Quit Caption = "&Quit" Height = 372 Left = 3840 TabIndex = 3 Top = 1080 Width = 852 End Begin VB.CommandButton Halt Caption = "&Halt" Height = 372 Left = 3840 TabIndex = 2 Top = 600 Width = 852 End Begin VB.CommandButton Start Caption = "&Start" Height = 372 Left = 3840 TabIndex = 1 Top = 120 Width = 852 End Begin VB.TextBox IP Height = 288 Left = 600 TabIndex = 0 Text = "127.0.0.1" Top = 120 Width = 3132 End Begin MSWinsockLib.Winsock Winsock1 Left = 120 Top = 120 _ExtentX = 593 _ExtentY = 593 _Version = 393216 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub Halt_Click() Winsock1.Close 'schließen der Verbindung End Sub Private Sub Quit_Click() End 'beenden des Programmes.. End Sub Private Sub Start_Click() Status.Text = "" 'löschen des Status-Textes Winsock1.RemoteHost = IP.Text 'festlegen der IP Winsock1.RemotePort = 1 'Startport Winsock1.Connect 'versuche zu diesem zu verbinden.. Status.Text = Status.Text & "Scan Port " & Winsock1.RemotePort & vbCrLf End Sub Private Sub Winsock1_Connect() Status.Text = Status.Text & "Port " & Winsock1.RemotePort & " offen ! " & vbCrLf 'Status anzeigen.. Winsock1.Close If Winsock1.RemotePort <= 1000 Then 'wir scannen bis Port 1000 Winsock1.RemotePort = Winsock1.RemotePort + 1 'erhöhen des Ports Winsock1.Connect 'verbindung aufbauen Else Winsock1.Close Status.Text = Status.Text & "Scannen beendet" & vbCrLf 'Status anzeigen End If End Sub Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) Winsock1.Close If Winsock1.RemotePort < 1000 Then 'wir scannen bis Port 1000 Winsock1.RemotePort = Winsock1.RemotePort + 1 'erhöhen des Ports Status.Text = Status.Text & "Scan Port " & Winsock1.RemotePort & vbCrLf Winsock1.Connect 'verbindung herstellen Else Winsock1.Close Status.Text = Status.Text & "Scannen beendet" & vbCrLf 'Status anzeigen End If End Sub ----8<---(schnapp)---- Ich hoffe ihr kommt damit zurecht ... bis dann.. SnakeByte