2012-05-02 11 views
8

Estoy intentando negociar una conexión telnet con un socket. El zócalo está trabajando, pero el servidor me está diciendo que cosa:Telnet Comando IAC que responde

ÿýÿýÿûÿû 

login: 

El ÿýÿýÿûÿû significa 255 253 1 255 253 31 255 251 1 255 251 3

He leído todos los documentos RFC Pero yo no ¿Entiendo con qué debo responder para poder enviar (cadena de datos ascii?) al servidor, mi deseo es ejecutar la solicitud de inicio de sesión con éxito y luego enviar comandos a un servidor como "detener" u otra cosa.

Gracias de antemano por su respuesta.

+0

Un cliente telnet normal (desde la línea de comandos) desactiva la negociación/IAC si no se está conectando a un puerto telnet extranjero. Los códigos IAC son fáciles de analizar: IIRC hay secuencias de dos bytes y tres bytes. En la mayoría de los casos, puede ignorar todo excepto el interruptor de activación/desactivación de eco. Búscalo en el RFC. – wildplasser

+0

BTW: los códigos en la publicación se ven dañados. 255 + 253 son parte de una secuencia de tres bytes (IAC + DO + número_de_opción) Segundo byte {251,252,253,254} -> esperan un tercer byte para seguir. – wildplasser

+0

¡He editado mi publicación! –

Respuesta

22

De RFC 854:

Desde la NVT es lo que queda cuando se habilitan no hay opciones, el NO y NO SE respuestas están garantizados para dejar la conexión en un estado que ambos extremos puede manejar. Por lo tanto, todos los hosts pueden implementar sus procesos TELNET para desconocer por completo las opciones que no son compatibles con , simplemente devolviendo un rechazo (es decir, rechazando) cualquier solicitud de opción que no se pueda entender.

Es decir, para cada WILL, responda DONT. Por cada DO, responda WONT.

En su caso, que ha recibido (ver IANA assigned telnet options):

255 253 1 IAC DO ECHO 
255 253 31 IAC DO NAWS 
255 251 1 IAC WILL ECHO 
255 251 3 IAC WILL SUPPRESS-GO-AHEAD 

por lo que debe responder:

255 252 1 IAC WONT ECHO 
255 252 31 IAC WONT NAWS 
255 254 1 IAC DONT ECHO 
255 254 3 IAC DONT SUPPRESS-GO-AHEAD 

Tenga en cuenta que usted no tiene que saber lo 1, 3, o 31 realmente significa. Esa es la belleza. Puedes rechazar esas opciones sin siquiera saber su definición. Simplemente establecerás de forma predeterminada el terminal virtual de la red.

+0

¡Está funcionando! Muchas gracias por tu luz :) –

1

Mirando hacia arriba en el RFC 854

255 253 1 IAC DO #1 
255 253 31 IAC DO #31 
255 251 1 IAC WILL #1 
255 251 3 IAC WILL #3 

Ahora mirando hacia arriba los valores de los parámetros en here: 1: = eco, 31: = tamaño de la ventana.