有没有人获得DPAPI和漫游资料来工作?
根据Microsoft的说法,DPAPI应该能够在一台计算机上加密数据,然后在另一台计算机上进行解密:
请参阅:https://support.microsoft.com/en-us/topic/bf374083-626f-3446-2a9d-3f6077723a60#bkmk_6
When I am logged into a域控制器和加密文件,我希望能够在同一用户上登录的另一台计算机上注销,传输和解密。
但是,我得到了这个错误:
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()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论