2012-07-31 137 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