命令输入在每个字母python远程控制程序之后拆分

时间:2013-05-16 13:50:34

标签: sockets client-server python-3.3

我正在开发一个后门程序,用于在我家的PC上进行远程操作。服务器连接正常但我在执行命令时遇到问题,因为字母被分割为每个字母键入的新命令... 类似于我输入'echo'时,结果打印的内容为'e',不会被识别为内部或外部命令,等等等等。 然后来了:'c'不被识别等等。

得到我的观点???

当我输入echo时,如何使这项工作等待完整的命令

以下是代码:

import socket
import subprocess
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((ipadd_of_pc_running_this_appl,12345))
s.listen(3) #ignore this plz..i will change this later
cli,addr=s.accept()
while 1:
    data=cli.recv(1024)
    if data:
        data=data.decode() #string type conversion
        proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        output=proc.stdout.readline()+proc.stderr.readline()
        cli.send(output)

顺便说一下,我想用telent或者类似的东西来连接它 提前致谢 抱歉recv_into ...我忘了改变它recv谢谢

注意:问题尚未解决。我复制并粘贴了我的其他文件中的内容[分钟更改;)]。现在编辑代码。请帮助我

3 个答案:

答案 0 :(得分:0)

Popen期待一个参数列表,所以试试这个:

 Popen([data], 

答案 1 :(得分:0)

我可以通过更改

来实现这一目标
data=cli.recv_into(1024)

data=cli.recv(1024)

recv_into需要一个缓冲参数,我不知道OP的代码是如何导致失败的。

这是代码

import socket
import subprocess
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',12345))
s.listen(1) #ignore this plz..i will change this later
cli,addr=s.accept()
while 1:
      data =cli.recv(1024)
      if data:
              data=data.decode() #string type conversion
              proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
              output=proc.stdout.readline()+proc.stderr.readline()
              print(output)

答案 2 :(得分:0)

经过大量的追踪和错误后,我找到了解决方案

data =cli.recv(1024)行更改为data =cli.recv(2048)

我不知道为什么但它有效:D