PasswortGen

  • Hallo Leute,
    ich stelle einfachmal mein kleines Programm vor es heist PasswortGen es generiert zufällige Passwörter und speichert sie ab
    (Desktop "\PasswortGen.txt")
    man kann es zum Beispiel für irgend welche E-Mail Accounts nehmen oder so. Naja schaut es euch an und bewertet bitte aber Achtung ! ich bin noch ein Noob
    :rolleyes:


    autoit.de/wcf/attachment/13336/

    autoit.de/wcf/attachment/13337/

  • Hallo SionS,
    für dein erstes Script nicht schlecht.
    Sieht durchdacht aus und ist aufgeräumt.

    Nur 3 Dinge.
    1. Die Funktion NurBuchstaben() ist leer (ergo unnötig ;) )
    2. Wenn Du AdlibRegister verwendest, dann solltest Du immer sicherstellen, dass die aufgerufene Funktion auch fertig ist,
    bevor sie ein zweites mal aufgerufen wird. Zu diesem Zweck setzte man üblicherweise ein AdlibUnRegister an den Anfang der Funktion und startet diese nach Ende der Funktion wieder.
    3. Die Formulierung Deines Textes ist etwas unglücklich und enthält einen Schreibfehler --> 'enthällt' --> enthält ;)

    btw.: Ich denke dass Du bei dem Script auch ohne AdlibRegister ausgekommen wärst...
    Beispiel:

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=PngTexturen22\SionSLoGo.ico
    #AutoIt3Wrapper_Res_Comment=By SionS
    #AutoIt3Wrapper_Res_Description=Kennwort Gennerator
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("SionS PasswortGen", 318, 154, 548, 312)
    GUISetIcon("C:\Users\Tobias\Desktop\PngTexturen22\SionSLoGo.ico")
    GUISetBkColor(0x000000)
    $Label1 = GUICtrlCreateLabel("Drücken Sie auf GenStart.", 15, 15, 301, 23)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Button1 = GUICtrlCreateButton("GenStart", 15, 105, 76, 31, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Button2 = GUICtrlCreateButton("GenStop", 120, 105, 76, 31, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Button3 = GUICtrlCreateButton("Copy and Save", 225, 105, 76, 31, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")

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

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    KeyGen()

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

    Case $Button2
    KeyGenStop()

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

    Case $Button3
    Copy()
    Saven()

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

    EndSwitch

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

    If BitAND(GUICtrlGetState($Button1), $GUI_DISABLE) Then CreateKey() ; anstelle von AdlibRegister. Wenn es zu schnell geht einfach in der Funktion einen Sleep(XXX) setzen.
    WEnd

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

    Func Saven()
    $var = InputBox("PasswortGen", "Geben Sie hier ihren Verwendungszweck ihres generierten Passwortes ein, wenn sie keinen haben geben sie einfach nichts ein.")
    $CurrentKey = GUICtrlRead($Label1)
    FileWrite(@DesktopDir & "\PasswortGen.txt", " Ihr Passwort hat den Zweck für (" & $var & ") und lautet: " & $CurrentKey & " |")
    MsgBox(64, "Info", "Eine Infodatei wurde auf ihrem Desktop erstellt die das Passwort und den von ihnen angegebenen Zweck enthällt.")
    EndFunc ;==>Saven

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

    Func Copy()
    $CopyKey = GUICtrlRead($Label1)
    ClipPut($CopyKey)
    EndFunc ;==>Copy

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

    Func KeyGenStop()
    GUICtrlSetState($Button1, $GUI_ENABLE); gen start
    GUICtrlSetState($Button2, $GUI_DISABLE); gen stop
    EndFunc ;==>KeyGenStop

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

    Func KeyGen()
    GUICtrlSetState($Button1, $GUI_DISABLE); gen start
    GUICtrlSetState($Button2, $GUI_ENABLE); gen stop
    EndFunc ;==>KeyGen

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

    ;;;;;;;;;;;;;;;;;;;;;;;DANKE AN autoBert;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    Func CreateKey()
    $iAbruch = Random(5, 19, 1)
    $sKey = ""
    For $iSpalte = 0 To 19
    $iZahlOderBuchstabe = Random(0, 3, 1)
    If Not $iZahlOderBuchstabe Then
    $sKey &= Random(0, 9, 1)
    Else
    $iKlein = Random(0, 3, 1)
    If $iKlein Then
    $sKey &= Chr(Random(97, 122, 1))
    Else
    $sKey &= Chr(Random(65, 90, 1))
    EndIf
    EndIf
    If $iSpalte = $iAbruch Then ExitLoop
    Next
    GUICtrlSetData($Label1, $sKey)
    EndFunc ;==>CreateKey
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Danke für dein Feedback
    ich versuche es mal mit If und Then :)

    Zu NurBuchstaben das war eine Idee von mir aber ich wollte sie dann doch nicht umsetzten und habe den Gedanken fallen gelassen aber vergessen es aus dem Script zu löschen ^^

    und den Rechtschreibfehler berichtige ich noch :)

    Ich nix gut deutsch  :D

  • 2. Wenn Du AdlibRegister verwendest, dann solltest Du immer sicherstellen, dass die aufgerufene Funktion auch fertig ist,
    bevor sie ein zweites mal aufgerufen wird. Zu diesem Zweck setzte man üblicherweise ein AdlibUnRegister an den Anfang der Funktion und startet diese nach Ende der Funktion wieder.


    das stimmt so nicht, der nächste Durchlauf der Funktion wird frühestens aufgerufen wenn die 1. beendet ist, ausserdem ist die Zeit (250 ms = Standard) ausreichend die Funktion im worstcase (alle 20 Schleifendurchgänge) zu beenden. Das 2. kannst du hiermit testen:

    Spoiler anzeigen
    [autoit]

    Func CreateKey()
    $dt = TimerInit()
    $iAbruch = Random(5, 19, 1)
    $sKey = ""
    For $iSpalte = 0 To 19
    $iZahlOderBuchstabe = Random(0, 3, 1)
    If not $iZahlOderBuchstabe Then
    $sKey &= Random(0, 9, 1)
    Else
    $iKlein = Random(0, 3, 1)
    If $iKlein Then
    $sKey &= Chr(Random(97, 122, 1))
    Else
    $sKey &= Chr(Random(65, 90, 1))
    EndIf
    EndIf
    ; If $iSpalte = $iAbruch Then ExitLoop
    Next
    GUICtrlSetData($Label1,$sKey)
    ConsoleWrite(TimerDiff($dt) & @CRLF)
    EndFunc

    [/autoit]

    @SionS: was mich an deinem Passwortgenerator stört ist dass das Passwort in einer Textdatei auf dem Desktop angelegt werden kann, dies sollte man aus Sicherheitsgründen nie tun.

    mfg autoBert

  • autoBert Das mit der .txt Datei ist so gedacht ich habe so zum bsp. mein Skype PW gemacht und in der .txt steht alles drin ABER ich lasse die Datei nicht auf dem Desktop ich habe sie mir auf meinen Usb Stick gezogen. Die Datei hat nur des Sinn das man sein PW und den zweck nicht vergisst.

  • Hallo Sions,

    solltest Du die Absicht habe Dein Tool weiter zu geben so bau doch eine MSG-Box ein die nach dem PW generieren darauf hinweist die TXT in einen sicheren Ort zu verschieben.
    Die Idee sie erst mal auf dem Desktop zu lassen finde ich gut, so kann jeder PC-Nutzer sie hinschieben wo er sie auch wiederfindet, ohne lange zu suchen wenn Du einen Pfad vorgeben würdest.
    Willst Du es nur für Dich nutzen ist es Jacke wie Hose ;)

    LG Jokel

    achja, ich finde Dein Tool toll :thumbup: , da ich mich auch jetzt an proggen rannwagen möchte. Brauche manchmal als FISI das ein oder andere Tool und will die auf meine Bedürfnisse zuschneiden :D