版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、TELNET協(xié)議規(guī)范ARPA Internet上的主機(jī)被要求采用并實現(xiàn)此標(biāo)準(zhǔn)。介紹TELNET Protocol的目的是提供一個相對通用的,雙向的,面向八位字節(jié)的通信方法。它主要的目標(biāo)是允許接口終端設(shè)備的標(biāo)準(zhǔn)方法和面向終端的相互作用??梢灶A(yù)見到,此協(xié)議也可被用于終端到終端的通信和處理到處理的通信(分布式計算)。一般考慮一個TELNET連接是一個用于傳輸控制協(xié)議的傳送數(shù)據(jù)的。TELNET 協(xié)議是建立在以下三個想法上的:首先是網(wǎng)絡(luò)虛擬終端的概念;其次是對話選項的方法;最后是終端和處理的協(xié)調(diào)。1. 當(dāng)一個TELNET連接被初次建立時,每一端都被假設(shè)使用了網(wǎng)絡(luò)虛擬終端,也就是NVT。NVT是一個想象中
2、的標(biāo)準(zhǔn)設(shè)備通用設(shè)備的代表。這就消除了“服務(wù)器”和“用戶”機(jī)要了解對方機(jī)器終端的特點,而終端可以直接處理對話。所有的主機(jī),用戶端的和服務(wù)器端的,它們自己本地的設(shè)備特點因此在網(wǎng)絡(luò)上可以作為一種NVT處理,任何一個都可以認(rèn)為對方使用的是相同特點的設(shè)備。NVT傾向于不過多地限制(提供了一個相應(yīng)比較豐富的映射到本地設(shè)備的字符集),也不是包括一切的(它要求用戶使用適當(dāng)?shù)慕K端)。注意:用戶機(jī)通常是與處理終端連接的主機(jī),服務(wù)器機(jī)通常是提供某種服務(wù)的機(jī)器。從另一點看,在終端到終端或進(jìn)程到進(jìn)程的通信上,用戶機(jī)是發(fā)起通信的機(jī)器。 2. 規(guī)定選項的原理將以下事實考慮在內(nèi),許多機(jī)器希望在現(xiàn)在的NVT上提供另外的服務(wù),多
3、數(shù)用戶有比較復(fù)雜的終端,它們也就希望一種比較完整的而不是最小的服務(wù)。獨立的,但是存在于 TELNET 協(xié)議的不同選項支持這些需求,它們使用"DO, DON'T, WILL, WON'T" 結(jié)構(gòu)允許用戶機(jī)和服務(wù)器建立建立一種更加精巧的TELNET會話連接。這種選項包括改變字符集,響應(yīng)模式等等。設(shè)置選項的基本策略是任一方(或者兩者)初始化要求一個選項生效的請求。另一方可以接受也可以拒絕這一請求。如果接受請求,此選項立刻生效;如果被拒絕,連接仍然保持基本的NVT的連接屬性。很明顯,一方可以拒絕另一方關(guān)于啟用某一選項的請求,但是不能拒絕另一方關(guān)于使一選項失效的請求,
4、因為雙方必須準(zhǔn)備支持NVT。對話選項語法的建立使在雙方都發(fā)出請求某一選項生效的請求時,另一方可以直接認(rèn)為收到對方的確認(rèn)信息。 3. 這種對稱式的對話語法潛在地引起了一個不可終止的確認(rèn)環(huán)-任何一方都將收到的確認(rèn)信息看作是請求,而不是一個確認(rèn)信息。為了防止這種循環(huán)的出現(xiàn),有下面的規(guī)則: a. 任何一方僅可以要求對選項狀態(tài)的變化:例如,一方不可以發(fā)出請求,僅僅說明它在什么樣的選項狀態(tài)下。 b. 如果一方接收到好象是請求的信息,請求進(jìn)入一個已經(jīng)進(jìn)入的狀態(tài),此信息將被看作是一個確認(rèn)消息。這種非響應(yīng)從本質(zhì)上防止了不可終止的對話的循環(huán)。如果要求發(fā)送一個要求改變狀態(tài)的請求,即使?fàn)顟B(tài)并未改變。 c. 無論何時,
5、一方發(fā)送選項命令到另一方,無論作為一個請求或者是一個確認(rèn)消息,選項的使用將對發(fā)送的數(shù)據(jù)處理有影響,這樣命令應(yīng)該被插入到希望發(fā)生作用的數(shù)據(jù)流中的數(shù)據(jù)點之前。(應(yīng)該注意,傳送請求和收到確認(rèn)消息之間有一定的時間間隔,這是被動方式的。因此,一個主機(jī)希望在要求一個選項后緩存數(shù)據(jù),直到它知道它的請求是否被接受,這樣就可以使這段不不確定時間對用戶不可見。)選項的請求可以在建立TELNET連接時十分頻繁地來往交換,因為每一方都希望從對方得到更好的服務(wù)。 除此以外,選項也可以在連接持續(xù)過程中動態(tài)改變來適應(yīng)本地機(jī)器條件的變化。例如,NVT(它將以后被詳細(xì)解釋)對于許多“一次一行”的應(yīng)用程序,如BASIC是十分適用
6、的,而對于如NLS的“一次一字”的應(yīng)用程序卻不怎么好用。服務(wù)器可能被選擇作為“一次一字”法則來適應(yīng)在其上運行的本地進(jìn)程,它將發(fā)起對話以達(dá)到合適的選項狀態(tài)。然而,相對于永久地負(fù)責(zé)這種多余的處理負(fù)擔(dān);它可以通過會話,在不需要這樣的選項狀態(tài)下回到NVT狀態(tài)。由一個進(jìn)程發(fā)起的請求可以導(dǎo)致一個不可終止的請求循環(huán),如果此進(jìn)程對一個拒絕請求的響應(yīng)是再次要求此選項。為了防止這樣循環(huán)的發(fā)生,被拒絕的請求在其它事情發(fā)生變化之前不能被重復(fù)請求。這可能意味著,進(jìn)程運行另外一個程序,或者用戶發(fā)送另外的命令,或者用戶對于環(huán)境或選項的改變。比較好的方法是,預(yù)請求應(yīng)該作為由另一端發(fā)送信息的結(jié)果而發(fā)生,或者由于人為介入而發(fā)生。
7、選項的設(shè)計者不應(yīng)該因為對于選項會話的種種限制而感覺到伸不開手腳。一般語法的目的是更容易地?fù)碛羞x項-因為表示對它們的忽視也是容易的。如果特定的選項需要除"DO, DON'T, WILL, WON'T"以外的更豐富的結(jié)構(gòu),正確的方針是使用"DO, DON'T, WILL, WON'T"來建立連接解釋這種新結(jié)構(gòu),當(dāng)這一解釋工作完成時,就可以自由地使用這一新結(jié)構(gòu)了。例如,一方可能發(fā)送請求改變(或建立)每行的長度。如果接受了這些,對于對話的不同行長度可以使用不同的語法來表示-“子對話”可以包括一個域表示最大允許的,最小允許的和希望的
8、長度。重要概念是這樣的擴(kuò)充的會話應(yīng)該直到雙方建立了標(biāo)準(zhǔn)的會話并且能夠解釋這種擴(kuò)充的語法之后再進(jìn)行??偟膩碚f,WILL XXX發(fā)送時說明一方希望執(zhí)行選項XXX,DO XXX 和 DON'T XXX作為確定的不確定的響應(yīng);同樣,DO XXX被作為一種請求發(fā)送給另一方來啟動選項XXX,WILL XXX 和WON'T將被作為確定和不確定的響應(yīng)。因為NVT是沒有任何選項時的結(jié)果, DON'T和WON'T響應(yīng)將保證使連接最終保持于這種沒有任何選項的狀態(tài)。因此,所有主機(jī)可以不支持不理解的選項,它僅僅需要返回這種選項的請求即可。盡可能的,TELNET協(xié)議被用作服務(wù)器-用戶的對稱
9、,這樣,它就可以更容易而自然地處理用戶-用戶和服務(wù)器-服務(wù)器的情況。用選項來擴(kuò)展這一功能是被希望實現(xiàn)的,但不是必要的。在任何情況下,對稱是一個運行的準(zhǔn)則而不是固定的準(zhǔn)則多次被明確提出。一個比較文檔,“TELNET選項說明”,可以被用于對建立新選項過程信息的參考。網(wǎng)絡(luò)虛擬終端網(wǎng)絡(luò)虛擬終端(NVT)是一個雙向字符設(shè)備。NVT有一個顯示設(shè)備和一個鍵盤。顯示設(shè)備響應(yīng)到達(dá)的數(shù)據(jù),鍵盤負(fù)責(zé)通過TELNET連接發(fā)送數(shù)據(jù),如果需要回顯,也應(yīng)該在NVT的顯示設(shè)備上顯示。對于網(wǎng)絡(luò)上的回顯并不要求(雖然確實存在這個“遠(yuǎn)程”回顯選項,但是主機(jī)必不是必須實現(xiàn)此選項)。字符集是由七位ASCII碼組成的,而保存在八位的域中
10、。任何字符的轉(zhuǎn)換和計時方面的考慮都是本地的問題,這不影響NVT的工作。數(shù)據(jù)傳送方面,雖然TELNET連接是全雙工的,NVT卻是在線緩沖狀態(tài)下的半雙工設(shè)備。傳送數(shù)據(jù) 雖然TELNET連接是全雙工的,在線緩沖模式下,NVT卻被當(dāng)作半雙工的設(shè)備。此信號可以由進(jìn)程或者用戶產(chǎn)生。對于一些主機(jī)處理網(wǎng)絡(luò)輸入中斷,或與默認(rèn)的不進(jìn)行遠(yuǎn)程回顯的NVT說明的主機(jī)來說,此規(guī)則的代價是高昂的。因此,在源點緩存一些數(shù)據(jù)是有理由的。一些系統(tǒng)在每個輸入行未采用一些操作(即使是行打印機(jī)或打卡機(jī)也經(jīng)常采用這種方法),這樣可以在每行未開始發(fā)送。在另一方面,用戶或者進(jìn)程可以有時發(fā)覺提供在行未不中斷的數(shù)據(jù)是有用的而且是必須的;因此,也
11、應(yīng)該在實現(xiàn)在本地能夠識別這種信號并把這些數(shù)據(jù)立刻發(fā)送的方法和機(jī)制。當(dāng)一個進(jìn)程已經(jīng)完成將數(shù)據(jù)發(fā)送到對方的顯示設(shè)備而且也沒有緩存的輸入數(shù)據(jù)時時,進(jìn)程必須發(fā)送TELNET Go Ahead (GA)命令。這個規(guī)則并不是要求 TELNET GA命令必須由雙方終端發(fā)送,因為服務(wù)器主機(jī)通常不要求特定的信號來繼續(xù)進(jìn)程。但是,此命令的設(shè)計可以幫助用戶的本地主機(jī)操作一個物理上半雙工的終端,它如果IBM2741一樣擁有可鎖定的鍵盤。對此種類型終端的描述有助于解釋GA命令的正確使用。終端和計算機(jī)的連接總是在計算機(jī)或用戶的控制之下。任何一方都不能夠隱式地從另一方獲得控制權(quán);控制權(quán)必須顯式地從一方轉(zhuǎn)移到另一方。在終端一
12、方,設(shè)置硬件在每一行結(jié)束時放棄控制權(quán)(例如,當(dāng)用戶按下回車鍵時)。當(dāng)這種情況發(fā)生時,本地計算機(jī)處理輸入數(shù)據(jù),決定是否輸出,如果不需要,將控制權(quán)回送給終端。如果需要產(chǎn)生輸出,計算機(jī)將保有控制權(quán)直到輸出數(shù)據(jù)發(fā)送完畢。在網(wǎng)絡(luò)上使用這種終端的困難是顯而易見的。“本地”計算機(jī)不知道在讀到行未符號時是否應(yīng)該繼續(xù)保持控制權(quán);這個問題的決定權(quán)在遠(yuǎn)地處理此數(shù)據(jù)的計算機(jī)。因此,TELNET GA命令提供了一種機(jī)制讓遠(yuǎn)程計算機(jī)能夠通知本地計算機(jī),讓它將控制權(quán)轉(zhuǎn)交給用戶終端。在用戶需要控制權(quán)時,此信號應(yīng)該也只能在此時發(fā)送。注意:過早地發(fā)送GA命令會使輸出數(shù)據(jù)阻塞,因為用戶可以假定傳送系統(tǒng)暫停,因此不能將一行結(jié)束。當(dāng)然
13、,前述內(nèi)容不能夠用于用戶到服務(wù)器方面的通信方面。在這個方面,GA命令可以在任何時候發(fā)送,可以根本不用發(fā)送。同樣,如果TELNET連接被用于進(jìn)程到進(jìn)程的通信,也不需要發(fā)送GA命令。最后,對于終端到終端的通信,可以在兩端都需要GA命令,也可以在一端,也可以兩端都需要。如果主機(jī)希望支持終端到終端的通信主機(jī)應(yīng)該提供一種讓用戶自由發(fā)送GA命令的方法;然而,對于一個TELNET進(jìn)程而言,這并不是必須的。注意:TELNET模式的對稱性要求在概念上,兩端中的一端至少是一個NVT??刂坪瘮?shù)的標(biāo)準(zhǔn)表示 如要本文的介紹中所說的,TELNET協(xié)議的目的是提供一種網(wǎng)絡(luò)上面向終端進(jìn)程和終端設(shè)備的標(biāo)準(zhǔn)接口。這種類型互連的先
14、前的經(jīng)驗告訴我們,在許多主機(jī)上已經(jīng)實現(xiàn)了類似的功能,但它們的實現(xiàn)方法卻差別很大。對于接觸這些系統(tǒng)的用戶而言,這些差別將是令人頭痛的。因此,TELNET定義了以下功能的五種標(biāo)準(zhǔn)表示。這種標(biāo)準(zhǔn)表示有一定的標(biāo)準(zhǔn)的意義,但這也不是必須的(例外是中斷處理函功能要其它使用TELNET的協(xié)議執(zhí)行);這也就是說,系統(tǒng)不提供給本地用戶的功能也不可以不提供給遠(yuǎn)程用戶,它可以將標(biāo)準(zhǔn)表示作為非操作的功能。在另一方面,給本地用戶提供此功能的系統(tǒng)必須也向傳送此功能標(biāo)準(zhǔn)表示的遠(yuǎn)程用戶提供此功能。中斷處理(IP)一些系統(tǒng)提供可以暫停,中斷,放棄或終止用戶進(jìn)程操作的功能。當(dāng)用戶確定它的進(jìn)程處于不可結(jié)束的循環(huán)中,或不經(jīng)意地激活了
15、一個進(jìn)程時經(jīng)常使用此功能。IP是使用此功能的標(biāo)準(zhǔn)表示。實現(xiàn)者應(yīng)該注意的是:使用TELNET的其它協(xié)議可能也需要IP,因此,如果需要支持其它協(xié)議就應(yīng)該實現(xiàn)IP。放棄輸出 (AO) 許多系統(tǒng)提供此功能,它允許產(chǎn)生輸出的進(jìn)程到達(dá)類似操作結(jié)束的點,而不將輸出發(fā)送到用戶的終端。更深一層的,此功能通常清除已產(chǎn)生的所有輸出,而不顯示到用戶的終端上。AO是使用此功能的標(biāo)準(zhǔn)表示。例如,一些子系統(tǒng)可能通常接受用戶命令,發(fā)送長文本串到用戶終端,最后發(fā)送一個提示用戶允許接收下一命令的提示符到用戶終端。如果在傳送文本串的過程中接收到AO命令,將會不再發(fā)送剩余的字符串,而直接顯示提示符告知用戶可以輸入下一命令。(這與接收
16、到IP之后的操作可能有所不同;IP會放棄發(fā)送剩余的字符串而且退出子系統(tǒng)。)應(yīng)該注意到,使用提供此功能的服務(wù)器系統(tǒng)時外部緩沖區(qū)(在網(wǎng)絡(luò)和用戶本地主機(jī)上)也被清除;完成的正確方法是向用戶系統(tǒng)發(fā)送“Synch”信號。你在此嗎 (AYT) 許多系統(tǒng)提供用戶這樣的功能,讓用戶知道是否正在運行。此功能在系統(tǒng)由于不可預(yù)知長度運算,或系統(tǒng)負(fù)載重的情況下長時間不響應(yīng)時由用戶發(fā)起。AYT是使用此功能的標(biāo)準(zhǔn)表示。刪除字符(EC) 許多系統(tǒng)提供此功能用于刪除最近相鄰的不可刪除字符或用戶提供數(shù)據(jù)流的最近相鄰的“顯示位置”。此功能通常用于編輯鍵盤錯誤的輸入。EC是使用此功能的標(biāo)準(zhǔn)表示。注意:“顯示位置”可能包括多于一個的
17、字符,它們是過多鍵入的結(jié)果或者如下格式的字符串:<char1> BS <char2>.刪除行(EL) 許多系統(tǒng)提供此功能用于刪除當(dāng)前輸入行中的所有數(shù)據(jù)。此功能通常被用于是編輯鍵盤輸入。EL是使用此功能的標(biāo)準(zhǔn)表示。TELNET的"Synch"信號 大部分時分系統(tǒng)提供一種允許終端用戶重新獲得失控進(jìn)程的機(jī)制;上述的IP和AO功能就是此機(jī)制的一個例子。這些系統(tǒng),當(dāng)被用于本地時,訪問由用戶提供的所有信號,無論此信號是一般字符還是不可顯示的字符如電傳中的“BREAK”或IBM 2741中的“ATTN”鍵。當(dāng)系統(tǒng)通過網(wǎng)絡(luò)連接時這種情況不一定就是準(zhǔn)確的;網(wǎng)絡(luò)流量控制
18、機(jī)制可能導(dǎo)致一個信號被緩存于網(wǎng)絡(luò)中某處,例如在用戶的主機(jī)中。為了克服這個問題,引入了TELNET的“Synch”機(jī)制。一個Synch信號包括一個TCP 緊急信號和TELNET命令 DATA MARK。緊急信號,它不受限于限制TELNET的流量控制,它可以在接收到進(jìn)程引發(fā)特定的數(shù)據(jù)處理。在這種模式中,此數(shù)據(jù)流立即被看作是“有重大意義的”,而拋棄其它數(shù)據(jù)。TELNET命令DATA MARK (DM)是數(shù)據(jù)流中的同步標(biāo)志,它指示任何特定的信號已經(jīng)發(fā)生過了,接收可以返回到正常處理其它數(shù)據(jù)的狀態(tài)中了。Synch通過TCP發(fā)送操作完成,它和緊急標(biāo)志及在最后的DM標(biāo)志一起發(fā)送。當(dāng)一些Synch信號被連續(xù)快速
19、發(fā)送時緊急信號可能被淹沒。不可能對緊急信號記數(shù),因為這一數(shù)字有可能小于也可能等于已經(jīng)發(fā)送的數(shù)目。當(dāng)處于通常模式下,DM不是一個操作;當(dāng)處于緊急模型下,它指示緊急處理的結(jié)束。如果TCP指示緊急數(shù)據(jù)結(jié)束前發(fā)現(xiàn)DM,TELNET應(yīng)該繼續(xù)操作數(shù)據(jù)流直到遇到DM為止。如果TCP在DM之后指示又有一些緊急數(shù)據(jù),那只能是因為是一串Synch。TELNET應(yīng)該繼續(xù)操作數(shù)據(jù)流直到遇到DM?!坝幸饬x的”信號被定義為:IP,AO和AYT(但不是EC或EL)的TELNET標(biāo)準(zhǔn)定義;如果有的話,本地對這些標(biāo)準(zhǔn)定義的模擬;所有其它TELNET命令;其它站點定義的不需要拖后數(shù)據(jù)流的信號。因為SYNCH命令的另一個作用是拋棄
20、所有在接收者和發(fā)送者之間隨了TELNET命令之外的字符,如果需要時,此機(jī)制被指定為標(biāo)準(zhǔn)方法來清理數(shù)據(jù)路徑。例如,如果一個在終端的用戶傳送一個AO命令,收到此命令的服務(wù)器(如果此服務(wù)器提供此功能)應(yīng)該返回一個SYNCH給用戶。最后,正如需要TCP緊急信號作為供他們使用的命令一樣,其它使用TELNET協(xié)議的協(xié)議也需要類似的命令。這通過使用IP,SYNCH就可以達(dá)到。例如,假設(shè)其它一些使用TELNET的協(xié)議定義了類型于AO命令的停止字符串。試想此協(xié)議的用戶希望服務(wù)器來處理停止字符串,但連接因為服務(wù)器正在處理別的命令而被阻塞。用戶應(yīng)該使它的系統(tǒng)做以上工作:1. 發(fā)送TELNET IP字符; 2. 發(fā)送
21、TELNET SYNC串,這就是說:發(fā)送DM作為在TCP緊急模式發(fā)送操作下的唯一字符串。 3. 發(fā)送字符串STOP,并且 4. 發(fā)送其它協(xié)議的類型于TELNET DM的命令。 用戶(或者進(jìn)程)必須象步2一樣重新發(fā)送TELNET SYNCH序列來確保TELNET IP到達(dá)服務(wù)器的TELNET解釋器?!熬o急”將喚醒TELNET進(jìn)程;IP應(yīng)該喚醒更高級的進(jìn)程。NVT顯示和鍵盤 NVT顯示有一個未指定的行寬和頁面大小,并且可以產(chǎn)生代表ASCII碼的字符。對于33個控制字符和另外128個沒有使用的字符,將指定給顯示: NULL (NUL) 0 無操作;Line Feed (LF) 10 將顯示移動到下一
22、行的同一垂直位置。Carriage Return (CR) 13 將顯示移至當(dāng)前行的左邊界處。另外,還應(yīng)該定義如下字符(但這不是必須的),它們對顯示也有作用。TELNET的任何一方都不會假定另一方會在接收或傳送時采取以下行動:BELL (BEL) 7 響鈴或者給出一個可視的信號(這并不移動顯示位置)。Back Space (BS) 8將顯示向左移一個位置。Horizontal Tab (HT) 9 將顯示移至下一個制表位。現(xiàn)在還未指定任何一方如何決定制表位的位置究竟在什么地方。Horizontal Tab (HT) 9 將顯示移至下一個垂直制表位。現(xiàn)在還未指定任何一方如何決定制表位的位置究竟在
23、什么地方。Form Feed (FF) 12 將顯示移動到下頁起始位置,并保持相同的水平位置。所有現(xiàn)在的代碼都不使NVT顯示作任何操作。CR LF序列將使顯示定位于下一顯示行的左邊界處。然而,許多系統(tǒng)和終端并不將這兩個字符分開處理而不得不作一些工作模擬它們的作用。(例如,一些終端沒有獨立于LF的CR,但在這些終端上可以通過后退鍵模擬CR的功能。)因此,CR LF序列必將作為新行標(biāo)記使用它們的復(fù)合功能;CR NUL必須在希望僅輸入一個回車時使用;在其它情況下應(yīng)該避免單獨使用CR。這個法則使必須決定是否進(jìn)行一個“新行”操作功能或多個回退的系統(tǒng)能夠保證包括由一個字符在CR后面的TELNET流的操作,
24、并作出正確的決定。注意:CR LF或者CR NUL對雙方都是要求的,這就保證了NVT的對稱性。即使在一些情況下可以知道字符未被送到實際的終端,然而,出于一致性的考慮,協(xié)議要求在CR后面如果沒有LF就必須插入一個NUL。反過來說,在CR后面接收到一個NUL后,應(yīng)該把它從數(shù)據(jù)流中拋棄,而不應(yīng)該將它用于NVT的字符映射。在NVT上有鍵盤,組合鍵或鍵序列來產(chǎn)生這全部128個字符。注意:雖然其中的一些對NVT顯示沒有作用,NVT也有能力產(chǎn)生它們。除了這些以外,NVT鍵盤還應(yīng)該能夠產(chǎn)生如下有意義,但不要求的的字符。對這些字符的實際代碼指派在TELNET命令一節(jié)中,因為它們被作為普通的應(yīng)該被提供的,即使在數(shù)
25、據(jù)流被解釋為一些其它字符集的情況下。Synch 此鍵允許用戶清除到另一方的數(shù)據(jù)通道。此鍵的激活導(dǎo)致DM的發(fā)送,而且還導(dǎo)致同時發(fā)送TCP的緊急信號。DM-緊急信號對有如前面定義的意義。Break (BRK) 它的提供是因為它不是ASCII字符集內(nèi)的一員。它指示Break鍵和Attention鍵被按下。然而,請注意:它是作為第129個代碼,而不是IP標(biāo)準(zhǔn)定義。Interrupt Process (IP) 暫停,中斷,放棄或終止NVT連接的進(jìn)程的執(zhí)行。同樣的,它也是使用TELNET協(xié)議的協(xié)議要使用的信號。Abort Output (AO) 允許當(dāng)前進(jìn)程運行至終止,但不將結(jié)果送給用戶。同樣,發(fā)送SYN
26、CH給用戶。Are You There (AYT) 回送給NVT一些可見的字符。Erase Character (EC) 接收方應(yīng)該刪除緊后一個未刪除的字符或從數(shù)據(jù)流中刪除一個“顯示位置”。Erase Line (EL) 接收方應(yīng)該將數(shù)據(jù)流中的字符從當(dāng)前位置開始一直刪除到最近的“CR LF”為止。這些“額外”鍵的功能和一些顯示格式功能鍵是它們應(yīng)該代表一個對從NVT到本地機(jī)映射的擴(kuò)充。如同NVT數(shù)據(jù)字節(jié)68應(yīng)該被映射為大寫D一樣,一個EC字符應(yīng)該被映射為一個“刪除行”的功能鍵。另外,如果映射124在一些情況下是武斷的一樣,EL字符的映射有時候也是武斷的。對于格式字符也是一樣的:如果終端實際上擁有
27、“垂直制表位”,那么映射到NVT是顯然的,如果終端不提供此功能,那么結(jié)果將是不可預(yù)料的。TELNET命令結(jié)構(gòu) 所有TELNET命令結(jié)構(gòu)至少包括一個兩個字節(jié)的序列:由一個IAC后跟一個命令。關(guān)于選項會話的命令是由三個字節(jié)的序列構(gòu)成的,第三個字節(jié)是關(guān)于選項參考的。選擇這種結(jié)構(gòu),這樣隨著完全使用數(shù)據(jù)空格數(shù)據(jù)與命令值之間的沖突就會減少,所有這些沖突導(dǎo)致了不一致和沒有效率和數(shù)據(jù)的丟失。根據(jù)目前的設(shè)置,只有與IAC沖突的數(shù)據(jù)需要被發(fā)送兩次,其它255個代碼都可以直接發(fā)送。下面是定義了的TELNET命令。注意:只有當(dāng)代碼和代碼序列前面是IAC時它才是命令。SE 240 結(jié)束子會話參數(shù)。NOP 241 無操作
28、。Data Mark 242 Synch的數(shù)據(jù)流部分。這應(yīng)該總和TCP緊急標(biāo)志一起發(fā)送。Break 243 NVT 字符 BRK。Interrupt Process 244 IP功能。Abort output 245 AO功能。Are You There 246 AYT功能。Erase character 247 EC功能。Erase character 247 EL功能。Go ahead 249 The GA 信號。SB 250 指出所跟隨的是指示選項的子對話。WILL (option code) 251 指示希望開始執(zhí)行,或者確認(rèn)現(xiàn)在正在操作指示的選項。WON'T (option
29、code) 252 指出拒絕執(zhí)行或繼續(xù)招待所指示的選項。DO (option code) 253 指出要求對方執(zhí)行,或者確認(rèn)希望對方執(zhí)行指示的選項。DON'T (option code) 254 指出要求對方停止執(zhí)行,或者確診要求對方停止執(zhí)行指示的選項。IAC 255 數(shù)據(jù)字節(jié) 255。建立連接TELNET TCP連接在用戶端口U和服務(wù)器端口L之間建立。服務(wù)器在這個公認(rèn)的端口上等待連接。因為TCP連接是一個全雙工的,由雙方端口共同確認(rèn),服務(wù)器可以同時在L端口同時處理許多來自不同U端口的連接。端口的指定 當(dāng)用于遠(yuǎn)程用戶訪問服務(wù)主機(jī),此協(xié)議指定端口23(也就是八進(jìn)制的27)。那是 L =
30、23。Telnet技術(shù)白皮書Telnet的應(yīng)用不僅方便了我們進(jìn)行遠(yuǎn)程登錄,也給hacker們提供了又一種入侵手段和后門,但無論如何,在你盡情享受Telnet所帶給你的便捷的同時,你是否真正的了解Telnet呢? 二 遠(yuǎn)程登錄 Telnet服務(wù)雖然也屬于客戶機(jī)/服務(wù)器模型的服務(wù),但它更大的意義在于實現(xiàn)了基于Telnet協(xié)議的遠(yuǎn)程登錄(遠(yuǎn)程交互式計算),那么就讓我們來認(rèn)識一下遠(yuǎn)程登錄。 1 遠(yuǎn)程登陸的基本概念 先來看看什么叫登錄:分時系統(tǒng)允許多個用戶同時使用一臺計算機(jī),為了保證系統(tǒng)的安全和記帳方便,系統(tǒng)要求每個用戶有單獨的帳號作為登錄標(biāo)識,系統(tǒng)還為每個用戶指定了一個口令。用戶在
31、使用該系統(tǒng)之前要輸入標(biāo)識和口令,這個過程被稱為登錄。 遠(yuǎn)程登陸是指用戶使用Telnet命令,使自己的計算機(jī)暫時成為遠(yuǎn)程主機(jī)的一個仿真終端的過程。仿真終端等效于一個非智能的機(jī)器,它只負(fù)責(zé)把用戶輸入的每個字符傳遞給主機(jī),再將主機(jī)輸出的每個信息回顯在屏幕上。 2 遠(yuǎn)程登陸的產(chǎn)生及發(fā)展 我們可以先構(gòu)想一個提供遠(yuǎn)程文字編輯的服務(wù),這個服務(wù)的實現(xiàn)需要一個接受編輯文件請求和數(shù)據(jù)的服務(wù)器以及一個發(fā)送此請求的客戶機(jī)。客戶機(jī)將建立一個從本地機(jī)到服務(wù)器的TCP連接,當(dāng)然這需要服務(wù)器的應(yīng)答,然后向服務(wù)器發(fā)送鍵入的信息(文件編輯信息),并讀取從服務(wù)器返回的輸出。以上便是一個標(biāo)準(zhǔn)而普通的客戶機(jī)/服務(wù)器模型的服務(wù)
32、。 似乎有了客戶機(jī)/服務(wù)器模型的服務(wù),一切遠(yuǎn)程問題都可以解決了。然而實際并非你想象的那樣簡單,如果我們僅需要遠(yuǎn)程編輯文件,那么剛才所構(gòu)想的服務(wù)完全可以勝任,但假如我們的要求并不是這么簡單,我們還想實現(xiàn)遠(yuǎn)程用戶管理,遠(yuǎn)程數(shù)據(jù)錄入,遠(yuǎn)程系統(tǒng)維護(hù),想實現(xiàn)一切可以在遠(yuǎn)程主機(jī)上實現(xiàn)的操作,那么我們將需要大量專用的服務(wù)器程序并為每一個可計算服務(wù)都使用一個服務(wù)器進(jìn)程,隨之而來的問題是:遠(yuǎn)程機(jī)器會很快對服務(wù)器進(jìn)程應(yīng)接不暇,并淹沒在進(jìn)程的海洋里(我們在這里排除最專業(yè)化的遠(yuǎn)程機(jī)器)。 那么有沒有辦法解決呢?當(dāng)然有,我們可以用遠(yuǎn)程登錄來解決這一切。我們允許用戶在遠(yuǎn)地機(jī)器上建立一個登錄會話,然后通過執(zhí)行命令來實現(xiàn)更一
33、般的服務(wù),就像在本地操作一樣。這樣,我們便可以訪問遠(yuǎn)地系統(tǒng)上所有可用的命令,并且系統(tǒng)設(shè)計員不需提供多個專用地服務(wù)器程序。 問題發(fā)展到這里好像前途一片光明了,用遠(yuǎn)程登錄總應(yīng)該解決問題了吧,但要實現(xiàn)遠(yuǎn)程登陸并不簡單。不考慮網(wǎng)絡(luò)設(shè)計的計算機(jī)系統(tǒng)期望用戶只從直接相連的鍵盤和顯示器上登錄,在這種機(jī)器上增加遠(yuǎn)程登陸功能需要修改機(jī)器的操作系統(tǒng),這是極其艱巨也是我們盡量避免的。因此我們應(yīng)該集中力量構(gòu)造遠(yuǎn)程登陸服務(wù)器軟件,雖然這樣也是比較困難的。為什么說這樣做也比較困難呢? 舉個例子來說:一般,操作系統(tǒng)會為一些特殊按鍵分配特殊的含義,比如本地系統(tǒng)將Ctrl+C解釋為:終止當(dāng)前運行的命令進(jìn)程。但假設(shè)我們已經(jīng)運行了
34、遠(yuǎn)程登陸服務(wù)器軟件,Ctrl+C也有可能無法被傳送到遠(yuǎn)地機(jī)器,如果客戶機(jī)真的將Ctrl+C傳到了遠(yuǎn)地機(jī)器,那么Ctrl+C這個命令有可能不能終止本地的進(jìn)程,也就是說在這里很可能會產(chǎn)生混亂。而且這僅僅是遇到的難題之一。 但盡管有技術(shù)上的困難,系統(tǒng)編程人員還是設(shè)法構(gòu)造了能夠應(yīng)用于大多數(shù)操作系統(tǒng)的遠(yuǎn)程登陸服務(wù)器軟件,并構(gòu)造了充當(dāng)客戶機(jī)的應(yīng)用軟件。通常,客戶機(jī)軟件取消了除一個鍵以外的所有鍵的本地解釋,并將這些本地解釋相應(yīng)的轉(zhuǎn)換成遠(yuǎn)地解釋,這就使得客戶機(jī)軟件與遠(yuǎn)地機(jī)器的交互,就如同坐在遠(yuǎn)程主機(jī)面前一樣,從而避免了上述所提到的混亂。而那個唯一例外的鍵,可以使用戶回到本地環(huán)境。 將遠(yuǎn)程登陸服務(wù)器設(shè)計為應(yīng)用級
35、軟件,還有另一個要求,那就是需要操作系統(tǒng)提供對偽終端(pseudo terminal)的支持。我們用偽終端描述操作系統(tǒng)的入口點,它允許像Telnet服務(wù)器一樣的程序向操作系統(tǒng)傳送字符,并且使得字符像是來自本地鍵盤一樣。只有使用這樣的操作系統(tǒng),才能將遠(yuǎn)程登陸服務(wù)器設(shè)計為應(yīng)用級軟件(比如Telnet服務(wù)器軟件),否則,本地操作系統(tǒng)和遠(yuǎn)地系統(tǒng)傳送將不能識別從對方傳送過來的信息(因為它們僅能識別從本地鍵盤所鍵入的信息),遠(yuǎn)程登陸將宣告失敗。 將遠(yuǎn)程登陸服務(wù)器設(shè)計為應(yīng)用級軟件雖然有其顯著的優(yōu)點:比將代碼嵌入操作系統(tǒng)更易修改和控制服務(wù)器。但其也有效率不高的缺點(后面的內(nèi)容將會給予解釋),好在用戶
36、鍵入信息的速率不高,這種設(shè)計還是可以接受的。 3 遠(yuǎn)程登錄的工作過程 使用Telnet協(xié)議進(jìn)行遠(yuǎn)程登陸時需要滿足以下條件:在本的計算機(jī)上必須裝有包含Telnet協(xié)議的客戶程序;必須知道遠(yuǎn)程主機(jī)的Ip地址或域名;必須知道登錄標(biāo)識與口令。 Telnet遠(yuǎn)程登錄服務(wù)分為以下4個過程: 1)本地與遠(yuǎn)程主機(jī)建立連接。該過程實際上是建立一個TCP連接,用戶必須知道遠(yuǎn)程主機(jī)的Ip地址或域名; 2)將本地終端上輸入的用戶名和口令及以后輸入的任何命令或字符以NVT(Net Virtual Terminal)格式傳送到遠(yuǎn)程主機(jī)。該過程實際上是從本地主機(jī)向遠(yuǎn)程主機(jī)發(fā)送一個IP數(shù)據(jù)報;
37、3)將遠(yuǎn)程主機(jī)輸出的NVT格式的數(shù)據(jù)轉(zhuǎn)化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執(zhí)行結(jié)果; 4)最后,本地終端對遠(yuǎn)程主機(jī)進(jìn)行撤消連接。該過程是撤銷一個TCP連接。 上面的內(nèi)容只是討論了遠(yuǎn)程登陸最基本的東西,其中的復(fù)雜和編程人員的艱辛是我們難以想象的,不知道你在舒服的使用Telnet的同時,是否想到了這些! 三 Telnet協(xié)議 我們知道Telnet服務(wù)器軟件是我們最常用的遠(yuǎn)程登錄服務(wù)器軟件,是一種典型的客戶機(jī)/服務(wù)器模型的服務(wù),它應(yīng)用Telnet協(xié)議來工作。那么,什么是Telnet協(xié)議?它都具備哪些特點呢? 1 基本內(nèi)容 Telnet協(xié)議是TCP/IP協(xié)議族中
38、的一員,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議。應(yīng)用Telnet協(xié)議能夠把本地用戶所使用的計算機(jī)變成遠(yuǎn)程主機(jī)系統(tǒng)的一個終端。它提供了三種基本服務(wù): 1)Telnet定義一個網(wǎng)絡(luò)虛擬終端為遠(yuǎn)的系統(tǒng)提供一個標(biāo)準(zhǔn)接口??蛻魴C(jī)程序不必詳細(xì)了解遠(yuǎn)的系統(tǒng),他們只需構(gòu)造使用標(biāo)準(zhǔn)接口的程序; 2)Telnet包括一個允許客戶機(jī)和服務(wù)器協(xié)商選項的機(jī)制,而且它還提供一組標(biāo)準(zhǔn)選項; 3)Telnet對稱處理連接的兩端,即Telnet不強(qiáng)迫客戶機(jī)從鍵盤輸入,也不強(qiáng)迫客戶機(jī)在屏幕上顯示輸出。 2 適應(yīng)異構(gòu) 為了使多個操作系統(tǒng)間的Telnet交互操作成為可能,就必須詳細(xì)了解異構(gòu)計算機(jī)和操作系統(tǒng)。比如,一些操作
39、系統(tǒng)需要每行文本用ASCII回車控制符(CR)結(jié)束,另一些系統(tǒng)則需要使用ASCII換行符(LF),還有一些系統(tǒng)需要用兩個字符的序列回車-換行(CR-LF);再比如,大多數(shù)操作系統(tǒng)為用戶提供了一個中斷程序運行的快捷鍵,但這個快捷鍵在各個系統(tǒng)中有可能不同(一些系統(tǒng)使用CTRL+C,而另一些系統(tǒng)使用ESCAPE)。如果不考慮系統(tǒng)間的異構(gòu)性,那么在本地發(fā)出的字符或命令,傳送到遠(yuǎn)地并被遠(yuǎn)地系統(tǒng)解釋后很可能會不準(zhǔn)確或者出現(xiàn)錯誤。因此,Telnet協(xié)議必須解決這個問題。 為了適應(yīng)異構(gòu)環(huán)境,Telnet協(xié)議定義了數(shù)據(jù)和命令在Internet上的傳輸方式,此定義被稱作網(wǎng)絡(luò)虛擬終端NVT(Net Vir
40、tual Terminal)。它的應(yīng)用過程如下: 對于發(fā)送的數(shù)據(jù):客戶機(jī)軟件把來自用戶終端的按鍵和命令序列轉(zhuǎn)換為NVT格式,并發(fā)送到服務(wù)器,服務(wù)器軟件將收到的數(shù)據(jù)和命令,從NVT格式轉(zhuǎn)換為遠(yuǎn)地系統(tǒng)需要的格式; 對于返回的數(shù)據(jù):遠(yuǎn)地服務(wù)器將數(shù)據(jù)從遠(yuǎn)地機(jī)器的格式轉(zhuǎn)換為NVT格式,而本地客戶機(jī)將將接收到的NVT格式數(shù)據(jù)再轉(zhuǎn)換為本地的格式。 對于NVT格式的詳細(xì)定義,有興趣的朋友可以去查找相關(guān)資料。 3 傳送遠(yuǎn)地命令 我們知道絕大多數(shù)操作系統(tǒng)都提供各種快捷鍵來實現(xiàn)相應(yīng)的控制命令,當(dāng)用戶在本地終端鍵入這些快捷鍵的時候,本地系統(tǒng)將執(zhí)行相應(yīng)的控制命令,而不把這些快捷鍵作為輸入。那么對于T
41、elnet來說,它是用什么來實現(xiàn)控制命令的遠(yuǎn)地傳送呢? Telnet同樣使用NVT來定義如何從客戶機(jī)將控制功能傳送到服務(wù)器。我們知道USASCII字符集包括95個可打印字符和33個控制碼。當(dāng)用戶從本地鍵入普通字符時,NVT將按照其原始含義傳送;當(dāng)用戶鍵入快捷鍵(組合鍵)時,NVT將把它轉(zhuǎn)化為特殊的ASCII字符在網(wǎng)絡(luò)上傳送,并在其到達(dá)遠(yuǎn)地機(jī)器后轉(zhuǎn)化為相應(yīng)的控制命令。將正常ASCII字符集與控制命令區(qū)分主要有兩個原因: 1)這種區(qū)分意味著Telnet具有更大的靈活性:它可在客戶機(jī)與服務(wù)器間傳送所有可能的ASCII字符以及所有控制功能; 2)這種區(qū)分使得客戶機(jī)可以無二義性的指定信令,而不會產(chǎn)生控制
42、功能與普通字符的混亂。 4 數(shù)據(jù)流向 上面我們提到過將Telnet設(shè)計為應(yīng)用級軟件有一個缺點,那就是:效率不高。這是為什么呢?下面給出Telnet中的數(shù)據(jù)流向: 數(shù)據(jù)信息被用戶從本地鍵盤鍵入并通過操作系統(tǒng)傳到客戶機(jī)程序,客戶機(jī)程序?qū)⑵涮幚砗蠓祷夭僮飨到y(tǒng),并由操作系統(tǒng)經(jīng)過網(wǎng)絡(luò)傳送到遠(yuǎn)地機(jī)器,遠(yuǎn)地操作系統(tǒng)將所接收數(shù)據(jù)傳給服務(wù)器程序,并經(jīng)服務(wù)器程序再次處理后返回到操作系統(tǒng)上的偽終端入口點,最后,遠(yuǎn)地操作系統(tǒng)將數(shù)據(jù)傳送到用戶正在運行的應(yīng)用程序,這便是一次完整的輸入過程;輸出將按照同一通路從服務(wù)器傳送到客戶機(jī)。 因為每一次的輸入和輸出,計算機(jī)將切換進(jìn)程環(huán)境好幾次,這個開銷是很昂貴的
43、。還好用戶的鍵入速率并不算高,這個缺點我們?nèi)匀荒軌蚪邮堋?5 強(qiáng)制命令 我們應(yīng)該考慮到這樣一種情況:假設(shè)本地用戶運行了遠(yuǎn)地機(jī)器的一個無休止循環(huán)的錯誤命令或程序,且此命令或程序已經(jīng)停止讀取輸入,那么操作系統(tǒng)的緩沖區(qū)可能因此而被占滿,如果這樣,遠(yuǎn)地服務(wù)器也無法再將數(shù)據(jù)寫入偽終端,并且最終導(dǎo)致停止從TCP連接讀取數(shù)據(jù),TCP連接的緩沖區(qū)最終也會被占滿,從而導(dǎo)致阻止數(shù)據(jù)流流入此連接。如果以上事情真的發(fā)生了,那么本地用戶將失去對遠(yuǎn)地機(jī)器的控制。 為了解決此問題,Telnet協(xié)議必須使用外帶信令以便強(qiáng)制服務(wù)器讀取一個控制命令。我們知道TCP用緊急數(shù)據(jù)機(jī)制實現(xiàn)外帶數(shù)據(jù)信令,那么Telnet只要再附
44、加一個被稱為數(shù)據(jù)標(biāo)記(date mark)的保留八位組,并通過讓TCP發(fā)送已設(shè)置緊急數(shù)據(jù)比特的報文段通知服務(wù)器便可以了,攜帶緊急數(shù)據(jù)的報文段將繞過流量控制直接到達(dá)服務(wù)器。作為對緊急信令的相應(yīng),服務(wù)器將讀取并拋棄所有數(shù)據(jù),直到找到了一個數(shù)據(jù)標(biāo)記。服務(wù)器在遇到了數(shù)據(jù)標(biāo)記后將返回正常的處理過程。 6 選項協(xié)商 由于Telnet兩端的機(jī)器和操作系統(tǒng)的異構(gòu)性,使得Telnet不可能也不應(yīng)該嚴(yán)格規(guī)定每一個telnet連接的詳細(xì)配置,否則將大大影響Telnet的適應(yīng)異構(gòu)性。因此,Telnet采用選項協(xié)商機(jī)制來解決這一問題。 Telnet選項的范圍很廣:一些選項擴(kuò)充了大方向的功
45、能,而一些選項制涉及一些微小細(xì)節(jié)。例如:有一個選項可以控制Telnet是在半雙工還是全雙工模式下工作(大方向);還有一個選項允許遠(yuǎn)地機(jī)器上的服務(wù)器決定用戶終端類型(小細(xì)節(jié))。 Telnet選項的協(xié)商方式也很有意思,它對于每個選項的處理都是對稱的,即任何一端都可以發(fā)出協(xié)商申請;任何一端都可以接受或拒絕這個申請。另外,如果一端試圖協(xié)商另一端不了解的選項,接受請求的一端可簡單的拒絕協(xié)商。因此,有可能將更新,更復(fù)雜的Telnet客戶機(jī)服務(wù)器版本與較老的,不太復(fù)雜的版本進(jìn)行交互操作。如果客戶機(jī)和服務(wù)器都理解新的選項,可能會對交互有所改善。否則,它們將一起轉(zhuǎn)到效率較低但可工作的方式下運行。所有的這些設(shè)計,
46、都是為了增強(qiáng)適應(yīng)異構(gòu)性,可見Telnet的適應(yīng)異構(gòu)性對其的應(yīng)用和發(fā)展是多么重要。 上面討論了一些原理方面的東西,雖然我們在Telnet的使用過程中很難接觸到這一層面,但我認(rèn)為了解這些是有意義的,它會給我們帶來許多啟示。下面讓我們來看看Win2000的Telnet服務(wù)。 (本系列教程不定期更新,欲獲得最新版本,請登陸官方網(wǎng)站:菜菜鳥社) 四 Win2000的Telnet服務(wù) 其實從應(yīng)用層面上,Win2000的Telnet服務(wù)并沒有什么可說的,絕大部分內(nèi)容你都可以從HELP文件中得到,我在此只是把它稍微整理一下而已。 1 基本配置 Win2000為我們提供了Telnet客戶機(jī)和
47、服務(wù)器程序:Telnet.exe是客戶機(jī)程序(Client),tlntsvr.exe是服務(wù)器程序(server),同時它還為我們提供了Telnet服務(wù)器管理程序tlntadmn.exe。 Windows 2000 默認(rèn)安裝了 Telnet 服務(wù),但是并沒有默認(rèn)啟動。下面給出HELP文件中 Telnet 服務(wù)的一部分默認(rèn)設(shè)置: AllowTrustedDomain:是否允許域用戶訪問。默認(rèn)值是1,允許信任域用戶訪問。可以改為0: 不允許域用戶訪問(只允許本地用戶)。 DefaultDomain:可以對與該計算機(jī)具有信任關(guān)系的任
48、何域設(shè)置。默認(rèn)值是"."。 DefaultShell:顯示 shell 安裝的路徑位置。默認(rèn)值是: %systemroot%System32Cmd.exe /q /k MaxFailedLogins:在連接終止之前顯示嘗試登錄失敗的最大次數(shù)。默認(rèn)是3。 LoginScript:顯示 Telnet 服務(wù)器登錄腳本的路徑位置。默認(rèn)的位置就是“%systemroot%System32login.cmd”,你可以更改腳本內(nèi)容,這樣登錄進(jìn)Telnet的歡迎屏幕就不一樣了。 NTLM:NTLM身份驗證選項
49、。默認(rèn)是2。可以有下面這些值: 0: 不使用 NTLM 身份驗證。 1: 先嘗試 NTLM 身份驗證,如果失敗,再使用用戶名和密碼。 2: 只使用 NTLM 身份驗證。 TelnetPort:顯示 telnet 服務(wù)器偵聽 telnet 請求的端口。默認(rèn)是:23。你也可以更改為其他端口。 以上各項設(shè)置你可以使用tlntadmn.exe(Telnet服務(wù)器管理程序)來進(jìn)行非常方便的配置,配置后需要重新啟動Telnet服務(wù)。如圖1 2 NTLM 提到了teln
50、et就不能不提NTLM,我想這也是讓入侵者最為頭痛的一件事,哪怕你獲得了管理員帳號和密碼,想簡單通過NTLM也并非易事,況且win2000中的telnet默認(rèn)僅以NTLM方式驗證身份,這就讓我們不得不關(guān)注NTLM這個東東,那么什么是NTLM呢? 早期的SMB協(xié)議在網(wǎng)絡(luò)上明文傳輸口令,后來出現(xiàn)了"LAN Manager Challenge/Response"驗證機(jī)制,簡稱LM,它十分簡單以至很容易被破解,微軟隨后提出了WindowsNT挑戰(zhàn)/響應(yīng)驗證機(jī)制,即NTLM?,F(xiàn)在已經(jīng)有了更新的NTLMv2以及Kerberos驗證體系。NTLM工作流程是這樣的: 1
51、、客戶端首先在本地加密當(dāng)前用戶的密碼成為密碼散列 2、客戶端向服務(wù)器發(fā)送自己的帳號,這個帳號是沒有經(jīng)過加密的,明文直接傳輸 3、服務(wù)器產(chǎn)生一個16位的隨機(jī)數(shù)字發(fā)送給客戶端,作為一個 challenge(挑戰(zhàn)) 4、客戶端再用加密后的密碼散列來加密這個 challenge ,然后把這個返回給服務(wù)器。作為 response(響應(yīng)) 5、服務(wù)器把用戶名、給客戶端的challenge 、客戶端返回的 response 這三個東西,發(fā)送域控制器 6、域控制器用這個用戶名在 SAM密碼管理庫中找到這個用
52、戶的密碼散列,然后使用這個密碼散列來加密 challenge。 7、域控制器比較兩次加密的 challenge ,如果一樣,那么認(rèn)證成功。 從上面的過程我們可以看出,NTLM是以當(dāng)前用戶的身份向Telnet服務(wù)器發(fā)送登錄請求的,而不是用你掃到的對方管理員的帳戶和密碼登錄,顯然,你的登錄將會失敗。舉個例子來說,你家的機(jī)器名為A(本地機(jī)器),你入侵的機(jī)器名為B(遠(yuǎn)地機(jī)器),你在A上的帳戶是xinxin,密碼是1234,你掃到B的管理員帳號是Administrator,密碼是5678,當(dāng)你想Telnet到B時,NTLM將自動以當(dāng)前用戶的帳號和密碼作為登錄的憑據(jù)來進(jìn)行上面
53、的7項操作,即用xinxin和1234,而并非用你掃到的Administrator和5678,且這些都是自動完成的,根本不給你插手的機(jī)會,因此你的登錄操作將失敗。 由于Telnet服務(wù)器對NTLM的使用有3個選項,所以當(dāng)你Telnet遠(yuǎn)地機(jī)器時,會顯示下面情況中的一種: 1)身份驗證選項=0時 = Microsoft (R) Windows (TM) Version 5.00 (Build 2195) Welcome to Microsoft Telnet Service Telnet
54、 Server Build 5.00.99201.1 login: password: 為0時不使用NTML身份驗證,直接輸入用戶名和密碼,比如你可以輸入掃到的Administrator和5678 2)身份驗證選項=1時 = NTLM Authentication failed due to insufficient credentials. Please login withclear text username and passwo
55、rd Microsoft (R) Windows (TM) Version 5.00 (Build 2195) Welcome to Microsoft Telnet Service Telnet Server Build 5.00.99201.1 login: password: 先嘗試 NTLM 身份驗證,如果失敗,再使用用戶名和密碼,其實這種方式對于我們來說,與上一種方式?jīng)]什么區(qū)別 3)身份驗證選項=2時 = NTLM
56、 Authentication failed due to insufficient credentials. Please login withclear text username and password Server allows NTLM authentication only Server has closed connection 遺失對主機(jī)的連接。 C:> 仔細(xì)看看上面的顯示
57、,根本沒有給你輸入用戶名和密碼的機(jī)會,直接斷開連接,掃到了密碼也是白掃 所以對于入侵者來說,NTLM是橫在我們面前的一座大山,必須要除掉它,一般我們有如下幾種方法: 1通過修改遠(yuǎn)程注冊表更改telnet服務(wù)器配置,將驗證方式從2改為1或0; 2使用NTLM.exe,上傳后直接運行,可將telnet服務(wù)器驗證方式從2改為1; 3在本地建立掃描到的用戶,以此用戶身份開啟telnet客戶機(jī)并進(jìn)行遠(yuǎn)程登錄; 4使用軟件,比如opentelnet.exe(需要管理員權(quán)限且開啟IPC管道) 5使用腳本,如RTCS,(需要管理員權(quán)限但不依賴IPC管道) 基本上是以上的5種,其中后兩種是我們比較常用的開tel
58、net的手法,而且使用方法十分簡單,命令如下: OpenTelnet.exe server username password NTLMAuthor telnetport OpenTelnet.exe 服務(wù)器地址 管理員用戶名 密碼 驗證方式(填0或1) telnet端口 cscript RTCS.vbe targetIP username password NTLMAuthor telnetport cscript RTCS.vbe <目標(biāo)IP> <管理員用戶名> <密碼> <驗證方式> 五 在telnet中該做什么 本來寫到上面就想結(jié)束了,不過許多朋友都說telnet上去后不知道該做什么了,既然這樣,那我就拋磚引玉吧,這次不講具體做法,只是說說思路,什么?為什么不講具體做法?篇幅不夠嘛,以后我會一一解釋的。 1 查看
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- racemic-8-Hydroxy-cannabichromene-生命科學(xué)試劑-MCE-7832
- Mouse-Laminin-生命科學(xué)試劑-MCE-7265
- 二零二五年度雙方2025年度智能機(jī)器人研發(fā)團(tuán)隊用工合同
- 2025年度自媒體合伙人合同版:短視頻平臺網(wǎng)紅孵化與推廣合同
- 防震防火的應(yīng)急預(yù)案
- 上海市商業(yè)租賃合同
- 產(chǎn)業(yè)基地設(shè)施維護(hù)合同
- 上海市汽車租賃合同模版正式版
- 個人住宅購買合同定金協(xié)議
- 專兼職律師服務(wù)合同樣本格式
- 福建省泉州市晉江市2024-2025學(xué)年七年級上學(xué)期期末生物學(xué)試題(含答案)
- 2025年春新人教版物理八年級下冊課件 第十章 浮力 第4節(jié) 跨學(xué)科實踐:制作微型密度計
- 貨運車輛駕駛員服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 肝臟炎性假瘤的影像學(xué)表現(xiàn)培訓(xùn)課件
- 國家行政機(jī)關(guān)公文格式課件
- 業(yè)務(wù)員回款考核辦法
- 急性心梗的護(hù)理業(yè)務(wù)學(xué)習(xí)課件
- 2021年投標(biāo)部工作計劃
- 好書推薦《西游記》共33張幻燈片
- 2019年安徽省中考數(shù)學(xué)試卷及答案解析
評論
0/150
提交評論