我正在尝试使用Python解密存储在配置文件XML中的Windows无线密码。我发现一篇博客文章,其中提供了一个示例,展示了如何调用Windows CryptUnprotectData 使用Python的win32crypt模块来完成此操作。我的问题是,我遇到了
即使您以管理员身份运行cmd.exe,仍会收到该错误。 在这里,您需要了解一些关于Windows的知识,作为Windows n00b,我不知道:LocalSystem帐户与管理员特权不同。 为了使用LocalSystem帐户运行cmd.exe,您需要安装一个名为PsTools的Microsoft软件包。 在PsTools内部,有一个称为PsExec的程序,它有点像Un * x上的sudo。 只需下载上面Microsoft TechNet页面底部链接的zip文件并将其解压缩到可以找到它的位置即可。
要使用PsExec,请以管理员身份打开cmd.exe(在屏幕左下角打开开始菜单,将cmd.exe键入搜索框,然后按Ctrl + Shift + Enter以管理员身份运行)。 在打开的用户帐户控制对话框中单击“继续”。 在打开的命令shell中,导航到您解压缩PsTools的目录。 现在运行“psexec.exe / s / i cmd.exe”。 同意PsTools的EULA后,PsTools应该打开一个新的cmd.exe shell窗口,以LocalSystem运行。
是否有一种方法可以避免使用psexec.exe,如博客文章所述? 也许可以使用CryptoPy或PyCrypto?
指定状态下无法使用该密钥
的错误,并且需要使用LocalSystem来运行它。即使您以管理员身份运行cmd.exe,仍会收到该错误。 在这里,您需要了解一些关于Windows的知识,作为Windows n00b,我不知道:LocalSystem帐户与管理员特权不同。 为了使用LocalSystem帐户运行cmd.exe,您需要安装一个名为PsTools的Microsoft软件包。 在PsTools内部,有一个称为PsExec的程序,它有点像Un * x上的sudo。 只需下载上面Microsoft TechNet页面底部链接的zip文件并将其解压缩到可以找到它的位置即可。
要使用PsExec,请以管理员身份打开cmd.exe(在屏幕左下角打开开始菜单,将cmd.exe键入搜索框,然后按Ctrl + Shift + Enter以管理员身份运行)。 在打开的用户帐户控制对话框中单击“继续”。 在打开的命令shell中,导航到您解压缩PsTools的目录。 现在运行“psexec.exe / s / i cmd.exe”。 同意PsTools的EULA后,PsTools应该打开一个新的cmd.exe shell窗口,以LocalSystem运行。
是否有一种方法可以避免使用psexec.exe,如博客文章所述? 也许可以使用CryptoPy或PyCrypto?
供参考,我检索到的加密密码是来自Windows Vista配置文件xml文件中的keyMaterial密钥。
我使用的代码:
import win32crypt
mykey='01000000D08C9DDF.....' # 308 characters long
binout = []
for i in range(len(mykey)):
if i % 2 == 0:
binout.append(chr(int(mykey[i:i+2],16)))
pwdHash=''.join(binout)
output = win32crypt.CryptUnprotectData(pwdHash,None,None,None,0)
print "hex:", "".join(["%02X" % ord(char) for char in output[1]])
print "ascii:", output[1]
提前致谢。