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

Python telnet登陸功能實現代碼

 更新時間:2020年04月16日 09:21:55   作者:starnight_cyber  
這篇文章主要介紹了Python telnet登陸功能實現代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

閱讀目錄

  源碼請參考:starnightcyber/scripts

  主要使用TelnetClient類,封裝了登錄和執(zhí)行命令的基本操作。

  源碼如下,或請查看:scripts/telnet/telnet.py

telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到服務器。

終端使用者可以在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制臺上輸入一樣,可以在本地就能控制服務器。要開始一個telnet會話,必須輸入用戶名和密碼來登錄服務器,Telnet是常用的遠程控制Web服務器的方法。

代碼如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import logging
import telnetlib
import time


# telnet登錄認證相關
auth = {
 "user_prompt": b'Username:',      # 輸入用戶名提示
 "password_prompt": b'Password:',    # 輸入密碼提示
 "enter": b'\r',            # 回車
 "remote_enter": b'\n\r',
}


class TelnetClient(object):
  def __init__(self):
    self.tn = telnetlib.Telnet()    # Telnet client

  def login(self, ip, port, tel_dict):
    """
    telnet 登錄
    :param ip: 目標ip
    :param port: 目標端口
    :param tel_dict: 密碼字典
    :return: 登錄成功(True) or 登錄失敗(False)
    """
    msg = 'trying to login {}:{} telnet service'.format(ip, port)
    print(msg)

    # telnet登錄
    for username, password in tel_dict.items():

      # 創(chuàng)建一個telnet連接
      try:
        self.tn.open(ip, port)
      except:
        logging.warning('%s網絡連接失敗' % ip)
        return False, ''

      msg = 'try user:[{}], password:[{}]'.format(username, password)
      print(msg)

      # 登錄嘗試
      try:
        # 等待輸入用戶名提示user_prompt出現后,輸入用戶名
        self.tn.read_until(auth['user_prompt'], timeout=3)
        self.tn.write(username.encode('ascii') + auth['enter'])

        # 等待輸入密碼提示password_prompt出現后,輸入密碼
        self.tn.read_until(auth['password_prompt'], timeout=3)
        self.tn.write(password.encode('ascii') + auth['enter'])

        # 延時兩秒再收取返回結果,給服務端足夠響應時間
        time.sleep(2)

        # 獲取登錄結果, read_very_eager()獲取到的是的是上次獲取之后本次獲取之前的所有輸出
        command_result = self.tn.read_very_eager().decode('ascii')
        # print('===>', command_result)
        prompt, _ = command_result.split('->')
        # print('===>', prompt.strip())

        # 如果返回的結果中沒有提示輸入用戶名,表示登錄成功
        if auth['user_prompt'] not in command_result.encode('ascii'):
          print('登錄成功')
          return True
        else:
          continue
      except:
        pass
    return False

  def execute_command(self, command):
    """
    執(zhí)行一些命令
    :param command: 要執(zhí)行的命令
    :return: None
    """
    try:
      self.tn.write(command.encode('ascii') + auth['enter'])
      time.sleep(2)
      # 獲取命令結果
      command_result = self.tn.read_very_eager().decode('ascii')
      print('==>', command_result)
    except:
      print('something went wrong...')
      pass

  # 退出telnet,保留
  def logout_host(self):
    self.tn.write(b"bye\r")

if __name__ == '__main__':

  # 參數
  ip = '172.16.176.120'
  port = '2570'
  tel_dict = {'admin': 'admin', 'aaa': 'bbb', '': ''}

  # 登陸
  tn = TelnetClient()
  tn.login(ip, port, tel_dict)

  # 執(zhí)行命令
  command = 'ver'
  tn.execute_command(command)

  # 退出
  tn.logout_host()

執(zhí)行輸出如下:

# python3 telnet_brute.py
trying to login 172.16.176.120:2570 telnet service
try user:[admin], password:[admin]
try user:[aaa], password:[bbb]
try user:[], password:[]
登錄成功
==> ver
 Version :PAS_SIPPROXY_6.0.0.3.0.190831, Compile Time: 16:18:41, Feb 25 2020
Return value: 1
SipPrxoy->

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python 超時請求或計算的處理方案

    Python 超時請求或計算的處理方案

    這篇文章主要介紹了Python 超時請求或計算的處理方案,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • python自動化測試實例解析

    python自動化測試實例解析

    這篇文章主要介紹了python自動化測試實例,并對實例中的注意點進行了簡單的分析,需要的朋友可以參考下
    2014-09-09
  • Pytorch深度學習經典卷積神經網絡resnet模塊訓練

    Pytorch深度學習經典卷積神經網絡resnet模塊訓練

    這篇文章主要介紹了Pytorch深度學習經典卷積神經網絡resnet模塊訓練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python 窗體(tkinter)按鈕 位置實例

    Python 窗體(tkinter)按鈕 位置實例

    今天小編就為大家分享一篇Python 窗體(tkinter)按鈕 位置實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python通過郵件服務器端口發(fā)送郵件的方法

    python通過郵件服務器端口發(fā)送郵件的方法

    這篇文章主要介紹了python通過郵件服務器端口發(fā)送郵件的方法,涉及Python發(fā)送郵件的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 基于python的七種經典排序算法(推薦)

    基于python的七種經典排序算法(推薦)

    本篇文章主要介紹基于python的七種經典排序算法(推薦),具有一定的參考價值,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2016-12-12
  • python3 使用openpyxl將mysql數據寫入xlsx的操作

    python3 使用openpyxl將mysql數據寫入xlsx的操作

    這篇文章主要介紹了python3 使用openpyxl將mysql數據寫入xlsx的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python入門之Tkinter使用的方法詳解

    python入門之Tkinter使用的方法詳解

    作為Python開發(fā)者,圖形用戶界面(GUI)開發(fā)是必備技能之一,本文將介紹Python自帶的GUI工具包TKinter,這篇文章主要給大家介紹了關于python入門之Tkinter使用的相關資料,需要的朋友可以參考下
    2022-03-03
  • Python使用Pickle模塊進行數據保存和讀取的講解

    Python使用Pickle模塊進行數據保存和讀取的講解

    今天小編就為大家分享一篇關于Python使用Pickle模塊進行數據保存和讀取的講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • python中sort()函數用法詳解

    python中sort()函數用法詳解

    Python和Java等編程語言一樣,提供了一種自動排序的方法,Java中是Arrays.sort()方法,而Python中是sort()方法,下面這篇文章主要給大家介紹了關于python中sort()函數用法的相關資料,需要的朋友可以參考下
    2022-08-08

最新評論

静安区| 德清县| 云安县| 定南县| 毕节市| 监利县| 罗田县| 临桂县| 济阳县| 浑源县| 中卫市| 古蔺县| 塔河县| 墨竹工卡县| 潜山县| 米脂县| 安丘市| 玉树县| 柘荣县| 榆林市| 杭锦旗| 谷城县| 和硕县| 灌云县| 阳西县| 马边| 璧山县| 双城市| 淮阳县| 平乐县| 泸州市| 古浪县| 富蕴县| 泉州市| 都昌县| 亳州市| 珠海市| 玉溪市| 丁青县| 永福县| 南川市|