Microsoft Data Protection API (DPAPI)

  • Hallo zusammen,

    über die Forensuche habe ich nichts finden können und auch bei autoitscript.com bin ich nicht fündig geworden.

    Ich suche nach einer Möglichkeit die Microsoft Data Protection API in AutoIt nutzen zu können um Kennwörter relativ sicher in der Registrierdatenbank ablegen zu können. Momentan verwende ich _StringEncrypt(...), was ja wohl nicht der Weisheit letzter Schluss ist.

    Hat jemand eine Ahnung, ob die DPAPI überhaupt in AutoIt nutzbar gemacht werden kann?

    Infos gibt es hier: http://msdn.microsoft.com/en-us/library/ms229741.aspx
    und hier: http://www.devtrain.de/news.aspx?artnr=930

    Viele Grüße und vielen Dank für jeden Hinweis.
    Christian

  • Hi,

    ist das nicht nur für .Net? Steht irgendwo ein Beispiel in Vb?

    Mega

    Diese Klasse ist neu in .NET Framework, Version 2.0.

    Spoiler anzeigen


    Visual Basic Codebeispiel von http://msdn.microsoft.com/de-de/library/…der(VS.80).aspx

  • Die Funktionen selbst gibt es aber auch für WinAPI :)
    http://msdn.microsoft.com/en-us/library/aa380261.aspx
    Und ein Anfang für die UDF:

    Spoiler anzeigen
    [autoit]

    Global Const $tagDATA_BLOB = "DWORD cbData; ptr pbData" ; pbData -> Pointer to Byte-Array
    ;~ cbData A DWORD variable that contains the count, in bytes, of data.
    ;~ pbData A pointer to the data buffer.

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $tag_CRYPTPROTECT_PROMPTSTRUCT = "DWORD cbSize; DWORD dwPromptFlags; HWND hwndApp; wchar szPrompt[1025]"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DPAPI_CryptProtectData($pDataIn,$szDataDescr,$pOptionalEntropy,$pPromptStruct,$dwFlags,$pDataOut)
    ; __in DATA_BLOB *pDataIn,
    ; __in LPCWSTR szDataDescr,
    ; __in DATA_BLOB *pOptionalEntropy,
    ; __in PVOID pvReserved,
    ; __in_opt CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
    ; __in DWORD dwFlags,
    ; __out DATA_BLOB *pDataOut
    Local $return = DllCall("Crypt32.dll","dword","CryptProtectData","ptr",$pDataIn,"wstr",$szDataDescr,"ptr",$pOptionalEntropy, _
    "ptr",0,"ptr",$pPromptStruct,"DWORD", $dwFlags, "ptr", $pDataOut)
    If Not IsArray($return) Or $return [0] = 0 Then Return SetError(1,0,0)
    Return $return[0]
    EndFunc

    [/autoit]
  • Hallo progandy,

    vielen Dank für Deine Mühe! Welche Parameter muss ich genau an die UDF übergeben? Kannst Du mir die Funktionsweise genau erklären? Ich hab es nämlich noch nicht wirklich verstanden.

    Vielen Dank und viele Grüße
    Christian