2012-07-31 82 views
2

当使用telnetlib我注意到一些有趣的变量:是否可以自动验证telnet?

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

此外,this page列出了一些RFC文档其中详细描述了AUTHENTICATION选项。

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

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

回答

1

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

通过Linux telnetd,您可能是指netkit telnetd。而据我可以在它的手册页看到:

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

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

查看RFC 2941中的认证类型列表,似乎大多数认证类型从未被指定。看看那些,DSS/DSA最有趣(它也用于SSH)​​,但我想这将很难找到兼容的服务器客户端。可悲的是,似乎没有关于简单(纯文本)认证的建议。

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

+0

嗯,我错过了“不可用”位...... :)我认为这是事实,但很高兴得到确认。谢谢! – johndodo 2012-07-31 09:16:28