色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Python實現(xiàn)Telnet自動連接檢測密碼的示例

瀏覽:3日期:2022-06-22 13:02:01

最近在學(xué)習(xí)Python網(wǎng)絡(luò)相關(guān)編程,這個代碼實現(xiàn)了Telnet自動連接檢測root用戶密碼,密碼取自密碼本,一個一個檢測密碼是否匹配,直到匹配成功,屏幕輸出停止。

Python內(nèi)置了telnetlib模塊,支持telnet遠(yuǎn)程操作,只要直接import就可以。

代碼如下:

# encoding=utf-8import telnetlibimport timeimport sysimport osdef do_telnet(Host, Port, username, password, finish): # 連接Telnet服務(wù)器 tn = telnetlib.Telnet(Host, Port, timeout=1) tn.set_debuglevel(3) # 輸入登錄用戶名 tn.read_until('login: ') tn.write(str(username) + ’n’) # 輸入登錄密碼 tn.read_until('Password: ') tn.write(str(password) + ’n’) # 判斷密碼錯誤提示,如果沒有這個提示說明登錄成功 if tn.read_until(finish):print('****** login incorrect!n') tn.close()if __name__ == ’__main__’: Host = input('IP:') # Telnet服務(wù)器IP Port = input('Port:') # Telnet服務(wù)器端口 username = ’root’ # 登錄用戶名 finish = ’incorrect’ # 密碼錯誤提示 pw_file = open(’.pw.txt’, ’r+’) # 密碼文件 Index = 0 print(time.asctime(), ': ****** begin', 'n') while True:password = pw_file.readline()Index += 1print(Index, time.asctime(), ': ****** try', '', username, ':', password, '')if len(password) == 0: breakdo_telnet(Host, Port, username, password, finish) pw_file.close()

密碼本pw.txt,內(nèi)容例如:

root admin 12345 888888

輸出如下:

Python實現(xiàn)Telnet自動連接檢測密碼的示例

注:我這邊測試的目標(biāo)主機(jī)是嵌入式linux系統(tǒng),用戶名是root,密碼錯誤返回的是incorrect提示。你可能要根據(jù)目標(biāo)系統(tǒng)不同修改用戶名和錯誤提示。

telnetlib提供好多方法可以得到數(shù)據(jù),象read_until()是當(dāng)結(jié)果中存在想要的信息時返回,read_some()是只要有結(jié)果就返回,read_very_lazy()是返回緩沖區(qū)中的數(shù)據(jù)。經(jīng)過看代碼,telnetlib采用緩沖的處理方式,因此數(shù)據(jù)并不是一下子就返回的,而是先放在了緩沖區(qū)中。許多的讀取處理都是圍繞著這個緩沖區(qū)來的。而緩沖區(qū)的信息何時到達(dá)就不說不清楚了,也許很快,也許很慢,也許分別到達(dá),也許一下子就收到了。因此,對于數(shù)據(jù)不一定到齊的這種情況,就采用了象read_until()來判斷緩沖區(qū)中的數(shù)據(jù)是否有想要的內(nèi)容,如果沒有就等待,除非到達(dá)了超時時間。再有可以使用expect方法,與read_until差不多,但是它可以支持正則表達(dá)式,功能要強(qiáng)大得多。

在網(wǎng)上還有一個叫 Pexpect 它好象功能強(qiáng)大,它支持多種協(xié)議,它的主頁就建議使用 Pexpect 來下載它的文檔。不過因為網(wǎng)絡(luò)不太好就沒有下來,不知道支不支持 Telnet 協(xié)議。

上面的程序再配以 ftplib 的功能就可以做一個遠(yuǎn)程更新的維護(hù)程序。只不過如何判斷后臺返回的信息,我沒有找到好的方法,是使用read_lazy()還是read_eager()呢?還是什么別的方法。最主要的問題是,返回的數(shù)據(jù)不一定完整。好象沒有提供一個read_line()的方法。

其中port和timeout是可選的參數(shù),而timeout的只是在初始化socket連接時起作用,而一旦連接成功后如果出現(xiàn)等待那就不會起作用了,比如使用read_until方式獲取內(nèi)容時返回的內(nèi)容與指定的內(nèi)容沒有吻合,那么就會造成提示等待的情況,這時timeout是不會起作用的,而這個socket連接會一直保持著,永生不死。

那么如何解決這個問題呢,其實還有一種比較原始的方法,就是使用sleep方法來代替read_until方法,這樣就不會出現(xiàn)種情況,因為到點就會自己輸入,最多也就是最后得不到想要的結(jié)果,但是這個方式很不穩(wěn)定,兼容性也不好;另一種方法是使用線程來啟動這個函數(shù),然后對子線程進(jìn)行超時設(shè)置,這樣就可以達(dá)到間接控制這個telnet連接的目的了。

import threading th1 = threading.Thread(target=do_telnet, args=(host.encode(’utf-8’), user.encode(’utf-8’), passwd.encode(’utf-8’), finish.encode(’utf-8’), commands)) th1.start() th1.join(20) ##20秒超時時間

遇到的問題:

傳遞給Telnet方法的字符串都會被解一次碼,所以如果你傳遞過去需要write的字符串是已經(jīng)解碼的unicode的話,那么就會報錯的,所以在傳遞發(fā)送的字符串之前還是先編成utf-8為妥,用ascii編碼也可以。

以上就是Python實現(xiàn)Telnet自動連接檢測密碼的示例的詳細(xì)內(nèi)容,更多關(guān)于python Telnet自動連接檢測密碼的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产永久免费高清动作片www | 国产精品欧美视频另类专区 | 亚洲伦理天堂 | 久草免费手机视频 | 视频偷拍一级视频在线观看 | 一级毛片美国 | 成人午夜性a一级毛片美女 成人午夜亚洲影视在线观看 | 波多野结衣3女同在线观看 波多野结衣aⅴ在线 | 精品综合久久久久久98 | 日韩一区视频在线 | 日本噜噜影院 | 九九精品国产兔费观看久久 | 自拍成人 | 久久看片网 | 精品自拍一区 | 国产婷婷一区二区在线观看 | 免费观看欧美一级牲片一 | 午夜在线伦理福利视频 | 在线看片a | 久久伊人男人的天堂网站 | 欧美亚洲日本一区二区三区浪人 | 永久免费毛片在线播放 | 欧美一级α片毛片免费观看 | 91久国产在线观看 | 99久久精品免费看国产一区二区 | 国产看片一区二区三区 | 欧美私人网站 | 国产成人精品免费视频大全五级 | 欧美视频在线观看网站 | 美女张开腿男人桶 | 最新日韩欧美不卡一二三区 | 国产在线一区二区三区四区 | 午夜在线观看cao | 亚洲成人免费在线 | 成人网18免费网站 | 免费一级毛片正在播放 | 91精品国产福利尤物免费 | 亚洲欧美精品成人久久91 | 99在线观看精品 | 中文国产成人精品少久久 | 免费看成人毛片 |