Tel­net mit der PowerS­hell

Im letz­ten Blog­ein­trag haben wir uns ange­se­hen, wie man den ping Befehl aus der CMD Shell mit der PowerS­hell ablö­sen kann.

In die­sem Blog­ein­trag schauen wir uns an, wie man den tel­net Befehl aus der CMD Shell mit der PowerS­hell ablö­sen kann.

Das Tel­net Pro­to­koll (Tel­net steht für Teletype Network) ist ein sehr altes Netz­werk­pro­to­koll und dient dem Remote Zugriff auf Sys­teme. Es wurde 1969 zusam­men mit dem ARPA­NET (dem Vor­gän­ger des heu­ti­gen Inter­nets) ent­wi­ckelt.

Da das Pro­to­koll unver­schlüs­selte Ver­bin­dun­gen auf­baut, über die auch Benut­zer­name und Kenn­wort für das Remote Sys­tem über­tra­gen wer­den, sollte man die­ses Pro­to­koll heute nicht mehr ein­set­zen und idea­ler­weise kom­plett deak­ti­vie­ren. (Erstaun­li­cher­weise ist bis heute bei vie­len Netz­werk­kom­po­nen­ten und Manage­ment­kar­ten das Pro­to­koll in der Stan­dard­kon­fi­gu­ra­tion aktiv)

Unab­hän­gig vom Telnet-​​Dienst wird der Telnet-​​Client gerne zum Über­prü­fen von Netz­werk­ports genutzt (lauscht auf dem Netz­werk­port ein Dienst, der über TCP Daten aus­tau­schen möchte). Der Cli­ent sel­ber stellt auch kein Sicher­heits­pro­blem da, solange ihn man nicht für Sit­zun­gen zu einem telnet-​​Server nutzt.

Fol­gen­der­ma­ßen kann ich zum Bei­spiel über­prü­fen, ob für die Adresse www​.powers​hell​-user​.de auf Port 80  (HTTP) ein Dienst lauscht.

tel­net www​.powers​hell​-user​.de 80

Nach Aus­füh­ren des Befehls sehe ich einen blin­ken­den Strich, d.h. die Gegen­seite hat die Ver­bin­dung ange­nom­men. Der Port 80 ist erreich­bar. Es läuft dort ein Dienst und keine Fire­wall blo­ckiert den Daten­ver­kehr.

Wenn ich möchte, kann ich jetzt mit dem pas­sen­den Befehl eine http Kom­mu­ni­ka­tion simu­lie­ren und eine Ant­wort pro­vo­zie­ren.

GET /index.html

 

In der PowerS­hell gibt es kei­nen nati­ven Befehl, um den Telnet-​​Client nach­zu­bil­den.

Ich kann aber mit der PowerS­hell ein indi­vi­du­el­les Objekt erstel­len. Indi­vi­du­elle Objekte kön­nen .NET Frame­work oder COM Objekte sein. Und die .NET Frame­work Biblio­thek beinhal­tet die Klasse System.Net.Sockets.TCPClient.

Fol­gen­der­ma­ßen erzeuge ich das neue Objekt:

New-​​Object –Type­Name System.Net.Sockets.TCPClient –Argu­ment­List „www.powershell-user.de“,80

Cli­ent              : System.Net.Sockets.Socket

Avail­able           : 0

Con­nec­ted           : True

Exclu­si­veAd­dres­sUse : False

Receive­Buf­fer­Size   : 65536

Send­Buf­fer­Size      : 65536

Recei­ve­Time­out      : 0

Send­Time­out         : 0

Lin­ger­State         : System.Net.Sockets.LingerOption

NoDe­lay             : False

In der Ant­wort hat das Attri­but “Con­nec­ted” den Wert “True”, d.h. der Port 80 ist erreich­bar. Es läuft dort ein Dienst und keine Fire­wall blo­ckiert den Daten­ver­kehr.

In einem Script könnte man das fol­gen­der­ma­ßen ein­bauen.

Wir neh­men die try/​catch Funk­tion, um auch die Nicht­er­reich­bar­keit sau­ber abzu­fan­gen, die ansons­ten einen Feh­ler aus­wer­fen würde.

 

Jetzt wird das ein­mal mit Port 80 (erreich­bar) und ein­mal mit Port 81 (nicht erreich­bar) getes­tet.

 

 

Im nächs­ten Blog­ein­trag beschäf­ti­gen wir uns damit, wie man den nslookup Befehl mit der PowerS­hell umset­zen kann.

 

Was den­ken Sie?