Portscanner mit der Shell: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=/dev/tcp in Sub-Shell=
 
=/dev/tcp in Sub-Shell=
* 'bash -c ">/dev/tcp/$ZIEL/$I"' — öffnet eine TCP-Verbindung zum Zielport. → Wahr
+
* '''bash -c ">/dev/tcp/<IP>/<PORT>"''' - liefert eine true wenn der Port offen ist.
* Die Umleitung '>/dev/tcp/...' wird in der aktuellen Shell ausgeführt. → Falsch
+
* '''bash -c ">/dev/tcp/<IP>/<PORT>"''' - liefert eine false wenn der Port geschlossen ist.
* Mit 'bash -c ">/dev/tcp/$ZIEL/$I" > /dev/null 2>&1' siehst du keine "Connection refused"-Fehler in der äußeren Shell. → Wahr
 
* '>/dev/tcp/...' ist POSIX-standard und in jeder Shell verfügbar. → Falsch
 
  
 
=Aufgabe=
 
=Aufgabe=
* Erstelle 'portscanner.sh' mit Aufruf:
+
* Erstelle '''portscanner.sh''' mit Aufruf:
 
** ./portscanner.sh <ZIEL> <START_PORT> [END_PORT]
 
** ./portscanner.sh <ZIEL> <START_PORT> [END_PORT]
 
* Anforderungen:
 
* Anforderungen:
Zeile 13: Zeile 11:
 
** Ausgabe nur für offene Ports, exakt diese Zeile:
 
** Ausgabe nur für offene Ports, exakt diese Zeile:
 
*** Auf dem Ziel: <ZIEL> ist der Port: <PORT> offen
 
*** Auf dem Ziel: <ZIEL> ist der Port: <PORT> offen
** Script muss klein, lesbar und ohne externe Tools sein (optional: 'timeout' gegen Hänger).
+
** Script muss klein, lesbar und ohne externe Tools sein.
 +
<!---
 +
#!/bin/bash
 +
ZIEL=$1
 +
PORT_A=$2
 +
PORT_E=$3
 +
test $# -eq "2" && PORT_E=$PORT_A
 +
for ((I=$PORT_A;I<=$PORT_E;I++))
 +
do
 +
  if  bash -c ">/dev/tcp/$ZIEL/$I"  > /dev/null 2>&1
 +
    then
 +
    echo Auf dem Ziel: $ZIEL ist der Port: $I offen
 +
    fi
 +
done
 +
--->

Aktuelle Version vom 6. November 2025, 20:20 Uhr

/dev/tcp in Sub-Shell

  • bash -c ">/dev/tcp/<IP>/<PORT>" - liefert eine true wenn der Port offen ist.
  • bash -c ">/dev/tcp/<IP>/<PORT>" - liefert eine false wenn der Port geschlossen ist.

Aufgabe

  • Erstelle portscanner.sh mit Aufruf:
    • ./portscanner.sh <ZIEL> <START_PORT> [END_PORT]
  • Anforderungen:
    • Wenn nur zwei Argumente übergeben werden, prüfe nur START_PORT.
    • Nutze die Bash-/dev/tcp-Technik in einer Sub-Shell, z. B. 'bash -c ">/dev/tcp/$ZIEL/$PORT"' und unterdrücke Ausgabe/Fehler mit '> /dev/null 2>&1'.
    • Ausgabe nur für offene Ports, exakt diese Zeile:
      • Auf dem Ziel: <ZIEL> ist der Port: <PORT> offen
    • Script muss klein, lesbar und ohne externe Tools sein.