脚本无法读取密码

0 投票
2 回答
1194 浏览
提问于 2025-04-18 07:07

这个Python脚本是为了以更高的权限运行的,但不幸的是:

  1. 它还是会让我输入密码。
  2. 当我输入正确的密码时,它却不工作。

这是脚本1,它用更高的权限调用脚本2:

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)

这是脚本2:

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

对于从命令行传入的参数,我会去掉每个参数前面的'sender-ip=':

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文件没有被创建。

有什么想法吗?

编辑:

我还看了这个帖子,如何在从Java执行时提供runas命令的密码

但是无论我尝试什么,我总是会遇到这个错误:

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.

2 个回答

0

你可以使用 PsExec 工具,具体信息可以查看这个链接:https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

你可以输入用户名和密码来执行命令,而且不需要提升到管理员权限:

psexec [\电脑名[,电脑名2[,...] | @文件]]\ [-u 用户名 [-p 密码] [-n 秒数][-r 服务名][-h][-l][-s|-e][-x][-i [会话]][-c [-f|-v]][-w 目录][-d][-][-a n,n,...] 命令 [参数]

使用 -e 这个选项可以得到和 Runas /netonly 一样的效果:

-e 不加载指定账户的配置文件。

1

我们一个一个问题来聊。

1. 它还是让我输入密码

在这行代码中:

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

你给了script2一个密码。runas命令还是需要密码,因为它是想以另一个用户的身份来运行程序。

2. 当我输入正确的密码时,它还是不工作

嗯……代码不工作是很明显的。不过,你在提问时需要更具体一些。现在我看你的代码,发现你是在尝试对一台远程机器进行ping操作。

那台远程机器可能有防火墙吗?你有没有尝试手动进行ping

编辑:output.txt文件没有被创建,运行脚本也没有告诉你关于写文件的错误,显然你的代码遇到了某个sys.exit()的地方。

撰写回答