Pythontelnetログイン関数の実装コード

目次を読む

ソースコードについては、starnightcyber / scriptsを参照してください。

TelnetClientクラスは主に、ログインしてコマンドを実行する基本的な操作をカプセル化するために使用されます。

ソースコードは次のとおりです。または、scripts / telnet /telnet.pyを確認してください。

telnetプロトコルはTCP / IPプロトコルスイートのメンバーであり、インターネットリモートログインサービスの標準プロトコルおよび主要な方法です。これにより、ユーザーはローカルコンピューターでリモートホストの作業を完了することができます。エンドユーザーのコンピューターで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',}classTelnetClient(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)またはログインに失敗しました(False)"""
msg ='trying to login {}:{} telnet service'.format(ip, port)print(msg)
# telnetログイン
for username, password in tel_dict.items():
# telnet接続を作成する
try:
self.tn.open(ip, port)
except:
logging.warning('%sNetwork接続に失敗しました'% ip)return False,''
msg ='try user:[{}], password:[{}]'.format(username, password)print(msg)
# ログイン試行
try:
# ユーザー名がユーザーにプロンプトを表示するのを待っています_プロンプトが表示されたら、ユーザー名を入力します
self.tn.read_until(auth['user_prompt'], timeout=3)
self.tn.write(username.encode('ascii')+ auth['enter'])
# パスワードプロンプトパスワードを待っています_プロンプトが表示されたら、パスワードを入力します
self.tn.read_until(auth['password_prompt'], timeout=3)
self.tn.write(password.encode('ascii')+ auth['enter'])
# 返された結果を受信する前に2秒遅延し、サーバーに十分な応答時間を与えます
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):"""
いくつかのコマンドを実行します
: param command:実行するコマンド
: 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)
# 注文の実行
command ='ver'
tn.execute_command(command)
# 脱落
tn.logout_host()

実行出力は次のとおりです。

# 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 252020
Return value:1
SipPrxoy-

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythontelnetログイン関数の実装コード
PythonATM関数の実装コード例
Python描画ローズ実装コード
Python enumerate()関数
Python関数バッファー
Python | Flaskがログイン機能を実現
Pythonカスタム関数の基本
Pythonの結合関数
Python組み込み関数-compile()
Python関数の基礎学習
Pythonデータ分析-関数の適用
Python3組み込み関数table.md
PythonSMS爆撃コード
Pythonプリントプリントタイマー機能
Pythonの上位関数の使用法の概要!
バグを見つけるためのPythonコード(2)
バグを見つけるためのPythonコード(7)
pythonコードにコメントする方法
Pythonはオンライン翻訳機能を実現します
バグを見つけるためのPythonコード(4)
バグを見つけるためのPythonコード(3)
バグを見つけるためのPythonコード(9)
gomokuプログラムのPython実装
Python正規式サンプルコード
Pythonトルネードアップロードファイル機能
Pythonはコードブロックフォールディングを実装します
Pythonマジック関数eval()学習
PythonインストールOpenCVサンプルコード
バグを見つけるためのPythonコード(6)
PythonがFTP機能を実装する方法
バグを見つけるためのPythonコード(1)
バグを見つけるためのPythonコード(8)
Pythonは検証コード認識を実装します
バグを見つけるためのPythonコード(5)
pythonコードは大文字と小文字を区別しますか
PythonGUIシミュレーション実装計算機
Pythonは画像スティッチング機能を実装しています
Pythonの上位関数の使用法の概要!