陳廣
摘要:通過Socket編程分析連接交換機后,發(fā)送接收的數(shù)據(jù)。研究使用Telnet協(xié)議編程遠程控制華為及思科交換機的最終方法。
關(guān)鍵詞:Telnet協(xié)議;交換機控制
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)24-0058-01
本校學生宿舍每日11時斷網(wǎng),第二天早上6時開網(wǎng),周六周日及節(jié)假日24小時開網(wǎng)。之前網(wǎng)管中心派專人每天手動關(guān)閉及開啟交換機,工作量大,而且很麻煩。于是想到是否可以寫一個程序自動完成這些工作。
這個程序的難點在于如何網(wǎng)絡(luò)編程遠程控制交換機,控制交換機可使用Telnet及SNMP等協(xié)議。由于Telnet協(xié)議使用起來更為簡單,所以最終選定Telnet協(xié)議進行編程控制。編程語言選定C#語言,編程工具選定Visual Studio 2017。我校交換機有兩個品牌,華為及思科,所以需要分別進行分析。
1 協(xié)議分析
由于Telnet協(xié)議使用的是23號網(wǎng)絡(luò)端口,本次直接使用Socket編程,手動向交換機 23 端口發(fā)送數(shù)據(jù),然后接收交換機所發(fā)回的信息,接下來對接收到的數(shù)據(jù)進行分析,找出規(guī)律。最終實現(xiàn)編程控制。
1)思科交換機協(xié)議分析
當使用Socket向交換機發(fā)起連接請求后,收到的數(shù)據(jù)為:
255 251 1 255 251 3 255 253 24 255 253 31 13 10 13 10 85 115 101 114 32 65 99 99 101 115 115 32 86 101 114 105 102 105 99 97 116 105 111 110 13 10 13 10 80 97 115 115 119 111 114 100 58 32
其中,Telnet協(xié)議的每個指令以 255 開頭,長度為3個字節(jié)。觀察以上數(shù)據(jù),可知前12個字節(jié)為4個Telnet指令,它的具體含義我們不必了解。之后的數(shù)據(jù)為顯示信息:
User Access Verification
Password:
這表示需要輸入密碼,在輸入正確密碼后,收到的信息為:
13 10 83 119 105 116 99 104 62
轉(zhuǎn)換為字符則為:Switch>
由于思科交換機允許雙重密碼,所以此處需要輸入 enable
然后分5次分別收到101,110,97 98,108 101,13 10。譯為:enable
然后再收到 80 97 115 115 119 111 114 100 58 32。譯為:Password:
這里我們觀察到,發(fā)送到交換機的指令會回發(fā)給電腦這是因為,Telnet協(xié)議會在服務(wù)端產(chǎn)生一個虛擬終端,終端上顯示的任何信息都會回顯給客戶端。此次輸入第二個密碼就可以工作了。
2)華為交換機協(xié)議分析
發(fā)起連接請求后收到如下信息:
255 251 1 255 251 1 255 251 1 255 251 3 255 253 24 255 253 31 13
此為6個Telnet協(xié)議指令,然后繼續(xù)收到:
13 10 13 10 76 111 103 105 110 32 97 117 116 104 101 110 116 105 99 97 116 105 111 110 13 10 13 10 13 10 80 97 115 115 119 111 114 100 58
譯為:
Login authentication
Password:
輸入密碼后,就可以正常發(fā)送指令控制交換機了,之后的分析略過。
2 算法描述
根據(jù)協(xié)議的分析,我們最終找到規(guī)律,思科交換機在最后一個字符出現(xiàn)‘#符號后可以輸入控制指令,并等待下一個‘#然后繼續(xù)輸入。華為交換機等待的是‘]字符。最終我們可以手動編寫腳本單數(shù)行為發(fā)送的指令,雙數(shù)行為等待的字符串或字符。然后程序讀取這些腳本對交換機進行自動控制。在與服務(wù)器交互過程中需將交互內(nèi)容存儲為日志文件。
找出兩種交換機的共同點并編程控制。這里列出客戶端協(xié)議解析邏輯:
規(guī)則1:如果為Telnet指令則忽略
規(guī)則2:如果收到的信息不包含回車換行則忽略
規(guī)則3:存儲接收到的字符串,直到出現(xiàn)所設(shè)定要接收的字符串,然后刪除回顯字符串后顯示接收的消息,最后向服務(wù)器端發(fā)送存儲好的指令。
3 結(jié)束語
使用Telnet協(xié)議對交換機進行控制非常方便,使用極少代碼便可實現(xiàn)。但其密碼以明文方式在網(wǎng)絡(luò)中傳輸,這帶來了一定的不安全性。如果對安全性有要求,請使用其他協(xié)議進行編程控制。
【通聯(lián)編輯:代影】