2009-07-08 9 views
7

J'essaye de supprimer l'écho local d'un mot de passe dans une session telnet en envoyant 0xFF 0xFD 0x2D (IAC DO SUPPRESS_LOCAL_ECHO). Cela fonctionne bien.Comment annuler la suppression de l'écho local

Mon problème est d'activer l'écho local après le mot de passe. J'envoie 0xFF 0xFE 0x2D (IAC DONT SUPPRESS_LOCAL_ECHO). Mais je ne vois aucune de mes commandes que je tape après. J'utilise le programme MS Telnet pour me connecter. Le code IAC est here.

Le Suppress Écho local est défini here

+0

pourrait vous fournir éventuellement le code utilisé pour envoyer le suppress écho local? Voir ma question connexe - http://stackoverflow.com/questions/6410579/how-to-disable-echo-when-sending-a-terminal-command-using-apache-commons-net-teln :) – mre

+0

Je ne pouvais pas trouver un bon moyen de le faire. Ma solution consiste à envoyer un retour arrière, puis un '*' pour essayer d'écraser le caractère.Cela fonctionne principalement, mais si l'utilisateur tape rapidement 2 caractères peuvent apparaître et qu'un seul retour arrière est envoyé. – Robert

Répondre

-1

Envoyez un retour arrière, puis un *. Cela va sauvegarder le curseur et ensuite imprimer un * sur le caractère qu'ils viennent d'imprimer. Si c'est une connexion lente, le personnage peut être là pendant un certain temps. Recherchez également le \ n 'et n'essayez pas d'écraser cela.

+0

Je ne suis pas sûr que cela devrait être la réponse acceptée (je sais, 8 ans!). Ceci le cache _après_ il était déjà affiché _et_ envoyant des caractères supplémentaires. Notez que beaucoup de clients (pensez Linux, Mac) n'interpréteront pas correctement le retour arrière. – Abel

9

Au cours de vos sessions telnet dans telnet.exe vous pouvez pop up l'invite telnet en appuyant sur Ctrl + ]

Après cela, tapez "set localecho "ou" unset localecho "pour activer ou désactiver localecho.

Appuyez sur Entrez pour revenir à votre session Telnet.

+2

Mais je veux le faire depuis le côté distant. Le côté distant demande le mot de passe. J'ai eu la suppression de travailler, mais pas la non-compression. – Robert

1

Selon mes recherches aujourd'hui:

  1. Le client MS Telnet accepte 'set localecho' et 'unset localecho', mais ne fait rien avec eux, sauf enregistrer l'état. Il n'envoie rien sur le fil. L'état réel du client reste «pas d'écho local», peu importe ce que vous faites et ce que vous dites. Le serveur MS Telnet envoie IAC, WILL, ECHO, et en réponse accepte IAC, DO, ECHO, et IAC, DONT, ECHO, mais les ignore complètement, en restant dans l'état WILL ECHO tout au long. Vous pouvez envoyer IAC, DO, ECHO ou IAC, DONT, ECHO plus tard et il ne répondra même pas.

Par conséquent, si vous utilisez le client MS pour parler à un serveur Telnet non-MS ou d'utiliser un autre client pour parler au serveur Telnet MS vous feriez mieux de séjour en aucun local écho en mode, sinon vous aura double écho.

Windows Vista 64.

+0

Le client MS Telnet est connu pour être brisé en termes de gestion de l'option ECHO - quand un hôte sur une connexion Telnet est en "ECHO", cela signifie qu'il fera écho à l'autre extrémité __ ce qui lui est envoyé__ (peut ne pas être exact copie, il est permis de "cuisiner" les données) - cependant le point de départ pour tout client/hôte Telnet ne doit pas être ECHO tant que les deux parties ne sont pas d'accord. Aussi pour cette option particulière, il n'est pas permis aux deux extrémités de faire écho ce qu'ils reçoivent car les caractères recevront ECHOed indéfiniment - sauf que le MS dit qu'il le fera mais ne le fera jamais (!) Et gardant l'autre extrémité dans "no ECHO". – SlySven

1

Mauvaise séquence ci-dessus. Selon un document que j'ai trouvé, ma séquence devrait être fausse (WILL/WONT retourné). Cependant, il a travaillé avec Putty et MS Telnet - étrange.

S'il vous plaît essayez ceci:

// 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