Glowie
Glowie

Reputation: 2309

Script cannot read password

Python script is designed to run with elevated credentials, unfortunately

  1. it still prompts me for password
  2. when I enter the correct password it doesn't work

Here is script1, which calls script2 with elevated credentials

import os
import sys, subprocess, socket, string
import wmi, win32api, win32con
import win32com.shell.shell as sh   

ASADMIN = '/user:DOMAIN\username'
os.system('"runas /user:DOMAIN\username "D:/Python27/python.exe script2.py sender-ip=10.10.10.10 < password.txt""')
sys.exit(0)

if sys.argv[-1] != ASADMIN:
    script = os.path.abspath(sys.argv[0])
    params = ''.join([ASADMIN] + ['D:\Python27\python.exe',script] + sys.argv[1:])
    sh.ShellExecuteEx(lpVerb='runas',lpFile=sys.executable,lpParameters=params)
    sys.exit(0)

Here is script2

import sys, subprocess, socket, string import wmi, win32api, win32con

for args in [item.strip('sender-ip=') for item in sys.argv[1:]]:

userIP = args
userloggedon = ""

# perform system lookup of IP address
userIP = "\\\\" + userIP

pst = subprocess.Popen(
        ["D:\pstools\psloggedon.exe", "-l", "-x",  userIP],
        stdout = subprocess.PIPE,
        stderr = subprocess.PIPE
    )

out, error = pst.communicate()

userLoggedOn = out.split('\n')[1].strip()
print 'userId={}'.format(userLoggedOn)
f = open('D:\SymantecDLP\Protect\plugins\output.txt', 'w')
f.write('userId={}'.format(userLoggedOn))

output.txt is not created

Any ideas?

EDIT

I also read this thread, How to supply password to runas command when executing it from java

but no matter what I try I keep getting the error

Attempting to start c:\test.bat as user "DOMAIN\username" ...
RUNAS ERROR: Unable to run - c:\test.bat
1326: Logon failure: unknown user name or bad password.

Upvotes: 0

Views: 1207

Answers (2)

Geordie
Geordie

Reputation: 2184

You can use PsExec https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

You can supply a username and password and executing does not need to be elevated to admin:

psexec [\computer[,computer2[,...] | @file]]\ [-u user [-p psswd] [-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]

Use the -e switch to give the same results as Runas /netonly:

-e Does not load the specified account’s profile.

Upvotes: 0

Raydel Miranda
Raydel Miranda

Reputation: 14360

Let's talk about your problems one at the time.

1. It still prompts me for password

In the line

os.system('"runas /user:DOMAIN\username "D:/Python27/python.exe script2.py sender-ip=10.10.10.10 < password.txt""')

you're providing the password to script2. runas command still need a password since is trying to run a program as another user.

2. When I enter the correct password it doesn't work

Well ... The code does'n work that's clear. But, you have to be more specific when asking a question. Right now a look to your code and I can see that you're trying to do ping on a remote machine.

Might the remote machine has a firewall? Have you tryed doing ping manually?

Edit: The output.txt file is not created, and running the script don't tell you nothing about error writting the file, obviously your code is hitting one of the sys.exit() lines.

Upvotes: 1

Related Questions