Verwenden von DPAPI mit Python?

Gibt es eine Möglichkeit, das DPAPI (Data Protection Application Programming Interface) unter Windows XP mit Python zu verwenden?

Ich würde es vorziehen, ein bestehendes Modul zu benutzen, wenn es einen gibt, der es tun kann. Leider habe ich bei Google oder Stack Overflow keinen Weg gefunden.

EDIT: Ich habe den Beispielcode mit "dF" gezeigt und es in eine eigenständige Bibliothek gezwickt, die einfach auf hohem Niveau benutzt werden kann, um mit DPAPI im User-Modus zu kryptieren und zu entschlüsseln. Rufen Sie einfach dpapi.cryptData (text_to_encrypt) an, der einen verschlüsselten String zurückgibt, oder die umgekehrte decryptData (encrypted_data_string), die den Klartext zurückgibt. Hier ist die Bibliothek:

# DPAPI access library # This file uses code originally created by Crusher Joe: # http://article.gmane.org/gmane.comp.python.ctypes/420 # from ctypes import * from ctypes.wintypes import DWORD LocalFree = windll.kernel32.LocalFree memcpy = cdll.msvcrt.memcpy CryptProtectData = windll.crypt32.CryptProtectData CryptUnprotectData = windll.crypt32.CryptUnprotectData CRYPTPROTECT_UI_FORBIDDEN = 0x01 extraEntropy = "cl;ad13 \0al;323kjd #(adl;k$#ajsd" class DATA_BLOB(Structure): _fields_ = [("cbData", DWORD), ("pbData", POINTER(c_char))] def getData(blobOut): cbData = int(blobOut.cbData) pbData = blobOut.pbData buffer = c_buffer(cbData) memcpy(buffer, pbData, cbData) LocalFree(pbData); return buffer.raw def Win32CryptProtectData(plainText, entropy): bufferIn = c_buffer(plainText, len(plainText)) blobIn = DATA_BLOB(len(plainText), bufferIn) bufferEntropy = c_buffer(entropy, len(entropy)) blobEntropy = DATA_BLOB(len(entropy), bufferEntropy) blobOut = DATA_BLOB() if CryptProtectData(byref(blobIn), u"python_data", byref(blobEntropy), None, None, CRYPTPROTECT_UI_FORBIDDEN, byref(blobOut)): return getData(blobOut) else: return "" def Win32CryptUnprotectData(cipherText, entropy): bufferIn = c_buffer(cipherText, len(cipherText)) blobIn = DATA_BLOB(len(cipherText), bufferIn) bufferEntropy = c_buffer(entropy, len(entropy)) blobEntropy = DATA_BLOB(len(entropy), bufferEntropy) blobOut = DATA_BLOB() if CryptUnprotectData(byref(blobIn), None, byref(blobEntropy), None, None, CRYPTPROTECT_UI_FORBIDDEN, byref(blobOut)): return getData(blobOut) else: return "" def cryptData(text): return Win32CryptProtectData(text, extraEntropy) def decryptData(cipher_text): return Win32CryptUnprotectData(cipher_text, extraEntropy) 

3 Solutions collect form web for “Verwenden von DPAPI mit Python?”

Ich habe mit CryptProtectData und CryptUnprotectData durch Ctypes, mit dem Code von

http://article.gmane.org/gmane.comp.python.ctypes/420

Und es hat gut geklappt

Auch pywin32 implementiert CryptProtectData und CryptUnprotectData im win32crypt-Modul.

Der einfachste Weg wäre, Iron Python zu benutzen.

  • Entfernen oder Deaktivieren eines resizable Tkinter-Fenster maximieren Schaltfläche unter Windows
  • Finde einen Pfad in Windows relativ zum anderen
  • Python Win32print Druckerstatus Verwirrung
  • ImportError: Kein Modul namens termios mit django_mysql unter Windows
  • Xlwings mit python 3.5 unter Windows
  • Öffnen eines Python-Threads in einem neuen Konsolenfenster
  • Machen Sie cffi verwenden MinGW unter Python 3.5 unter Windows
  • Verwenden von Unterprozeß zum Ausführen von Python-Skript unter Windows
  • Gibt es eine Möglichkeit, ein Fenster in Windows 7 über Python 3 zu minimieren?
  • Windows Tensorflow mit Python nicht in der Lage, mnist Daten aufgrund von Berechtigungen zu lesen
  • Pip install - PermissionError: [Errno 13] Berechtigung verweigert
  • Python ist die beste Programmiersprache der Welt.