提问人:user19736286 提问时间:10/19/2022 最后编辑:user19736286 更新时间:10/19/2022 访问量:598
使用 Python 在 Windows DPAPI 中解密安全字符串
Decrypt Secure Strings in Windows DPAPI using Python
问:
给定一个 Windows DPAPI 文件,其值存储为安全字符串 如何在 Python 中解密这些值?安全字符串是使用 PowerShell 创建的,如下所示。
$global:Credentials.AuthToken = Read-Host -AsSecureString -Prompt "Auth-Token:"
这些值使用 DPAPI 存储在 Windows 10 或类似计算机上。
答:
1赞
user19736286
10/19/2022
#1
使用 Python,从 DPAPI 文件中提取安全字符串,并将其提供给下面的函数。安全字符串将存储为 base64 编码值。
注意:读取 PowerShell 创建的 DPAPI 文件时,请确保使用“utf-16-le”编码。
import codecs
import win32crypt
import base64
def decrypt(b64string):
b64decodedstring = base64.b64decode(b64string)
clear = win32crypt.CryptUnprotectData(b64decodedstring, None, None, None, 0)
return clear[1].decode("utf-16-le")
对于 Windows 中的安全字符串,该值以 base64 编码的十六进制形式存储在磁盘上。因此,像这样提取明文值,通过函数运行它两次,并在两者之间将十六进制值编码回 base64。
decrypt(codecs.encode(codecs.decode(decrypt(ValueExtractedFromDPAPIGoesHere), 'hex'), 'base64').decode())
注意:您需要以您尝试从其 DPAPI 访问安全字符串的用户身份运行 Python。
评论