是否可以自动验证telnet?

时间:2012-07-31 07:55:46

标签: python telnet telnetlib

使用telnetlib时,我注意到一些有趣的变量:

AUTHENTICATION = chr(37) # Authenticate
XAUTH = chr(41) # XAUTH
PRAGMA_LOGON = chr(138) # TELOPT PRAGMA LOGON
SSPI_LOGON = chr(139) # TELOPT SSPI LOGON

此外,this page列出了一些详细描述AUTHENTICATION选项的RFC。

如果我理解正确,如果telnet服务器支持身份验证,我应该在连接时收到IAC DO AUTHENTICATION。但是,当尝试连接到Linux机器上的 telnetd 时,我没有收到此选项,因此我无法发送IAC WILL AUTHENTICATION

我的理解是否正确?有没有办法可以让服务器执行身份验证?甚至可以自动验证telnet会话吗? (不听“登录:”,“用户名:”,“密码:”和类似的提示)

1 个答案:

答案 0 :(得分:1)

是的,您正确理解RFC 1416。如果服务器支持身份验证,则应首先发送DO。您可以尝试发送WILL,但这将违反规范,但可能无论如何也无法发挥作用。

通过Linux telnetd,你可能意味着netkit telnetd。据我在其联机帮助页上看到的那样:

  

-a authmode 此选项可用于指定应使用的模式                   认证。请注意,此选项仅在telnetd有效时才有用                    编译时支持身份验证,不可用                    在当前版本中。 [...]

所以我只是说它不能那样做。我在Gentoo中使用OpenBSD telnetd(telnet-bsd包);它似乎有一些auth位,但我根本无法让它工作。我怀疑它只支持基于Kerberos的身份验证。

查看RFC 2941中的身份验证类型列表,似乎从未指定过大多数身份验证类型。看看那些,DSS / DSA主要是有趣的(它也用在SSH中),但我想要找到一个兼容的服务器客户端真的很难。可悲的是,似乎没有关于简单(明文)认证的提议。

所以,总结一下:是的,如果有人实现了。但由于telnet几乎死了,我怀疑你会找到服务器实现。即使你这样做了,你也必须自己编写客户端,这对于支持的方案来说并不那么容易。所以我怀疑这是值得的。