使用Python解密Windows无线密码

3
我正在尝试使用Python解密存储在配置文件XML中的Windows无线密码。我发现一篇博客文章,其中提供了一个示例,展示了如何调用Windows CryptUnprotectData 使用Python的win32crypt模块来完成此操作。我的问题是,我遇到了指定状态下无法使用该密钥的错误,并且需要使用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]

提前致谢。

1个回答

1

如果您需要LocalSystem权限,为什么不向系统管理员请求呢?

顺便说一下,不要费心进行复杂的十六进制转二进制。只需执行以下操作:

In [5]: '01000000D08C9DDF'.decode('hex')
Out[5]: '\x01\x00\x00\x00\xd0\x8c\x9d\xdf'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接