Bobek's PW Tresor

  • Moin,

    hab für's Zuhause ein kleines Tool programmiert um meine "unwichtigen" Passwörter zu speichern.
    Ich weiß das AutoIT sich da nicht so gut dafür eignet aber zumindest wird das PW nicht im Script zu finden sein und in der INI Datei wird auch alles verschlüsselt.
    Das Master "PW" wird mit SHA1 verschlüsselt. Die Passwörter selbst mit AES256Bit.Über mein Script Chaos bin ich informiert.
    Schon mal danke für Feedback ob gut oder böse. :rolleyes:

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

    #include <GUIConstantsEx.au3>
    #include <Crypt.au3>
    #include <Array.au3>
    #include <ListboxConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>

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

    Opt("GUIOnEventMode",1)
    ;VARIABLEN
    Global $data = @ScriptDir&"\Daten.pwd"
    Global $config = IniRead($data,"Config","1","-1")
    Global $pwwrong = 0
    ;GUI'S
    $sForm1 = GUICreate("Master Passwort erstellen:", 260, 90, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
    $sInput1 = GUICtrlCreateInput("", 8, 8, 244, 21,$ES_PASSWORD)
    GUICtrlSendMsg(-1, 0x1501, 0, "Master Passwort")
    $sInput2 = GUICtrlCreateInput("", 8, 32, 244, 21,$ES_PASSWORD)
    GUICtrlSendMsg(-1, 0x1501, 0, "Wiederholen")
    $sButton1 = GUICtrlCreateButton("PW Erstellen", 8, 56, 244, 25)
    GUICtrlSetOnEvent($sButton1,"_MasterKey")
    GUISetState(@SW_HIDE,$sForm1)
    ;-----------------------------
    $Form1 = GUICreate("Bobek's Passwort Tresor", 393, 220, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
    $List1 = GUICtrlCreateList("", 8, 8, 185, 211,$LBS_SORT )
    $Button1 = GUICtrlCreateButton("Zeige Benutzername und PW", 208, 45,180, 25)
    GUICtrlSetOnEvent($Button1,"_restore")
    $Input1 = GUICtrlCreateInput("", 208, 112, 179, 21)
    GUICtrlSendMsg(-1, 0x1501, 0, "Titel")
    $Input2 = GUICtrlCreateInput("", 208, 144, 179, 21)
    GUICtrlSendMsg(-1, 0x1501, 0, "Benutzername")
    $Input3 = GUICtrlCreateInput("", 208, 165, 179, 21)
    GUICtrlSendMsg(-1, 0x1501, 0, "Passwort")
    $Button2 = GUICtrlCreateButton("Verschlüsseln und Erzeugen", 208, 190, 179, 25)
    GUICtrlSetOnEvent($Button2,"_save")
    GUISetState(@SW_HIDE,$Form1)

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

    ;Erster Start
    If $config = "-1" Then
    _MasterKeyErzeugen()
    Else
    _PWEingabe()
    EndIf

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

    Func _PWEingabe()
    Global $hMInput = InputBox("Bobek's Passwort Tresor","Bitte Passwort eingeben:","","*")
    If @error Then
    Exit
    EndIf
    $hashMInput = _Crypt_HashData($hMInput,$CALG_SHA1)
    If $config = $hashMInput Then
    _Main()
    Else
    MsgBox(0,"Fehler","Passwort stimmt nicht")
    $pwwrong = $pwwrong + 1
    If $pwwrong = 3 Then
    MsgBox(0,"Fehler","Sie haben das Passwort 3-mal falsch eingegeben.Das Programm wird beendet.")
    Exit
    Else
    _PWEingabe()
    EndIf
    EndIf
    Endfunc

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

    Func _Main()
    GUISetState(@SW_SHOW,$Form1)

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

    Global $read_data = IniReadSectionNames($data)
    For $i = 1 to UBound($read_data) -1
    If $read_data[$i] = "config" Then
    ContinueLoop
    EndIf
    GUICtrlSetData($List1,$read_data[$i])
    Next
    EndFunc

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

    ;Hauptschleife
    While 1
    Sleep(10)
    WEnd

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

    ;Funktionen

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

    Func _MasterKeyErzeugen()
    GUISetState(@SW_SHOW,$sForm1)
    EndFunc

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

    Func _save()
    $titel = GUICtrlRead($Input1)
    $username = GUICtrlRead($Input2)
    $passwort = GUICtrlRead($Input3)
    If $titel = "" Or $username = "" Or $passwort = "" Then
    MsgBox(16,"Fehler","Angaben fehlen")
    Return 0
    EndIf
    $bUserName = _Crypt_EncryptData($username, $hMInput,$CALG_AES_256)
    $bPassWord = _Crypt_EncryptData($passwort, $hMInput,$CALG_AES_256)
    IniWrite($data,$titel,"1",$bUserName)
    IniWrite($data,$titel,"2",$bPassWord)
    GUICtrlSetData($Input1,"")
    GUICtrlSetData($Input2,"")
    GUICtrlSetData($Input3,"")
    GUICtrlSetData($List1,$titel,"")
    EndFunc

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

    Func _restore()
    $listdata = GUICtrlRead($List1)
    If $listdata = "" Then
    Return 0
    EndIf
    $dUsername = _Crypt_DecryptData(IniRead($data,$listdata,"1",""), $hMInput, $CALG_AES_256)
    $dPasswort = _Crypt_DecryptData(IniRead($data,$listdata,"2",""), $hMInput, $CALG_AES_256)
    MsgBox(0,$listdata,"Benutzername: "&BinaryToString($dUsername)&@CRLF&"Passwort: "&BinaryToString($dPasswort))
    EndFunc

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

    Func _MasterKey()
    If GUICtrlRead($sInput1) <> GUICtrlRead($sInput2) Then
    MsgBox(16,"Fehler","Passwörter stimmen nicht überein")
    GUICtrlSetData($sInput1,"")
    GUICtrlSetData($sInput2,"")
    Return 0
    EndIf
    $config = _Crypt_HashData(GUICtrlRead($sInput1),$CALG_SHA1)
    IniWrite($data,"Config","1",$config)
    GUISetState(@SW_HIDE,$sForm1)
    MsgBox(0,"Bobek's PW Tresor","Passwort erfolgreich erstellt.Das Programm muss neugestartet werden")
    Exit
    EndFunc

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

    Func SpecialEvents()
    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    EndFunc

    [/autoit]

    man benötigt natürlich die Crypt.au3 udf.

    Viel Spaß :thumbup:

    :thumbup:

  • Crypt.au3 ist ein Bestandteil der Autoitinstallation also keine externe UDF. Sprich dein Hinweis ist überflüssig ;).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.