toldik
Goto Top

Per telnet automatisch auf Portfreigaben prüfen.

"Portscanner" aus Bordmitteln, der ohne Adminrechte auskommt.

Hallo, ich habe viele Ideen aber leider keine Lösung face-sad
Vielleicht weiß jemand von euch Rat....

Ich benötige ein Batchscript, das von einer Website heruntergeladen wird, und auf einem Client-Rechner prüft, ob voreingestellte Ports offen sind. Dazu würde ich gern telnet einsetzen.
Portscanner fallen aus, da sie nicht in allen Ländern erlaubt sind. Das ganze sollte nach dem Start allerdings vollautomatisch ablaufen und ein Protokoll liefern, das der Anwender dann bequem dem versierten Admin schicken kann. Die Standardtests wie Tracert, ping, nslookup und ipconfig /all sind schon fertig. Das ganze soll kein "Spionagetool" sein, sondern den Anwender bei der Fehlersuche unterstützen. Nur hat der Anwender prinzipiell keine Admin-Rechte.

Idee:
Per Script <telnet host port> in einem separaten Prozess starten und das Protokollieren. Nach einem einzustellenden Timeout den Prozess per Script schließen. Das ganze für alle Ports die geprüft werden sollen. Das Ergebnis der Prüfungen in ein Script speichern.
Ein Starten eines parallel laufenden Scripts könnte man mit <start "testPort" batch> erledigen, aber wie protokolliert man das Ergebnis? Und wie schießt man den Prozess per Script wieder ab, falls telnet tatsächlich ein Verbindung aufbaut?

Ich hoffe das ist überhaupt lösbar und würde mich über Lösungsansätze freuen.

Danke und Grüße,
Toldi

Content-Key: 108216

Url: https://administrator.de/contentid/108216

Printed on: April 19, 2024 at 20:04 o'clock

Member: toldik
toldik Feb 05, 2009 at 23:29:54 (UTC)
Goto Top
Hi, ich habe inzwischen eine Lösung erstellt. Geht das eleganter?

:::+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
::: Script zum Portscan per telnet (für =WinXP)ev. für >=WinXP)
:::
::: Version 0:01
::: Toldi Kelemen 06.02.2009
::: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@echo off & cls & setlocal enableextensions enabledelayedexpansion 

echo Beginn des Tests
echo Beginn des Tests>log.txt

set PruefPort=13
call :PRUEFE
set PruefPort=80
call :PRUEFE
set PruefPort=443
call :PRUEFE
set PruefPort=987
call :PRUEFE
goto :ENDE

:PRUEFE
::: telnet prüft port %PruefPort%
start /MIN telnet.exe 127.0.0.1 %PruefPort% 

::: ca. 10 Sekunden warten. Das muss lange genug sein, 
::: um sicher sein zu können, dass telnet den Zielhost nicht erreicht hat!
ping -n 5 127.0.0.1>nul

::: Falls telnet nicht gefunden wird, ist telnet bereits beendet und der Port ist zu.
set pid=
FOR /F "tokens=1-2 delims= " %%i IN ('tasklist') DO echo %%i|findstr "telnet.exe" >nul && set pid=%%j  
if "%pid%"=="" (  
echo Port %PruefPort% ist zu
echo Port %PruefPort% ist zu>>log.txt
goto :EOF
)

::: Aufräumen und telnet beenden.
@taskkill /PID %pid% >nul
echo Port %PruefPort% ist offen
echo Port %PruefPort% ist offen>>log.txt
:EOF

:ENDE

Die Ausgabe in meinem Fall:
Beginn des Tests
Port 13 ist zu
Port 80 ist offen
Port 443 ist offen
Port 987 ist zu