【问题标题】:Hardcode password instead of being prompted for one硬编码密码而不是提示输入密码
【发布时间】:2014-07-07 12:52:31
【问题描述】:

@hybris95 - 由于问题的范围已经改变并且您已经做出响应,我会将您的初始答案标记为解决方案,但我发布了一个后续问题

Script cannot read password


我的 python 脚本以提升用户身份执行另一个脚本。不幸的是,它在执行过程中要求我输入密码。

如何对密码进行硬编码,或自动从其他地方读取密码?有没有可以在 Python 中完成的解决方法?

import os
import sys
import win32com.shell.shell as sh   
ASADMIN = '/user:DOMAIN\user'
os.system('"runas /user:DOMAIN\user "D:/Python27/python.exe myscript.py""')
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)

更新了代码,还是报错

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

command = 'runas /user:DOMAIN\username "D:/Python27/python.exe myscript.py"'

pst = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE)

pst.communicate("password123")

我得到的错误

Attempting to start D:/Python27/python.exe script.py as user "DOMAIN\username" ...
RUNAS ERROR: Unable to run - D:/Python27/python.exe myscript.py
1326: Logon failure: unknown user name or bad password.

【问题讨论】:

  • @goncalopp --- 我提到了 Python,以防万一有可以在 Python 中完成的解决方法

标签: python windows passwords elevated-privileges


【解决方案1】:

由于 RunAs 没有提供关于不提示密码的任何信息。
您可以通过文件传递密码。

例如(在外壳中)我会这样做:
runas /user:DOMAIN\user "D:/Python27/python.exe myscript.py < password.txt
其中 password.txt 包含我的密码

编辑:
您还可以使用管道提供硬编码的密码:
echo "MyPassword" | runas /user:DOMAIN\user "D:/Python27/python.exe myscript.py

【讨论】:

  • 当我尝试 os.system('"runas /user:DOMAIN\username "D:/Python27/python.exe script.py
  • 在提示输入密码后输入密码是否有效?
  • 我试过了,没用。我 100% 肯定我使用了正确的密码。
  • 由于问题的范围已经改变并且您已经做出响应,我会将您的初始答案标记为解决方案,但我会发布另一个问题。
  • 问题是很多要求输入密码的命令行工具不使用 Std In 所以管道等不起作用
【解决方案2】:

您可以使用subprocess.Popen() 生成子进程并使用Popen.communicate() 为其提供输入(密码):

p = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE)
p.communicate(password)

【讨论】:

  • 我试过了,但我收到错误“1326:登录失败:未知用户名或密码错误。”将在原始问题中发布更新的代码
猜你喜欢
  • 2019-02-13
  • 1970-01-01
  • 2012-07-25
  • 2018-12-02
  • 2016-07-03
  • 2019-02-15
  • 1970-01-01
  • 2016-03-22
  • 2012-10-03
相关资源
最近更新 更多