提问人:Erik Aronesty 提问时间:5/21/2022 更新时间:5/21/2022 访问量:157
有没有人让 Dpapi 和漫游配置文件工作?
Has anyone gotten Dpapi and Roaming Profiles to work?
问:
根据Microsoft的说法,DPAPI应该能够在一台机器上加密数据,并在另一台机器上解密数据:
请参见:https://support.microsoft.com/en-us/topic/bf374083-626f-3446-2a9d-3f6077723a60#bkmk_6
当我登录到域控制器并加密文件时,我希望能够在同一用户登录的另一台计算机上注销、传输和解密文件。
但是,我收到此错误:
error: (-2146893813, 'CryptProtectData', 'Key not valid for use in specified state.')
这意味着“漫游”不起作用。我假设我需要设置一些组策略才能使这些凭据正确漫游。
另外,如果有更好的方法可以做到这一点(一些其他 api 来使用登录用户的现有信条),我同意。
这是我用来测试的脚本:
import argparse
import os
import sys
from win32crypt import CryptProtectData, CryptUnprotectData
def dpapi_encrypt(fin, fout):
dat = fin.read()
fout.write(CryptProtectData(dat))
def dpapi_decrypt(fin, fout):
(_descr, dat) = CryptUnprotectData(fin.read())
if dat and dat[-1] == 0:
dat = dat[:-1]
fout.write(dat)
def do_fileop(file, op):
if file == "-":
fin = sys.stdin.buffer
fout = sys.stdout.buffer
op(fin, fout)
else:
with open(file, "rb") as fin:
tmp = file + ".dpapi-enc"
with open(tmp, "wb") as fout:
op(fin, fout)
os.replace(tmp, file)
def encrypt_file(file):
do_fileop(file, dpapi_encrypt)
def decrypt_file(file):
do_fileop(file, dpapi_decrypt)
def main():
parser = argparse.ArgumentParser()
parser.add_argument("file")
parser.add_argument("--encrypt", "-e", action="store_true")
parser.add_argument("--decrypt", "-d", action="store_true")
args = parser.parse_args()
if args.encrypt:
encrypt_file(args.file)
elif args.decrypt:
decrypt_file(args.file)
else:
print("error: specify --encrypt or --decrypt", file=sys.stdout)
if __name__ == "__main__":
main()
答: 暂无答案
评论