有没有人让 Dpapi 和漫游配置文件工作?

Has anyone gotten Dpapi and Roaming Profiles to work?

提问人:Erik Aronesty 提问时间:5/21/2022 更新时间:5/21/2022 访问量:157

问:

根据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()
python windows dpapi 漫游配置文件

评论


答: 暂无答案