0

我正在开发一个后门程序,用于在家中通过我的 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谢谢

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

4

3 回答 3

0

Popen 需要一个参数列表,所以试试这个:

 Popen([data], 
于 2013-05-16T16:39:20.807 回答
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)
于 2013-05-16T17:12:37.000 回答
0

经过大量的尝试和错误,我找到了解决方案

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

我不知道为什么,但它起作用了:D

于 2014-03-17T14:20:10.103 回答