Может ли сервер Telnet обнаружить клиент, используемый через протокол?

9

В то время как веб-браузеры отправляют, помимо прочего, User-Agentстроку, есть ли у протокола Telnet аналогичный метод определения чего-либо относительно подключающегося к нему клиента? ОПЕРАЦИОННЫЕ СИСТЕМЫ? Конкретный клиент Telnet? И т.п.

Суфир
источник

Ответы:

14

Там нет User-Agent, но есть несколько вариантов протокола Telnet для отправки информации о клиенте:

  • TERMINAL TYPE- показывает используемый тип терминала (например, xterm, urxvt, screen-256color ...) Вы действительно не можете избавиться от этого, не ломая вещи. То же самое касается NAWSотчетов о размере окна (столбцы × строки).

  • OLD-ENVIRONи NEW-ENVIRON- может выявить некоторые специфические переменные среды; некоторые клиенты также показывают свое полное доменное имя в фиктивной переменной $ DISPLAY. Отправка настроенного языкового стандарта системы ($ LANG, $ LC_ *) или часового пояса ($ TZ) также не редкость.

  • XDISPLOC - как и выше, некоторые клиенты отправляют ваше полное доменное имя в качестве местоположения дисплея X11.

  • Если какие-либо функции аутентификации включены, они могут показать имя пользователя вашей ОС.

  • Наконец, весь набор распознанных опций варьируется в зависимости от реализации и может использоваться в качестве грубого отпечатка пальца в стиле Panopticlick.

frost $ echo $ DISPLAY
: 0

мороз $ телнет
telnet> установить параметры
Покажет вариант обработки.
telnet> открыть m-net.arbornet.org
Попытка 162.202.67.157 ...
Подключен к m-net.arbornet.org.
Escape-символ '^]'.
SENT DO SUPPRESS GO AHEAD
ОТПРАВЛЕННЫЙ ТИП ТЕРМИНАЛА
ОТПРАВЛЯЕТСЯ ВИЛ НАУС
Отправлено будет скорость
ОТПРАВЛЕНЫ БУДУТ НИЗКИ
Отправлено будет
ОТПРАВЛЯЕТСЯ БУДЕТ НОВАЯ ЭКОЛОГИЯ
SENT DO STATUS
Отправлено будет XDISPLOC
RCVD DO AUTHENTICATION
ОТПРАВЛЕННАЯ АУТЕНТИФИКАЦИЯ
RCVD будет подавлять впереди
RCVD DO TERMINAL TYPE
RCVD DO NAWS
ОТПРАВЛЕНО IAC SB NAWS 0 95 (95) 0 46 (46)
RCVD DO TSPEED
RCVD DO LFLOW
RCVD DO LINEMODE
SENT IAC SB LINEMODE SLC SYNCH NOSUPPORT 0; IP VARIABLE | FLUSHIN | FLUSHOUT 3; АО переменная 15; AYT NOSUPPORT 0; ABORT VARIABLE | FLUSHIN | FLUSHOUT 28; EOF VARIABLE 4; SUSP VARIABLE | FLUSHIN 26; ПЕРЕМЕННАЯ ЕС 127; EL VARIABLE 21; EW VARIABLE 23; RP ПЕРЕМЕННАЯ 18; СЛЕДУЮЩАЯ ПЕРЕМЕННАЯ 22; XON VARIABLE 17; XOFF VARIABLE 19; FORW1 NOSUPPORT 0; FORW2 NOSUPPORT 0;
SENT DO SUPPRESS GO AHEAD
RCVD DO NEW-ENVIRON
RCVD БУДЕТ СТАТУС
RCVD DO XDISPLOC
RCVD зашифрует
SENT DONT ENCRYPT
RCVD DO OLD-ENVIRON ОТПРАВЛЕНО STD 
-ENVIRON
RCVD IAC SB ТЕРМИНАЛ-СКОРОСТЬ ОТПРАВИТЬ
ОТПРАВЛЕННАЯ СКОРОСТЬ IAC SB 38400,38400
RCVD IAC SB X-DISPLAY-LOCATION SEND
Отправлено IAC SB X-DISPLAY-LOCATION IS "frost.nullroute.eu.org:0"
RCVD IAC SB NEW-ENVIRON SEND 
ОТПРАВЛЕНО IAC SB NEW-ENVIRON IS VAR "DISPLAY" VALUE "frost.nullroute.eu.org:0"
RCVD IAC SB ТЕРМИНАЛ-ТИП ОТПРАВИТЬ
ОТПРАВЛЕННЫЙ ТЕРМИНАЛ-ТИП IAC SB "XTERM-256COLOR"
RCVD DO ECHO
Отправлено не эхо
RCVD БУДЕТ ЭХО
SENT DO ECHO
RCVD IAC SB TOGGLE-FLOW-CONTROL OFF
RCVD IAC SB TOGGLE-FLOW-CONTROL RESTART-XON
RCVD НЕ ЛИНЕЙНОМ
ОТПРАВЛЕНО
RCVD IAC SB LINEMODE SLC IP ПЕРЕМЕННАЯ | ACK | FLUSHIN | FLUSHOUT 3; AO VARIABLE | ACK 15; ABORT VARIABLE | ACK | FLUSHIN | FLUSHOUT 28; EOF VARIABLE | ACK 4; SUSP VARIABLE | ACK | FLUSHIN 26; Переменная EC | ACK 127; EL VARIABLE | ACK 21; EW VARIABLE | ACK 23; RP VARIABLE | ACK 18; LNEXT VARIABLE | ACK 22; XON VARIABLE | ACK 17; XOFF VARIABLE | ACK 19;

FreeBSD / i386 (m-net.arbornet.org) (pts / 5)

авторизоваться: 
user1686
источник
2
отличный ответ. Когда я читаю, man telnetединственная ошибка в списке: The source code is not comprehensible. Любопытно, писал ли кто-нибудь обновленный клиент в чём-либо кроме C.
Thufir
3
Это было бы бесполезно, так как сам протокол также устарел, как и большинство серверов ... SSHv2 - современная замена. // также обратите внимание, что есть несколько разных клиентов, называемых «telnet» - inetutils-telnet и netkit-telnet, среди прочих.
user1686
1
Хотя, на связанной ноте, SSH действительно имеет строку агента пользователя.
user1686
1
@grawity telnet по-прежнему находит широкое применение, например, для диагностики. Это становится немного менее распространенным благодаря распространению TLS (в пользу, например, OpenSSL -connect), но есть все еще много допустимых применений для разумно пустого текстового соединения, подобно тому, как telnet дает вам, когда вызывается на сервере не-telnet. Конечно, ваша точка зрения остается, что telnet - это не просто программное обеспечение, это протокол; это немного похоже на вызов веб-браузера HTTP.
CVn
1
@ MichaelKjörling Но когда команда telnet используется для отладки сетевого взаимодействия, на самом деле речь не идет о протоколе telnet. С клиентом telnet, который я только что протестировал, просто сообщив ему, к какому номеру порта подключаться, он изменит свое поведение.
kasperd