如何在Python反向shell中恢复输出

如何在Python反向shell中恢复输出,python,Python,我正在用Python制作一个反向shell,这里是客户端和服务器代码的一小部分 服务器端: while True: cmd = input() if len(cmd) > 0: connection.send(str.encode(cmd)) response = connection.recv(1024).decode('utf-8') print(response) data = str(s.recv(1024), 'u

我正在用Python制作一个反向shell,这里是客户端和服务器代码的一小部分

服务器端:

while True:
    cmd = input()
    if len(cmd) > 0:
        connection.send(str.encode(cmd))
        response = connection.recv(1024).decode('utf-8')
        print(response)
data = str(s.recv(1024), 'utf-8')
if data == 'dir':
    output = subprocess.getoutput(data)
    s.send(str.encode(output))
客户端:

while True:
    cmd = input()
    if len(cmd) > 0:
        connection.send(str.encode(cmd))
        response = connection.recv(1024).decode('utf-8')
        print(response)
data = str(s.recv(1024), 'utf-8')
if data == 'dir':
    output = subprocess.getoutput(data)
    s.send(str.encode(output))
假设我在shell中键入了dir命令,由于此命令的输出可能很长,因此有一种方法可以在我再次按enter键时使输出继续进行?

来自:

一次接收的最大数据量由
bufsize
指定

仅为了查看代码,我猜您应该一直调用
connection.recv(1024)
,直到从套接字读取所有可用数据。也许像这样的办法行得通

while True:
    cmd = input()
    if len(cmd) > 0:
        connection.send(str.encode(cmd))
        response = ""
        message = connection.recv(1024).decode('utf-8')
        while message:
            response += message
            message = connection.recv(1024).decode('utf-8')
        print(response)
不过,这只是一个猜测。

来自:

一次接收的最大数据量由
bufsize
指定

仅为了查看代码,我猜您应该一直调用
connection.recv(1024)
,直到从套接字读取所有可用数据。也许像这样的办法行得通

while True:
    cmd = input()
    if len(cmd) > 0:
        connection.send(str.encode(cmd))
        response = ""
        message = connection.recv(1024).decode('utf-8')
        while message:
            response += message
            message = connection.recv(1024).decode('utf-8')
        print(response)

不过只是一个猜测。

我想在没有更多数据之前调用该方法是正确的。while语句使这段代码永远运行,但我将尝试搜索是否有合适的方法通过循环接收数据。我想在没有更多数据之前调用该方法是正确的。while语句使这段代码永远运行,但我将尝试搜索是否有合适的方法通过循环接收数据。