allgemeine Frage zu Portscannern
-
Hallo liebe Forengemeinde,
ich ein kleines Verständnisproblem bei meinem Portscanner.
Die funktionieren ja so, dass der scannende PC als Client auftritt und der gescannte PC als Server. Ich fordere ein Socket an und rufe Connect() für dessen IP und den Port auf. Eigentlich ist diese Funktion doch nur dann erfolgreich, wenn auf der anderen Seite ein Socket an dem Port horcht.
Ist es denn jetzt so, dass an jedem offenen Port irgendjemand horcht oder wodurch definiert sich der offene Port? Ich habe z.B. einen Port geforwardet, der laut meinem Portscanner geschlossen ist...aber eigentlich habe ich ihn doch geöffnet oder wo ist der Denkfehler? Verstehe das nicht so recht....Danke im v*******
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Themen rund um den PC verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ist mehr oder weniger Wortklauberei:
Ein Port ist offen, wenn ein dahinter laufender Dienst erreicht werden könnte, auch wenn tatsächlich momentan kein Dienst läuft.
Ein Port ist geschlossen, wenn darauf eingehende Anfragen explizit verworfen oder zurückgewiesen werden, so dass ein dahinter theoretisch oder tatsächlich laufender Dienst auf keinen Fall erreicht werden kann.
-
Ist es denn jetzt so, dass an jedem offenen Port irgendjemand horcht oder wodurch definiert sich der offene Port?
Dadurch dass eine Verbindung zu diesem Port aufgebaut werden kann.
Bzw. man könnte den Port auch als "offen" werten, wenn die Verbindung auf Grund eines Fehlers nicht zustande kommt, der impliziert dass es "eigentlich gehen sollte". z.B. ein "too many pending connections" Fehler.
Und das erfordert üblicherweise dass entweder das Betriebssystem selbst mit diesem Port irgendwas macht, oder aber ein Programm läuft das auf diesem Port "horcht" (=listen() mit einem auf diesen Port gebundenen Socket aufgerufen hat, und den Socket seit den nicht geschlossen).
-
gibts nicht auch halfopen?
-
hustbaer schrieb:
Ist es denn jetzt so, dass an jedem offenen Port irgendjemand horcht oder wodurch definiert sich der offene Port?
Dadurch dass eine Verbindung zu diesem Port aufgebaut werden kann.
man sollte zwischen paketfilter und dienst unterscheiden, das wollte Jansen schon verdeutlichen.
gruesse, mm
-
Jain.
An eine eventuelle Firewall hab' ich nicht gedacht.
Macht allerdings aus Sicht des Port-Scanners keinen echten Unterschied.
Der kann nur unterscheiden:
A) Der Server antwortet nicht
Der Server antwortet und nimmt die Verbindung nicht an
C) Der Server antwortet und nimmt die Verbindung anA nennt man "stealthed"
B nennt man "closed"
C nennt man "open"Warum etwas "stealthed" oder "closed" ist kann der Scanner wie gesagt nicht unterscheiden.
"closed" könnte sein weil die Firewall konfiguriert ist die Verbindung aktiv abzulehnen. Oder weil die Firewall die Verbindung erlaubt aber auf dem PC kein Service läuft.
"stealthed" könnte sein weil Firewall konfiguriert ist die Verbindung nicht zu erlauben, aber auch nicht aktiv abzulehnen, sondern die Pakete einfach zu verwerfen. Oder weil der Server einfach nicht läuft.
----
Aus Sicht des Client/Scanners ist der Port also "closed" wenn die Verbindung erlaubt wäre, der Server läuft, der Dienst aber nicht läuft. Und nicht "offen".
Wenn man allerdings über die Firewall-Konfiguration spricht, die ja statisch ist und sich nicht ändert nur weil man mal eben einen Dienst stoppt, dann sagt man natürlich der Port ist "offen", weil die Firewall ja konfiguriert ist die Verbindung zu erlauben.
Die Begriffe sind da IMO etwas schwammig.
-
Aber wie kann es denn sein, dass wenn ich mir z.B. den Angry Ip Scanner nehme, mein Port X offen ist und wenn ich dann meinen selbstgeschriebenen nehme und der einen Connect Befehl macht, der Port geschlossen ist? Wo liegt der Unterschied in der Funktionsweise?
Bzw. nur zum Verständnis:
Ich möchte von einem anderen PC mit meinem PC verbinden. Da dieser jedoch meine IP nicht kennt aber weiß, dass sich nur die letzten beiden Zahlen ändern, kann er kurz die 255*255 IP´s für den Port X durchscannen und gucken, wo denn einer am horchen ist.
Würde sich der Socket denn mit dem Port verbinden, auch wenn dort niemand dran horcht?
-
schrieb:
Aber wie kann es denn sein, dass wenn ich mir z.B. den Angry Ip Scanner nehme, mein Port X offen ist und wenn ich dann meinen selbstgeschriebenen nehme und der einen Connect Befehl macht, der Port geschlossen ist? Wo liegt der Unterschied in der Funktionsweise?
Einer von beiden hat einen Bug.
Würde sich der Socket denn mit dem Port verbinden, auch wenn dort niemand dran horcht?
nein.