[Visual Basic] 2008 IP scanner

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von C2C2, 10. April 2010 .

  1. 10. April 2010
    2008 IP scanner

    Also ich wollte mir ein programm schreiben was IP scannt... das klappt ja auch aber es ist so langsamm das ich mir dachte mit threads müsste es schneller gehen....

    Hier mein Code
    Code:
    Imports System.Threading, System.Net.Sockets, System.IO
    
    
    Public Class Form1
     Public Sub scannen(ByVal ip, ByVal port)
     Dim objDateiMacher As System.IO.StreamWriter
     objDateiMacher = New StreamWriter("out.txt", True)
     Dim blacklist As System.IO.StreamWriter
     blacklist = New StreamWriter("blacklist.txt", True)
     Try
    
    
     Dim check As New System.Net.Sockets.TcpClient()
     check.Connect(ip, port)
    
     If check.Connected Then
     objDateiMacher.WriteLine(ip + ":" + port)
     End If
     'MessageBox.Show(ip + ":" + port)
     Catch ex As Exception
     blacklist.WriteLine(ip + ":" + port)
    
     End Try
     blacklist.Close()
     objDateiMacher.Close()
     End Sub
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Dim ansatz As String = "85.13.160."
     Dim port As String = 80
     For i As Integer = 1 To 255
     Dim ip As String = ansatz + i.ToString
     scannen(ip, port)
     Next
     End Sub
    End Class
    
    Wie bekomme ich das jetzt mit multithreading hin??
    weil die variablen müssen ja auch übergeben werden....
     
  2. 10. April 2010
    AW: 2008 IP scanner

    Mit der ParameterizedThreadStart Klasse kannst du angeben welche Funktion (bzw der Delegat) gestartet werden soll und welche Parameter übergeben werden. Man kann nur einen Parameter vom Typ Object übergebn. D.h. du schreibst dir vielleicht ein Struct oder so, welches nur IP und Port enthält und castest es nach der Übergabe wieder in den richtigen Typ.

    Willst du eine IP nach mehreren Ports abscannen oder mehrere IPs nach dem gleichen Port?
    Ich würde dann entweder alle Ports oder alle IPs in eine Queue packen und jeder Thread nimmt sich dann von der Queue den ersten Port oder die erste IP und führt seine Operation aus. Wichtig ist, dass du während des Zugriffs alle anderen Threads sperrst.

    greez

    // ParameterizedThreadStart-Delegat (System.Threading)
     
  3. 10. April 2010
    AW: 2008 IP scanner

    ich will alle ips nach einen port abscannen.....


    wie geht das mit dem was du meintest...`? hab davon noch nie gehört ^^
     
  4. 10. April 2010
    AW: 2008 IP scanner

    Hast du dich denn schonmal mit Threading beschäftigt und weißt wie das grob funktioniert? Das wäre sicher hilfreich. Mit .Net ist das recht gut zu regeln.

    Galileo Computing :: Visual Basic 2005

    Wo bekommst du denn die ganzen IPs her? Liest du die aus ner Datei, legst du eine Range fest?
    Die packst du dann alle in eine Queue.

    Dann schreibst du eine Funktion, welche die Threadfunktion wird, welche also von jedem Thread ausgeführt wird. Diese Funktion besteht aus einer endlosschleife, die erst checkt, ob die Queue leer ist und bricht dann ab und wenn nicht, dann werden alle laufenden Threads gesperrt und es soll das erste Element aus der Queue rausgenommen und gescannt werden.

    Zu dem Sperren der Threads kannst du hier schauen:
    Galileo Computing :: Visual Basic 2005

    Da geht es um ein Mutex, mit dem du einem Thread exklusive Zugriffsrechte auf Objekt einräumst, falls nicht schon ein anderes Objekt drauf zugreift.

    Ich denke, dass dir das schon weiterhelfen sollte, wenn du dich ein wenig reinarbeitest.

    greez
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.