Ports
-
Gibt es eine funktion, wie ich nach Ports suchen kann oder so?
Kann mir da einer Tipps geben, also so ne Art Port Scanner welche Ports benutzt werden, oder offen sind z.B.Wäre lieb...Danke...
-
Von was für Ports reden wir hier? Serial-Ports? Parallel-Ports? TCP/IP-Ports? UDP-Ports? Vielleicht Häfen?
(-;-junix
-
Hier ist ein Beispiel für TCP/IP-Ports (allerdings für dem VC++).
Aber ich denke, dass man das auch leicht für den BCB umschreiben kann.
http://www.nickles.de/c/s/21-0009-152-1.htm
-
[offtopic]
Rettet den Dativ!
[/offtopic][ Dieser Beitrag wurde am 12.02.2003 um 15:10 Uhr von F98 editiert. ]
-
meine natürlich TCP/IP Ports...
hmm viel hilft mir das nicht, aber ist gut gewesen trotzdem, also das was ihr da rausgesucht habt....
gibts es dazu Befehle oder so, die mir weiterhelfen könnten?
-
Habe mal einen einfachen Portscanner erstellt.
Folgende Komponenten habe ich verwendet:
- 4 x TEdit
- 2 x TButton
- 1 x TRichEdit
- 1 x TClientSocketSo, hier dann mal der Code
(ist natürlich noch ausbaufähig, aber als Grundgerüst ganz brauchbar)
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- // Konstruktor //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // initialisiere private Variable AktuellePortNr = 0; } //--------------------------------------------------------------------------- // StartButtonClick //--------------------------------------------------------------------------- void __fastcall TForm1::StartButtonClick(TObject *Sender) { // leere Inhalt von RichEdit PortsRichEdit->Clear(); // stelle Anfangszustand ein Init(); // wenn Eingabe der Portnummern in Ordnung if(PruefePortEingaben()) { // verbinde Socket mit angegebener IP und erster Portnummer VerbindeSocket(); } // Eingabe war nicht in Ordnung else { // gib Meldung aus ShowMessage("Ungültige Angabe der Portnummern!"); // stelle Anfangszustand wieder her Reset(); } } //--------------------------------------------------------------------------- // ScannerConnect //--------------------------------------------------------------------------- void __fastcall TForm1::ScannerConnect(TObject *Sender, TCustomWinSocket *Socket) { // Schreibe geöffnete Ports in RichEdit PortsRichEdit->Lines->Add("Port "+IntToStr(AktuellePortNr)+ " ist offen"); // schliesse Verbindung zu Socket Scanner->Active = false; // erhöhe die Portnummer um eins AktuellePortNr++; // wenn End-Portnummer noch nicht erreicht ist if(AktuellePortNr <= StrToInt(EndPortEdit->Text)) { // verbinde Socket mit neuem Port VerbindeSocket(); } // End-Portnummer ist erreicht else { // gib Meldung aus ShowMessage("Scan beendet!"); // stelle Anfangszustand wieder her Reset(); } } //--------------------------------------------------------------------------- // ScannerError //--------------------------------------------------------------------------- void __fastcall TForm1::ScannerError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { // setze ErrorCode auf 0 damit keine Exception ausgelöst wird ErrorCode = 0; // schreibe aktuelle Portnummer in Infofeld AktuellerPortEdit->Text = "Aktuelle PortNr: "+IntToStr(AktuellePortNr); // schliesse Verbindung zu Socket Scanner->Active = false; // erhöhe Portnummrt um eins AktuellePortNr++; // wenn End-Portnummer noch nicht erreicht ist if(AktuellePortNr <= StrToInt(EndPortEdit->Text)) { // verbinde Socket mit neuem Port VerbindeSocket(); } // End-Portnummer ist erreicht else { // gib Meldung aus ShowMessage("Scan beendet!"); // stelle Anfangszustand wieder her Reset(); } } //--------------------------------------------------------------------------- // StopButtonClick //--------------------------------------------------------------------------- void __fastcall TForm1::StopButtonClick(TObject *Sender) { // setze aktuelle Portnummer auf End-Portnummer // -> Scan wird abgebrochen AktuellePortNr = StrToInt(EndPortEdit->Text); } //--------------------------------------------------------------------------- // VerbindeSocket //--------------------------------------------------------------------------- void __fastcall TForm1::VerbindeSocket() { // weise Socket die Adresse aus Eingabefeld zu Scanner->Address = IPEdit->Text; // weise Socket die aktuelle Portnummer zu Scanner->Port = AktuellePortNr; // stelle Verbindung mit Socket her Scanner->Active = true; } //--------------------------------------------------------------------------- // Reset //--------------------------------------------------------------------------- void __fastcall TForm1::Reset() { // aktiviere StartButton StartButton->Enabled = true; // aktiviere IP-Adressen Eingabefeld IPEdit->Enabled = true; // aktiviere Start-Port Eingabefeld StartPortEdit->Enabled = true; // aktiviere End-Port Eingabefeld EndPortEdit->Enabled = true; // deaktiviere StopButton StopButton->Enabled = false; // trenne Verbindung mit Socket Scanner->Active = false; } //--------------------------------------------------------------------------- // Init //--------------------------------------------------------------------------- void __fastcall TForm1::Init() { // deaktiviere StartButton StartButton->Enabled = false; // deaktiviere IP-Adressen Eingabefeld IPEdit->Enabled = true; // deaktiviere Start-Port Eingabefeld StartPortEdit->Enabled = false; // deaktiviere End-Port Eingabefeld EndPortEdit->Enabled = false; // aktiviere StopButton StopButton->Enabled = true; // ermittle Anfangs-Portnummer AktuellePortNr = StrToInt(StartPortEdit->Text); } //--------------------------------------------------------------------------- // PruefePortEingaben //--------------------------------------------------------------------------- bool __fastcall TForm1::PruefePortEingaben() { // ermittle Start-Port int StartPort = StrToInt(StartPortEdit->Text); // ermittle End-Port int EndPort = StrToInt(EndPortEdit->Text); // wenn Start-Port > oder = End-Port if(StartPort >= EndPort) { // gib FALSE zurück return false; } // ansonsten gib TRUE zurück return true; } //--------------------------------------------------------------------------- // IPEditExit //--------------------------------------------------------------------------- void __fastcall TForm1::IPEditExit(TObject *Sender) { //************************************************************************ // TODO // - prüfen, ob nur Zahlen bzw. Punkte enthalten sind // - prüfen, ob 3 Punkte enthalten sind // - prüfen, ob das Format stimmt (aaa.bbb.ccc.ddd) // (wobei einzlnes Token mindestens 1 und höchstens 3 Zahlen haben darf) //************************************************************************ // wenn keine IP-Adresse einegeben wurde if(IPEdit->Text.IsEmpty()) { // gib Meldung aus ShowMessage("Bitte IP-Adresse eingeben!"); // setze Focus auf IP-Adressen Eingabefeld IPEdit->SetFocus(); // markiere den Eintrag IPEdit->SelectAll(); } // wenn weniger als 7 Zeichen eingegeben wurden else if(IPEdit->Text.Length() < 7) { // gib Meldung aus ShowMessage("Bitte gültige IP-Adresse eingeben!"); // setze Focus auf IP-Adressen Eingabefeld IPEdit->SetFocus(); // markiere den Eintrag IPEdit->SelectAll(); } } //--------------------------------------------------------------------------- // FormClose //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { // trenne Verbindung mit Socket Scanner->Active = false; } //--------------------------------------------------------------------------- // StartPortEditExit //--------------------------------------------------------------------------- void __fastcall TForm1::StartPortEditExit(TObject *Sender) { // ermittle Inhalt von Start-Port Eingabefeld AnsiString Inhalt = StartPortEdit->Text; // prüfe Inhalt zeichenweise for(int i=1; i<= Inhalt.Length(); i++) { // wenn aktuelles Zeichen kein Zeichen ist if(!isdigit(Inhalt[i])) { // gib Meldung aus ShowMessage("Es sind nur Zahlen erlaubt!"); // setze Focus auf Start-Port Eingabefeld StartPortEdit->SetFocus(); // markiere den Eintrag StartPortEdit->SelectAll(); // beende Schleife break; } } } //--------------------------------------------------------------------------- // EndPortEditExit //--------------------------------------------------------------------------- void __fastcall TForm1::EndPortEditExit(TObject *Sender) { // ermittle Inhalt von End-Port Eingabefeld AnsiString Inhalt = EndPortEdit->Text; // prüfe Inhalt zeichenweise for(int i=1; i<= Inhalt.Length(); i++) { // wenn aktuelles Zeichen kein Zeichen ist if(!isdigit(Inhalt[i])) { // gib Meldung aus ShowMessage("Es sind nur Zahlen erlaubt!"); // setze Focus auf End-Port Eingabefeld EndPortEdit->SetFocus(); // markiere den Eintrag EndPortEdit->SelectAll(); // beende Schleife break; } } } //---------------------------------------------------------------------------
-
Hier noch schnell die *.h-Datei für die Faulen unter uns:
#ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ComCtrls.hpp> #include <ScktComp.hpp> class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TEdit *IPEdit; TEdit *StartPortEdit; TEdit *EndPortEdit; TEdit *AktuellerPortEdit; TButton *StartButton; TButton *StopButton; TRichEdit *PortsRichEdit; TClientSocket *Scanner; TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; void __fastcall ScannerConnect(TObject *Sender, TCustomWinSocket *Socket); void __fastcall StartButtonClick(TObject *Sender); void __fastcall ScannerError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode); void __fastcall StopButtonClick(TObject *Sender); void __fastcall IPEditExit(TObject *Sender); void __fastcall StartPortEditExit(TObject *Sender); void __fastcall EndPortEditExit(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); private: // Anwender-Deklarationen int AktuellePortNr; void __fastcall VerbindeSocket(); void __fastcall Reset(); void __fastcall Init(); bool __fastcall PruefePortEingaben(); public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
[ Dieser Beitrag wurde am 13.02.2003 um 11:16 Uhr von F98 editiert. ]