Portscanner in Delphi

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von didda, 2. August 2005 .

Schlagworte:
  1. 2. August 2005
    jo moin, hab einfach mal versucht nen Portscanner in Delphi zu schreiben, aber irgendwie scheitere ich.. als erstes mal der code:
    Code:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
     If Not (Key in ['0'..'9', '.', #8]) Then Begin
     Key:=#0;
     End;
    end; //Hab ich nur eingebaut damit man in das Editfeld wo die IP reinsoll nur Zahlen amchen kann
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    memo1.Lines.Clear;
    tcpclient1.remotehost := edit1.text;
    for i := spinedit1.Value to spinedit2.Value do //In den Spinedits werden der andfangsport und der endport festgelegt
    begin
    try
    TcpClient1.RemotePort := inttostr(i); //hier wird der port an den tcp socket übergeben
    TcpClient1.open; //Hier soll versucht werden den port zu öffnen
    TcpClient1.Close; // wenn er offen ist wird jetzt wieder geschlossen
    Memo1.Lines.Add('Port ' + inttostr(i) + ' ist serverseitig geöffnet'); //eintrag in ein memofeld 
    application.ProcessMessages;
    except
    application.ProcessMessages;
    memo1.Lines.add('Port ' + inttostr(i) + ' ist serverseitig geschlossen'); //hier sollen die eingetragen werden bei denen der port zu ist
    end;
    end;
    
    end.
    Mein Problem ist jetz dass der Scnner mir bei jedem Server und bei jeder IP sagt dass der Port offen ist. Wenn ich aber mit anderen tools nachgucke ist es so das der port zu ist. Welchen fehler hab ich in meinem code? (is übrigens mein erster code netzwerk kram betreffend, ich bitte um nachsicht )
    Wär cool wenn ihr mir helfen könntet..
    MfG,
    didda
     
  2. 3. August 2005
    Hi!
    Meiner Meinung nach liegt der Fehler in Zeile 16-17:
    Code:
    TcpClient1.open; //Hier soll versucht werden den port zu öffnen
    TcpClient1.Close; // wenn er offen ist wird jetzt wieder geschlossen
    Memo1.Lines.Add('Port ' + inttostr(i) + ' ist serverseitig geöffnet'); //eintrag in ein memofeld
    Nimm das except-Zeug raus und änder' das folgendermaßen:
    Code:
    TcpClient1.open
    if TcpClient1.Connected then begin
     Memo1.Lines.Add('Port ' + inttostr(i) + ' ist serverseitig geöffnet');
     TcpClient1.Close;
    end;
    (Es kommt auf "TcpClient1.Connected" an, der Wert, boolean, zeigt an, ob die Komponente verbunden ist...)

    Wenn's nicht klappt, upp doch mal die Komponente, hätte ich auch gerne, wenn sie gut ist...
    (Oder ist's die von Indy? Dann muss die Methode klappen...)

    CyK
     
  3. 3. August 2005
    jo, jetz gehts, den boolean wert hab ich echt vergesse,m it dem try except wolllt ich machen dass wenn der socket nich connecten kann das programm keinen fehler ausgibt.

    Die komponente tcpsocket is bei delphi 2005 dabei, hab eben nachgeguckt, bei delphi 7 is se auch dabei, is im register internet oder internet express zu finden.
    Danke für die hilfe, jetz bin ich ja schonma für mein nächtes kleineres projekt gerüstet, will mir nämlich nen ip-scanner schreiben
     
  4. 7. August 2005
    hehe aber wenn du das so einfach nur machst dauerts Jahre ;-)


    da musste schon mit Threads arbeiten
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.