2009-07-08 12 views
7

Ich versuche, das lokale Echo eines Kennworts in einer Telnet-Sitzung zu unterdrücken, indem ich 0xFF 0xFD 0x2D (IAC DO SUPPRESS_LOCAL_ECHO) sende. Das funktioniert gut.So unterdrücken Sie das lokale Echo

Mein Problem ist die Aktivierung des lokalen Echos nach dem Passwort. Ich sende 0xFF 0xFE 0x2D (IAC DONT SUPPRESS_LOCAL_ECHO). Aber ich sehe keinen meiner Befehle, die ich hinterher schreibe.

Ich verwende das MS Telnet-Programm, um eine Verbindung herzustellen.

Die IAC ist beschreiben here.

Die Suppress Local Echo here definiert

+0

könnten Sie liefern möglicherweise den Code Sie die Unterdrückungs lokale Echo senden verwendet? Siehe meine verwandte Frage - http://stackoverflow.com/questions/6410579/how-to-disable-echo-when-sending-a-terminal-command-using-apache-common-net-teln :) – mre

+0

konnte ich nicht Finde einen guten Weg, dies zu tun. Meine Abhilfe besteht darin, eine Rücktaste und dann ein '*' zu senden, um zu versuchen, das Zeichen zu überschreiben.Dies funktioniert meistens, aber wenn der Benutzer schnell schreibt, können 2 Zeichen erscheinen und nur 1 Rücktaste wird gesendet. – Robert

Antwort

-1

Senden Sie eine Rücktaste und dann ein *. Dadurch wird der Cursor gesichert und dann ein * über das gerade gedruckte Zeichen gedruckt. Wenn es sich um eine langsame Verbindung handelt, kann der Charakter für eine gewisse Zeit dort sein. Achten Sie auch auf das '\ n' und versuchen Sie nicht, das zu überschreiben.

+0

Ich bin nicht sicher, dass dies die akzeptierte Antwort sein sollte (ich weiß, 8 Jahre alt!). Dies wird ausgeblendet, nachdem es bereits angezeigt wurde und zusätzliche Zeichen gesendet werden. Beachten Sie, dass viele Clients (denken Sie an Linux, Mac) Backspace nicht richtig interpretieren. – Abel

9

Während Ihres Telnet-Sitzungen in telnet.exe können Sie die Telnet-Eingabeaufforderung öffnet sich durch Ctrl +]

Danach drücken, geben Sie "set localecho "oder" unset localecho "um Localecho ein- oder auszuschalten.

Drücken Sie Geben Sie ein, um zu Ihrer Telnet-Sitzung zurückzukehren.

+2

Aber ich möchte dies von der entfernten Seite tun. Die Gegenseite fragt nach dem Passwort. Ich habe die Unterdrückung zu arbeiten, nur nicht die Unterdrückung. – Robert

1

Nach meinen Untersuchungen heute:

  1. Die MS Telnet-Client akzeptiert ‚gesetzt localecho‘ und ‚ungesetzt localecho‘ tut aber nichts mit ihnen außer Aufzeichnung der Staat. Es sendet nichts auf dem Draht. Der reale Zustand des Clients bleibt "kein lokales Echo", egal was Sie tun und was "d" sagt.

  2. Der MS-Telnet-Server sendet IAC, WILL, ECHO und akzeptiert als Antwort IAC, DO, ECHO und IAC, DONT, ECHO, ignoriert sie jedoch vollständig und verbleibt im WILL ECHO-Zustand. Sie können IAC, DO, ECHO oder IAC, DONT, ECHO später senden und es wird nicht einmal antworten.

Dementsprechend wird, wenn Sie entweder das MS-Client auf einen Nicht-MS Telnet-Server oder mit einem anderen Client zu sprechen auf den MS Telnet-Server, besser Aufenthalt in no-local-Echo-Modus, sonst Sie sprechen wird Doppel-Echo erhalten.

Windows Vista 64.

+0

Es ist bekannt, dass der MS Telnet Client in Bezug auf die ECHO-Option kaputt ist - wenn ein Host auf einer Telnet-Verbindung in "ECHO" ist, bedeutet dies, dass er an das andere Ende __was gesendet wird__ (möglicherweise kein exakter Kopieren, es ist erlaubt, die Daten zu "kochen" - jedoch muss der Startpunkt für einen Telnet-Client/Host NICHT zu ECHO gehen, bis beide Seiten zustimmen. Auch für diese spezielle Option ist es nicht erlaubt, dass beide Enden das empfangen, was sie erhalten, dann werden die Charaktere unbegrenzt ECHOed - außer dass die MS sagt, dass sie es tut, aber niemals (!) Und das andere Ende in "kein ECHO" hält. – SlySven

1

Falsche Reihenfolge oben. Laut einem Dokument, das ich gefunden habe, sollte meine Sequenz falsch sein (WILL/WONT umgedreht). Allerdings hat es mit Putty und MS Telnet funktioniert - komisch.

Bitte versuchen Sie dies:

// Supress Echo on client: 
out.write(0xFF); // IAC 
out.write(0xFB); // WILL 
out.write(0x01); // ECHO 

// Enable again with: 
out.write(0xFF); // IAC 
out.write(0xFC); // WONT 
out.write(0x01); // ECHO 
Verwandte Themen