I've managed to get the cmd being opened by python. However, using runas administrator comes with a password check before cmd.exe is executed.
I'm using this to open cmd...
import subprocess
subprocess.call(["runas", "/user:Administrator", "cmd.exe"])
I'm looking for a way to automatically enter the password into the runas.exe prompt which opens when i run the code. Say if i were to create var = "test"
and add it after import subprocess
how would i make it so that this variable is passed to and seen as an input to the runas.exe?
The solution would require only python modules which are in version 3.4 or higher.
Update
I have found some code which appears to input straight into runas.exe. However, the apparent input is \x00\r\n
when in the code the input is supposed to be test
I am fairly certain that if i can get the input to be test
then the code will be successful.
The code is as follows :
import subprocess
args = ['runas', '/user:Administrator', 'cmd.exe']
proc = subprocess.Popen(args,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
proc.stdin.write(b'test\n')
proc.stdin.flush()
stdout, stderr = proc.communicate()
print (stdout)
print (stderr)
Although not an answer to your question, this can be a solution to your problem. Use psexec instead of runas. You can run it like this:
(or run it from Python using
subprocess.Popen
or something else)This piece of code actually works (tested on a Windows 2008 server). I've used it to call
runas
for a different user and pass his password. A new command prompt opened with new user context, without needing to enter password.Note that you have to install
pywin32
to have access to the win32 API.The idea is:
Popen
therunas
command, without any input redirection, redirecting outputwin32
packages, with the final\r
to end the password input.(adapted from this code):
I am trying to do the same that the mate ExoticScarf. Copying your code `
Adding universal_newlines=True it seems that it cans write the pass like a str not like a bytes-like objects..