Passwort-Generator

    • Offizieller Beitrag

    Da wir ja grad das Thema hatten, habe ich das Script gleich noch ausgebaut zu einem voll funktionierenden Passwort-Generator.

    Damit kann man Passwörter mit einer Länge zwischen 3 und 36 Zeichen generieren lassen. Außerdem gibt es 5 verschiedene Passwort-Stärken (siehe Script).

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=PassGen.ico
    #AutoIt3Wrapper_outfile=PassGen.exe
    #AutoIt3Wrapper_Allow_Decompile=n
    #AutoIt3Wrapper_Res_Description=Passwort-Generator
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.2
    #AutoIt3Wrapper_Res_LegalCopyright=Thomas Stephan (oscar at elektronik-kurs dot de)
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include<GuiSlider.au3>
    #include<Misc.au3>
    #include<String.au3>
    #include<ButtonConstants.au3>
    #include<ComboConstants.au3>
    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<SliderConstants.au3>
    #include<StaticConstants.au3>
    Global $title = 'Passwort-Generator' ; Fenstertitel
    If _Singleton($title, 1) = 0 Then ; testen, ob das Programm bereits läuft
    MsgBox(48, $title, 'Das Programm läuft bereits!') ; Benutzer informieren
    Exit ; zweite Instanz beenden
    EndIf
    Opt('TrayMenuMode', 1) ; Tray-Standardmenü ausschalten
    Opt('TrayAutoPause', 0) ; AutoPause ausschalten

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

    Global $key[5] ; Array deklarieren (5 = 0...4)
    $key[0] = '1234567890' ; Level 1 = nur Zahlen
    $key[1] = _StringRepeat($key[0], 4) & 'abcdefghijklmnopqrstuvwxyz' ; Level 2 = Zahlen (4fach um den prozentualen Anteil zu erhöhen) und Buchstaben (nur Kleinschreibung)
    $key[2] = $key[1] & 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ; Level 3 = Zahlen und Buchstaben (gemischte Groß-/Kleinschreibung)
    $key[3] = $key[2] & 'öäüÖÄÜß' ; Level 4 = zusätzlich Umlaute
    $key[4] = $key[3] & '@€µ²³°!§$%&/()=<>|,.-;:_#+*~?\' & Chr(34) & Chr(39) ; Level 5 = zusätzlich alle übrigen Sonderzeichen einer deutschen Tastatur

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

    Global $GUI = GUICreate($title, 640, 180, -1, -1) ; Fenster erstellen
    GUISetBKColor(0xAAAAAA) ; Hintergrundfarbe des Fensters
    GUISetIcon(@SystemDir & '\shell32.dll', -212) ; Icon in der Titelleiste setzen
    Global $TrayShow = TrayCreateItem('Passwort-Generator anzeigen') ; Tray-Menü erstellen
    Global $TrayExit = TrayCreateItem('Beenden') ; Tray-Menü erstellen

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

    GUICtrlCreateGroup('Stärke', 10, 8, 130, 55) ; Gruppe 'Stärke' erstellen
    Global $Combo = GUICtrlCreateCombo ('', 20, 30, 110, 20, $CBS_DROPDOWNLIST) ; Auswahlbox für die Passwort-Stärke
    GUICtrlSetData(-1, '1 = Sehr Leicht|2 = Leicht|3 = Mittel|4 = Hoch|5 = Sehr Hoch', '3 = Mittel') ; Werte der Auswahlbox
    GUICtrlCreateGroup ('', -99, -99, 1, 1) ; Ende der Grupppe

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

    GUICtrlCreateGroup('Passwortlänge', 150, 8, 480, 55) ; Gruppe 'Passwortlänge' erstellen
    Global $Slider = GUICtrlCreateSlider(160, 30, 400, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS)) ; Slider für Passwortlänge
    GUICtrlSetLimit(-1, 36, 3) ; Slider auf Werte zwischen 3 und 36 limitieren
    _GUICtrlSlider_SetTicFreq($Slider, 3) ; alle 3 Stellen ein Strich setzen
    _GUICtrlSlider_SetPageSize($Slider, 3) ; bei Klick vor oder hinter dem aktuellen Wert, um 3 Stellen weiterspringen
    _GUICtrlSlider_SetPos($Slider, 18) ; Slider auf den Wert 18 setzen
    Global $Range = GUICtrlCreateLabel('18', 580, 30, 40, 20, $SS_CENTER) ; Die Anzeige für die Passwortlänge (Startwert=18)
    GUICtrlSetFont(-1, 12, 400, 0, 'Courier New Bold') ; Schriftart und -größe der Anzeige
    GUICtrlSetBKColor(-1, 0x000000) ; Hintergrundfarbe der Anzeige
    GUICtrlSetColor(-1, 0xFFFF00) ; Vordergrundfarbe der Anzeige
    GUICtrlCreateGroup ('', -99, -99, 1, 1) ; Ende der Grupppe

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

    Global $Button = GUICtrlCreateButton('Start', 120, 70, 90, 25, $BS_DEFPUSHBUTTON) ; Startbutton erstellen
    GUICtrlSetFont(-1, 10, 400, 0, 'Arial') ; Schriftart und -größe des Buttons

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

    GUICtrlCreateGroup('Passwort', 10, 102, 620, 65) ; Gruppe 'Passwort' erstellen
    Global $Code = GUICtrlCreateInput('', 20, 120, 600, 40, $ES_READONLY) ; Ausgabefeld für das Passwort
    GUICtrlSetFont(-1, 20, 400, 0, 'Courier New Bold') ; Schriftart und -größe des Ausgabefeldes
    GUICtrlCreateGroup ('', -99, -99, 1, 1) ; Ende der Grupppe

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

    GUICtrlSetState($Code, $GUI_FOCUS) ; den Focus auf das Ausgabefeld, damit man das Passwort einfach per Kontextmenü ('Kopieren') in die Zwischenablage packen kann
    Passwort() ; Funktion aufrufen, damit beim Programmstart bereits ein Passwort angezeigt wird
    GUISetState() ; GUI-Fenster anzeigen

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

    While 1 ; MessageLoop-Schleife
    Switch GUIGetMsg() ; Anhand des eingetretenen GUI-Ereignisses die entsprechenden Befehle ausführen
    Case $Combo ; Benutzer hat die Passwort-Stärke geändert
    Passwort() ; Funktion Passwort() aufrufen
    Case $Slider ; Benutzer hat den Slider bewegt
    GUICtrlSetData($Range, GUICtrlRead($Slider)) ; Sliderwert auslesen und in das Anzeigefeld schreiben
    Passwort() ; Funktion Passwort() aufrufen
    Case $Button ; Benutzer hat auf den 'Start'-Button geklickt
    Passwort() ; Funktion Passwort() aufrufen
    Case $GUI_EVENT_MINIMIZE ; Benutzer hat auf Minimieren geklickt
    Opt('TrayIconHide', 0) ; Tray-Menü anzeigen
    TraySetIcon(@SystemDir & '\shell32.dll', -212) ; Icon für Tray-Menü setzen
    GUISetState(@SW_HIDE, $GUI) ; Fenster verstecken
    While 2 ; Tray-Menü-Schleife
    Switch TrayGetMsg() ; Anhand des eingetretenen Tray-Ereignisses die entsprechenden Befehle ausführen
    Case $TrayShow ; wurde 'Anzeigen' aufgerufen, dann...
    Opt('TrayIconHide', 1) ; Tray-Menü wieder verstecken
    GUISetState(@SW_SHOW, $GUI) ; Fenster anzeigen
    GUISetState(@SW_RESTORE, $GUI) ; und wiederherstellen (minimieren rückgängig machen)
    ExitLoop ; Tray-Menü-Schleife verlassen
    Case $TrayExit ; Benutzer hat 'Beenden' ausgewählt
    Exit ; Programm beenden
    EndSwitch
    WEnd
    Case $GUI_EVENT_CLOSE ; Benutzer hat auf 'X' geklickt oder 'ESC' gedrückt
    Exit ; Programm beenden
    EndSwitch
    Wend

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

    Func Passwort()
    Local $choice = Number(StringLeft(GUICtrlRead($Combo), 1)) ; den 1. Buchstaben von links (Zahl) der Combobox (Passwort-Stärke) auslesen und als $key-Auswahl speichern
    Local $i, $pass = '' ; Passwort = Leerstring
    For $i = 1 To Number(GUICtrlRead($Range)) ; Schleife von 1 bis eingestellter Passwortlänge
    $pass &= StringMid($key[$choice-1], Random(1, StringLen($key[$choice-1]), 1), 1) ; dem Passwort ein zufälliges Zeichen aus dem ausgewählten Stärkestring hinzufügen
    Next ; Schleife fortsetzen
    GUICtrlSetData($Code, $pass) ; das generierte Passwort in das Ausgabefeld schreiben
    GUICtrlSetState($Code, $GUI_FOCUS) ; den Focus auf das Ausgabefeld, damit man das Passwort einfach per Kontextmenü ('Kopieren') in die Zwischenablage packen kann
    EndFunc

    [/autoit]

    Edit ( 29.10.08 :( Script angepasst, sodass es auch mit der aktuellen AutoIt-Version funktioniert.

  • würde das eher so lösen:

    [autoit]


    $pw = ""
    For $i = 1 To 10
    $pw &= Chr (Random(0, 127, 1) )
    Next

    [/autoit]
  • Hallo Oscar,

    bekomme bei dem Script immer Fehlermeldung:

    ---------------------------
    AutoIt Error
    ---------------------------
    Line 32 (File "G:\Autoit Hilfe\Neue Scripte\PasswortGeneratorOscar.au3"):

    $Slider = GUICtrlCreateSlider(160, 30, 400, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS))
    $Slider = GUICtrlCreateSlider(160, 30, 400, 20, BitOR(^ ERROR

    Error: Variable used without being declared.
    ---------------------------
    OK
    ---------------------------


    grüsse

  • Hallo Xeno,

    das habe ich mir schon gedacht.
    Vieleicht koennte man ja mal ein Thread oeffnen, wo neue Includes gepostet werden zum Downloaden,
    oder aber die Links dazu. Nur fuer Includes die nicht von anfang an bei Autoit drin sind, und neu hinzukommen.

    gruesse

  • Vielleicht kann jemand diese Variante gebrauchen:

    Code
    local $KeyVarianten ="01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    local $pw=""
    For $i = 1 To 6
    $pw &= StringMid($KeyVarianten, Random(1, StringLen ( $KeyVarianten ) ),1 )
    Next
    MsgBox(0, "Passwort:", $pw)

    :rock::rock:

  • Threadschänder.. Der Thread ist 5 Jahre alt und das Programm von Oscar (Threadersteller) generiert auf die gleiche Weise mit mehr Einstellungen. Eine andere Einfachvariante gab es auch schon..

    Einmal editiert, zuletzt von TheShadowAE (27. Oktober 2013 um 16:38)