系統(tǒng)環(huán)境:
64位win7企業(yè)版
python2.7.10
2016.08.16修改內容:
1)read_until()函數是可以設置timeout的,之前不能獲取到password之后的返回是因為調用read_some()函數次數不夠,沒有讀取到返回信息
2)如果不設置read_until()函數的timeout值,那么程序將一直建立連接而不會關閉,導致程序永遠沒有返回,所以設置timeout還是有必要的
3)不同服務器返回的內容是不一樣的,例如網絡設備radware返回就不是"login:",而是"user:",有的password的p是大寫的,所以匹配"assword:"比較好。并且,不同服務器返回到的用戶密碼錯誤提示也是不一樣的,可以在python控制臺先試試再去寫代碼。
def check_23_port(ip,username,passwd): try: tn=telnetlib.Telnet()# #tn.set_debuglevel(0),設置為2可以看到更多信息 tn.open(host=ip) tn.read_until('login:')#這里設置timeout=10比較好,否則如果不能匹配字符串,這個連接將一直建立,程序不會返回 tn.write(username+'/r/n') tn.read_until('password:') tn.write(passwd+'/r/n') tn.read_some()#為result準備數據,可能需要多調用幾次才能夠獲取到服務器返回的信息"Login Failed" result = tn.read_some()#這里調用兩次,不同的操作系統(tǒng)返回的不一樣,AIX linux返回的是invalid rex = r'Login Failed' tmp = re.search(rex,result) if tmp == None: return True else: return False tn.write("exit/r/n") tn.close() except Exception as e: pass print "connect error:" + str(e)以上這篇對python使用telnet實現弱密碼登錄的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答