Telnet 服务器能否通过协议检测到正在使用的客户端?

Thu*_*fir 9 telnet operating-systems cookies webserver protocol

虽然 Web 浏览器发送User-Agent字符串等,但 Telnet 协议是否有类似的方法来确定连接到它的客户端的任何信息?操作系统?特定的 Telnet 客户端?等等。

use*_*686 14

没有 User-Agent,但有一些 Telnet 协议选项用于发送客户端信息:

  • TERMINAL TYPE– 显示使用的终端类型(例如 xterm、urxvt、screen-256color...)你不能真正摆脱它而不破坏它。这同样适用于NAWS该报告的窗口大小(列×行)。

  • OLD-ENVIRON并且NEW-ENVIRON– 可以揭示一些特定的环境变量;一些客户还在虚假的 $DISPLAY 变量中显示他们的 FQDN。发送您配置的系统区域设置 ($LANG, $LC_*) 或时区 ($TZ) 也并不少见。

  • XDISPLOC – 与上述类似,一些客户端将您的 FQDN 作为 X11 显示位置发送。

  • 如果启用了任何身份验证功能,它们可以显示您的操作系统用户名。

  • 最后,整套识别选项因实现而异,可以用作粗略的 Panopticlick 式指纹。

霜 $ 回声 $DISPLAY
:0

霜$ telnet
telnet>设置选项
将显示选项处理。
telnet> 打开 m-net.arbornet.org
正在尝试 162.202.67.157...
连接到 m-net.arbornet.org。
转义字符是“^]”。
SENT DO SUPPRESS 继续
发送将终端类型
发送遗嘱
发送将 TSPEED
发送将流动
SENT WILL LINEMODE
发送将新环境
发送状态
发送意愿 XDISPLOC
RCVD 做认证
发送不认证
RCVD 将抑制前进
RCVD DO 端子类型
RCVD DO NAWS
发送 IAC SB NAWS 0 95 (95) 0 46 (46)
RCVD DO TSPEED
RCVD 做流动
RCVD DO LINEMODE
SENT IAC SB LINEMODE SLC SYNCH NOSUPPORT 0; IP 变量|冲洗|冲洗 3;AO 变量 15;AYT NOSUPPORT 0; 中止变量|冲洗|冲洗28;EOF 变量 4;SUSP 变量|冲洗 26; EC 变量 127;EL 变量 21;EW 变量 23;RP 变量 18;下一个变量 22;XON 变量 17;XOFF 变量 19;FORW1 NOSUPPORT 0; FORW2 NOSUPPORT 0;
SENT DO SUPPRESS 继续
RCVD 做新环境
RCVD 将状态
RCVD DO XDISPLOC
RCVD 将加密
发送不加密
RCVD 做旧环境发送
不会旧环境
RCVD IAC SB 终端速度发送
发送 IAC SB 终端速度为 38400,38400
RCVD IAC SB X-显示-位置发送
SENT IAC SB X-DISPLAY-LOCATION 是“frost.nullroute.eu.org:0”
RCVD IAC SB 新环境发送 
SENT IAC SB NEW-ENVIRON IS VAR "DISPLAY" VALUE "frost.nullroute.eu.org:0"
RCVD IAC SB 终端型发送
发送的 IAC SB 终端类型是“XTERM-256COLOR”
RCVD 做回声
发送不会回声
RCVD 会回响
发送回声
RCVD IAC SB 切换流控制关闭
RCVD IAC SB TOGGLE-FLOW-CONTROL RESTART-XON
RCVD DONT LINE模式
发送不在线模式
RCVD IAC SB LINEMODE SLC IP 变量|ACK|FLUSHIN|FLUSHOUT 3;AO 变量|ACK 15; 中止变量|ACK|FLUSHIN|FLUSHOUT 28;EOF 变量|ACK 4; SUSP 变量|ACK|FLUSHIN 26; EC 变量|确认 127;EL 变量|确认 21; EW 变量|ACK 23;RP 变量|确认 18;下一个变量|ACK 22; XON 变量|ACK 17;XOFF 变量|ACK 19;

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

登录: 

  • 这没什么用,因为协议本身也已经过时了,大多数服务器也是如此……SSHv2 是现代的替代品。// 另请注意,有几个不同的客户端称为“telnet”——inetutils-telnet 和 netkit-telnet 等。 (3认同)
  • 很好的答案。当我阅读 `man telnet` 时,唯一列出的错误是:`源代码难以理解。` 很好奇是否有人用 C 以外的任何语言编写过最新的客户端。 (2认同)