python - 使用 Python 更改 Windows 密码

标签 python passwords

我正在使用 Python 开发一个密码管理器小工具。 它允许中央密码管理器和一次性密码,因此没有人会知道服务器的密码,并且当员工转到其他雇主时我们不需要更改所有密码。

无论如何,该软件的设计是为了它可以打电话回家(从而消除了很多防火墙/Natting 问题)并作为服务运行。我们现在可以同步系统的用户,验证我们得到的密码是否正确。但是登录后重置密码是我们目前正在努力解决的问题。

win32.net NetUserchangePassword 似乎有我们想要的。正如(我认为)它称为“net user *”。 经过测试,我发现它确实调用了 msvc 库的 netUserchangePassword 功能。问题是当我输入旧密码为 None 时它​​不起作用。

该进程以完全管理员身份运行。并且应该能够在不知道旧密码的情况下更改用户密码(免责声明:我来自 unix 背景,因此 root( super 管理员)可以做任何事情,如果我对 Windows 操作系统有误,请纠正我)。

那么,作为 super 管理员,我如何在不知道旧密码的情况下使用 Python 脚本语言更改本地用户的密码?

谢谢!

更新:

def set_password(username, password):
    from win32com import adsi
    ads_obj = adsi.ADsGetObject("WinNT://localhost/%s,user" % username)
    ads_obj.Getinfo()
    ads_obj.Put('Password', password)
    ads_obj.SetInfo()


def verify_success(username, password):
    from win32security import LogonUser
    from win32con import LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT
    try:
        LogonUser(username, None, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT)
    except:
        return False
    return True

u = "test_usr"
p = "TheNewStrongP@S$w0rd!"
set_password(u, p)
if verify_success(u, p):
    print "W00t it workz"
else:
    print "Continue Googling"

猜猜看,不起作用。

最佳答案

这样就可以了

import subprocess

subprocess.call("net users "+username+" "+password, shell = True)

关于python - 使用 Python 更改 Windows 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16079470/

相关文章:

Python - 反向引用命名组

python 可执行文件

c# - 密码哈希和验证不匹配

android - 如何加密我的密码 - Android Studio

python - 在 Python 中存储快速变化的数据的最佳方式是什么?

python - 如何在不停止整个代码的情况下让 Actor 跳跃?

python genfromtxt问题

javascript - 我如何知道使用电子邮件和密码创建用户是否成功?并采取行动

iPhone 密码集成

php - 如何安全地处理Web应用程序中的ftp密码