VB Script Funktion in AutoIt integrieren

  • Hi @ all
    :thumbup:
    wie kann ich diese VB-Function in AutoIt umsetzen?

    leider bin ich in VB noch ein noob

    Spoiler anzeigen

    function CryptRDPPassword(sPassword: string): string;
    var DataIn: DATA_BLOB;
    DataOut: DATA_BLOB;
    pwDescription: PWideChar;
    PwdHash: string;
    begin
    PwdHash := ”;

    DataOut.cbData := 0;
    DataOut.pbData := nil;

    // RDP uses UniCode
    DataIn.pbData := Pointer(WideString(sPassword));
    DataIn.cbData := Length(sPassword) * SizeOf(WChar);

    // RDP always sets description to psw
    pwDescription := WideString(‘psw’);

    if CryptProtectData(@DataIn,
    pwDescription,
    nil,
    nil,
    nil,
    CRYPTPROTECT_UI_FORBIDDEN, // Never show interface
    @DataOut) then
    begin
    PwdHash := BlobDataToHexStr(DataOut.pbData, DataOut.cbData);
    end;
    Result := PwdHash;

    // Cleanup
    LocalFree(Cardinal(DataOut.pbData));
    LocalFree(Cardinal(DataIn.pbData));

    end;

    es wird die crypt32.dll verwendet

    [edit] die Info kommt von http://www.remkoweijnen.nl/blog/2007/10/1…-are-encrypted/ [/edit]

    lg
    und danke für die Hilfe
    TOM 8|

  • So mein erster Ansatz der leider nicht funktioniert :( :( X(

    Spoiler anzeigen
    [autoit]


    $answer = InputBox("Question", "Passwort ??", "Planet_X2543", "",-1, -1, 0, 0)

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

    $bPassword = _CryptRDPPassword($answer)

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

    MsgBox (0,"",$bPassword)
    Exit

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

    Func _CryptRDPPassword($Password)
    Local $hcrypt32
    Local $arRet
    Local $DataIn = "DATA_BLOB"
    Local $DataOut = "DATA_BLOB"
    Local $bPassword = "string"

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

    $hcrypt32 = DllOpen("crypt32.dll")
    If $hcrypt32 = -1 Then Return 0
    ;// RDP uses UniCode
    $arRet = DllCall($hcrypt32, "wstr", "string")
    $arRet.DataIn.pbData = "Pointer(WideString(sPassword))";
    $arRet.DataIn.cbData = "Length(sPassword) * SizeOf(WChar)";
    ;// RDP always sets description to psw
    $arRet.pwDescription = "WideString(‘psw’)";

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

    If $arRet.CryptProtectData($DataIn, $arRet.pwDescription, "nil", "nil", "nil", "CRYPTPROTECT_UI_FORBIDDEN", $DataOut) Then
    $bPassword = $arRet.BlobDataToHexStr($arRet.DataOut.pbData, $arRet.DataOut.cbData)
    EndIf
    $arRet.LocalFree($arRet.Cardinal($arRet.DataOut.pbData));
    $arRet.LocalFree($arRet.Cardinal($arRet.DataIn.pbData));
    Return $bPassword
    DllClose($hcrypt32)

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

    EndFunc ;==>_CryptRDPPassword

    [/autoit]

    das ganze soll ein ein Passwort in einen Hashwert umschlüsseln.
    dieses hashwertPasswort ist Ident mit dem hashwertPasswort das auch ein RDP.file beinhaltet ist.

    evtl kann mir jetzt jemand helfen ... bitte

    danke
    TOMTOM

  • Das ist Delphi. Ich habe es mal als kleines CMD-Programm geschrieben.

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    $1 = Run("RDPcmd.exe",@ScriptDir,@SW_Show, $STDIN_CHILD + $STDOUT_CHILD)
    Do
    Sleep(10)
    Until ProcessExists($1)
    StdInWrite($1,"passwort" & Chr(10))
    $out = ""
    While 1
    $out &= Stdoutread($1)
    If @error Then ExitLoop
    WEnd
    MsgBox(0,"",$out)
    Exit

    [/autoit]
  • Hi
    richtig das ist Delphi! (hab ich auch mittlerweile rausgefunden) :whistling: :whistling: ;(

    so ich würde gerne den Delphi-code in einem AutoIt Script implementieren (damit nur noch eine EXE habe)

    das ganze gibt es auch als Python-code (evtl. geht das leichter zu implementieren??)


    Spoiler anzeigen
    Code
    import win32crypt
     import binascii
     pwdHash = win32crypt.CryptProtectData(u"MYPASSWORD",u'psw',None,None,None,0)
    print binascii.hexlify(pwdHash)

    danke für die Hilfe