PBKDF2 in autoit

  • Das solltest du nicht in AutoIt machen sondern in einer hochsprache oder in ASM, weil du sonst ewig brauchst.
    http://pastebin.com/yPJvFNbF
    Das ist das Script von der Website. Das sollte eig auch für einen Anfänger möglich sein das zu übersetzen, denn google ist dein Freund.
    wenn du mit einem gewissen Abschnitt hilfe brauchst posts einfach hier und wir werden dir sicher helfen können.
    Ich denke nicht, dass das hier jemand machen möchte, weil es sehr viel Arbeit ist. Unud wenn du es selbst machst lernst du nicht nur AutoIt sonder auch ein bisschen Javascript.

  • So einen Teil hab ich schon kann du mir jetzt helfen mit den | und << >> >>> <<< oeratoren kann ich nicht um gehen und was das ~ oder das ? machen checke ich auch nicht.


    danke das du mir helfen willst ich hoffe du kannst ein bischen weiter machen ... :thumbup:

    Spoiler anzeigen
    [autoit]

    Func stringtowords($s, $padi)
    Dim $z[80], $j = -1, $k = 0, $n = StringLen($s) ; bis zeile 8
    For $i = 0 To 64 Step 1
    $c = 0

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

    If $i < $n Then
    $c = Asc(StringMid($s, $i, $i + 1))
    ElseIf $padi Then
    If $i == $n Then
    $c = $padi > >> 24 & 0xff ;fehler orginal: c = (padi >>> 24) & 0xff;
    ElseIf $i == $n + 1 Then
    $c = $padi > >> 16 & 0xff ;fehler orginal: c = (padi >>> 16) & 0xff;
    ElseIf $i == $n + 2 Then
    $c = $padi > >> 8 & 0xff ;fehler orginal: c = (padi >>> 8) & 0xff;
    ElseIf $i == $n + 3 Then
    $c = $padi & 0xff
    ElseIf $i == $n + 4 Then
    $c = 0x80
    EndIf
    EndIf

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

    If $k == 0 Then
    $j += 1
    $z[$j] = 0
    $k = 32
    EndIf

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

    $k -= 8
    $z[$j] = $z[$j] Or $c < < $k ; fehler orginal: z[j] = z[j] | (c << k);
    Next
    If $padi Then $z[15] = 8 * (64 + $n + 4)
    Return $z
    EndFunc ;==>stringtowords

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

    Func initsha($w, $padbyte) ; Bit operatoren und |brauche ich hilfe
    $pw = ($padbyte < < 24) |($padbyte < < 16) |($padbyte < < 8) | $padbyte;
    For $t = 0 To 16 Step 1
    $w[$t] ^ = $pw;
    $s = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0];
    $a = $s[0]
    $b = $s[1]
    $c = $s[2]
    $d = $s[3]
    $e = $s[4]
    $t = 0;
    For $k = 16 To 80 Step 1
    $t = $w[$k - 3] ^ $w[$k - 8] ^ $w[$k - 14] ^ $w[$k - 16];
    $w[$k] = ($t < <1) |($t > >>31);
    Next
    For $k = 0 To 20 Step 1
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0x5A827999 + (($b & $c) |((~$b) & $d));
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    For $k = 20 To 40 Step 1
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0x6ED9EBA1 + ($b ^ $c ^ $d);
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    For $k = 40 To 60 Step 1
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0x8F1BBCDC + (($b & $c) |($b & $d) |($c & $d));
    $e = $d; d = c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    For $k = 60 To 80 Step 1
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0xCA62C1D6 + ($b ^ $c ^ $d);
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2)
    $b = $a
    $a = $t & 0xffffffff;
    Next
    $s[0] = ($s[0] + $a) & 0xffffffff;
    $s[1] = ($s[1] + $b) & 0xffffffff;
    $s[2] = ($s[2] + $c) & 0xffffffff;
    $s[3] = ($s[3] + $d) & 0xffffffff;
    $s[4] = ($s[4] + $e) & 0xffffffff;
    Return $s;
    Next
    EndFunc ;==>initsha

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

    ; HIER brauch ich ganz viel hilfe
    Func getWpaPskKeyFromPassphrase(pass, salt)
    $hmac_istate = initsha(stringtowords($pass, 0), 0x36);
    $hmac_ostate = initsha(stringtowords(pass, 0), 0x5c);
    Global $hash = '', $i = 0;

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

    While (StringLen($hash) < 64);prepare 20-byte (5-word) output vector */
    Dim $u[5] = [0, 0, 0, 0, 0]; prepare input vector for the first SHA1 update (salt + block number) */
    $i += 1;
    $w = stringtowords($salt, $i);

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

    For ($j = 0 To 2 * 4096 Step 1; /* alternate inner and outer SHA1 operations */
    $s = If ($j & 1) ? hmac_ostate : hmac_istate; HILFE kp : var s = (j & 1) ? hmac_ostate : hmac_istate;
    ;/* inline the SHA1 update operation */
    Dim $a = $s[0], $b = $s[1], $c = $s[2], $d = $s[3], $e = $s[4], $t = 0;
    For ($k = 16 To 80 Step 1)
    $t = $w[$k - 3] ^ $w[$k - 8] ^ $w[$k - 14] ^ $w[$k - 16];
    $w[$k] = ($t < <1) |($t > >>31);
    Next
    For ($k = 0 To 20 Step 1)
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0x5A827999 + (($b & $c) |((~$b) & $d));
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    For ($k = 20 To 40 Step 1)
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0x6ED9EBA1 + ($b ^ $c ^ $d);
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    For ($k = 40 To 60 Step 1)
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0x8F1BBCDC + (($b & $c) |($b & $d) |($c & $d));
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    For ($k = 60 To 80 Step 1)
    $t = (($a < <5) |($a > >>27)) + $e + $w[$k] + 0xCA62C1D6 + ($b ^ $c ^ $d);
    $e = $d;
    $d = $c;
    $c = ($b < <30) |($b > >>2);
    $b = $a;
    $a = $t & 0xffffffff;
    Next
    $w[0] = ($s[0] + $a) & 0xffffffff;
    $w[1] = ($s[1] + $b) & 0xffffffff;
    $w[2] = ($s[2] + $c) & 0xffffffff;
    $w[3] = ($s[3] + $d) & 0xffffffff;
    $w[4] = ($s[4] + $e) & 0xffffffff;

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

    If ($j & 1) Then
    ;/ * XOR the result of each complete HMAC - SHA1 operation into u * /
    $u[0] ^ = $w[0];
    $u[1] ^ = $w[1];
    $u[2] ^ = $w[2];
    $u[3] ^ = $w[3];
    $u[4] ^ = $w[4];
    ElseIf ($j == 0) Then
    ;/ * pad the new 20 - byte input vector For subsequent SHA1 operations * /
    $w[5] = 0x80000000;
    For ($k = 6 To 15 Step 1)
    $w[$k] = 0;
    $w[15] = 8 * (64 + 20);
    Next
    EndIf
    ; / * convert output vector u To hex And append To output string * /
    For $j = 0 To 5 Step 1
    For ($k = 0 To 8 Step 1)
    $t = ($u[$j] > >>(28 - 4 * $k)) & 0x0f;
    $hash += ($t < 10) ? $t : String(Chr(87 + $t));
    Next
    Next
    ;### Tidy Error -> "wend" is closing previous "for" on line 102
    WEnd
    ;### Tidy Error -> "endfunc" is closing previous "while" on line 97
    EndFunc ;==>getWpaPskKeyFromPassphrase

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

    ;### Tidy Error -> func is never closed in your script.

    [/autoit]