前提・実現したいこと
ソケットプログラミングをしてNetcatを模した挙動のプログラムをしているのですが、listenモードにしているTCPサーバーへ別ターミナルからTCPクライアントとして接続したいと考えています。
この接続の際に上記のエラーが発生します。
発生している問題・エラーメッセージ
error: [Errno 111] Connection refused
該当のソースコード
以下該当箇所のソースです。
python
1import sys 2import socket 3import getopt 4import threading 5import subprocess 6 7# グローバル変数の定義 8listen = False 9command = False 10upload = False 11execute = "" 12target = "" 13upload_destination = "" 14port = 0 15 16 17def main(): 18 global listen 19 global port 20 global execute 21 global command 22 global upload_destination 23 global target 24 25 if not len(sys.argv[1:]): 26 usage() 27 28 # コマンドラインオプションの読み込み 29 try: 30 opts, args = getopt.getopt( 31 sys.argv[1:], 32 "hle:t:p:cu:", 33 ["help", "listen", "execute=", "target=", 34 "port=", "command", "upload="]) 35 except getopt.GetoptError as err: 36 print str(err) 37 usage() 38 39 for o,a in opts: 40 if o in ("-h", "--help"): 41 usage() 42 elif o in ("-l", "--listen"): 43 listen = True 44 elif o in ("-e", "--execute"): 45 execute = a 46 elif o in ("-c", "--commandshell"): 47 command = True 48 elif o in ("-u", "--upload"): 49 upload_destination = a 50 elif o in ("-t", "--target"): 51 target = a 52 elif o in ("-p", "--port"): 53 port = int(a) 54 else: 55 assert False, "Unhandled Option" 56 57 # 接続を待機する?それとも標準入力からデータを受け取って送信する? 58 if not listen and len(target) and port > 0: 59 60 # コマンドラインからの入力を`buffer`に格納する。 61 # 入力がこないと処理が継続されないので 62 # 標準入力にデータを送らない場合は CTRL-D を入力すること。 63 buffer = sys.stdin.read() 64 65 # データ送信 66 client_sender(buffer) 67 68 # 接続待機を開始。 69 # コマンドラインオプションに応じて、ファイルアップロード、 70 # コマンド実行、コマンドシェルの実行を行う。 71 if listen: 72 server_loop() 73 74def client_sender(buffer): 75 76 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 77 78 try: 79 # 標的ホストへの接続 80 client.connect((target, port)) 81 82 if len(buffer): 83 client.send(buffer) 84 85 while True: 86 # 標的ホストからのデータを待機 87 recv_len = 1 88 response = "" 89 90 while recv_len: 91 data = client.recv(4096) 92 recv_len = len(data) 93 response+= data 94 95 if recv_len < 4096: 96 break 97 98 print response, 99 100 # 追加の入力を待機 101 buffer = raw_input("") 102 buffer += "\n" 103 104 # データの送信 105 client.send(buffer) 106 107 except: 108 print "[*] Exception! Exiting." 109 110 # 接続の終了 111 client.close() 112
補足情報(FW/ツールのバージョンなど)
Python2.7 kali linux(Vbox)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/27 11:38
2020/03/27 11:50
2020/03/29 16:03