Jump to content
Sign in to follow this  
Kovacic

Simple password generator tool for a Help Desk

Recommended Posts

Kovacic

This is a simple incomplete password reset tool, my 3rd script with autoit, so the code is elementary. This is something you can use to customize and make your own. It will generate a password, and give you the nato readout so you can read it to an end user over the phone. Feel free to update and make it better, I no longer require it so enjoy!

post-63131-0-69924100-1407517311_thumb.p

#include <File.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <AD.au3>
#Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AD PAssword Reset Tool", 509, 276, 250, 152)
    $Label1 = GUICtrlCreateLabel("Password Reset Tool", 40, 8, 442, 46)
    GUICtrlSetFont(-1, 28, 400, 0, "Arial")
    GUICtrlSetColor(-1, 0x000000)
    Global $rnd, $result2 = ""
    $Input3 = GUICtrlCreateInput("", 60, 96, 400, 32, $SS_CENTER)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Button1 = GUICtrlCreateButton("Generate Password", 16, 64, 107, 25)
    $Button2 = GUICtrlCreateButton("Set Password", 260, 162, 75, 25)
    $Button3 = GUICtrlCreateButton("Unlock Account", 155, 162, 99, 25)
    $Input1 = GUICtrlCreateInput("", 16, 160, 121, 21)
    $Group1 = GUICtrlCreateGroup("Account status", 8, 188, 489, 81)
    $Label4 = GUICtrlCreateLabel("Username: ", 16, 204, 58, 17)
    $Label5 = GUICtrlCreateLabel("Locked: ", 16, 220, 46, 17)
    $Label6 = GUICtrlCreateLabel("Password Age:", 16, 236, 75, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label7 = GUICtrlCreateLabel("", 26, 133, 436, 24, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
    $z = "rvxs|rdmf|jzlr|izez|lbyl|yjmz|wzet|pyau|qumv|aocr|wwal|qhyh|dlou|ruqj|vgmg|edpg|wsmv|qmnt|kwgr|tduz|jzgq|ywdn|etet|hxvj|ydwp|vvzx|cwcs|fcru|dnin|jwna|pwks|xoak|audd|ppwe|omzq|xwcy|dudn|rwtz|qvtg|jgzi|hxkr|azug|ixla|iikl|ovgk|skpj|kldj|ovwg|psfy|jmck|gkea|bjmq|trfc|tppm|jvae|fgah|scbj|pqtl|gses|gtzz|xtid|snds|xkok|zgcb|iktk|cvil|ynxn|fqqs|qakc|cnsc|jiaz|nryi|brev|olbe|whfs|kpro|lkcg|vvlp|pjlf|igvl|mnyp|shco|nite|exji|drai|gdgd|cylw|hlgr|qfya|dqle|xhgn|jkbl|cghi|xcow|iwui|ltqm|olmx|rujq|ehop|xpgr|zjfg|zebn|iezt|gazx|cgft|tefk|jijz|smhj|zbwr|vxsd|wjmp|sjbk|hyzm|sszr|iqbq|marj|pdsn|derh|sjit|udlh|xwaz|aodg|quab|gxka|exhs|pzdo|bpjf|pizm|xtio|tdiz|txxv|jaat|hcwi|ekrz|zpyy|ppnm|yewo|upzi|zfmw|suii|alvm|zklz|xesg|nyqk|lvih|eppa|mbdk|soju|hnkt|ifsd|wnzk|pndo|ydrj|bzfs|madj|jhcz|ygnw|zrdu|qskm|lbux|qtdt|xjyy|zkfd|yzhd|dwgn|jdun|kteh|geke|warj|qucv|lvqs|jdda|vrfb|qzjj|rvuo|kzfr|jlka|svhy|dctk|lkss|viju|dqpq|dgxw|mcwy|rtxw|ptsj|bebg|kduq|iivb|zygi|hwql|sgia|hvmj|msxx|woxb|vvsc|zplz|brpf|iyyq|vdvp|dxre|mtky|csjv|yfdl|podp|svrn|eovx|nzax|uplb|neiv|yzdk|mtgq|qrzx|kkhl|rxgm|brqr|fqsv|wcpe|acyf|oqeo|utci|susu|ttha|qnnx|utwc|eoih|bema|abjh|ijyx|tihy|gyll|bkae|kett|mbtk|fuyr|fokr|cazl|exro|azla|cyzv|bnfx|mnxi|qlak|jlai|tcor|fcpy|hudz|zosz|tgzl|zqli|rody|xrvj|ntit|keji|xixi|wbmd|lajm|rlps|klqj|woth|fhmk|psxp|npaz|naph|ahfz|pdkb|fnga|tisy|kijq|drqj|fyym|nfej|vaqa|hnrk|lkeh|wbrh|rmie|iuab|lbxz|mvto|qkqo|wfbk|zawj|sfnb|dagk|vxts|pfnn|eatb|ozor|pkje|slxb|fmpv|yqil|owry|ducb|dywa|xguz|ybrj|eoff|lhfp|qwqk|pada|oele|szmo|lvdw|rsjh|ygid|mtrh|zycp|pfoe|icpz|vxkd|rsdm|isrf|nhsh|mbzq|rukh|usrj|cwno|nxph|utro|xghu|ynvw|wswr|vngd|ahpw|uimq|tirj|ysbv|aetj|wwsx|jxcu|fxvw|mszs|pcuo|tvjf|tsef|setx|zrnr|vcmk|pthb|vqpl|tzfa|lqpu|jqbg|flru|jdrb|agfb|qajb|gopo|dfen|vfnp|myvp|fptx|qvbv|qiii|uuaw|khnh|ujnj|mlds|wicf|ihwv|wumi|smhd|pfda|tltj|ixdo|xvor|zuid|hgst|xfqf|yuuy|qesp|ulke|rqoc|yyae|ejbr|lrob|xwrw|fgcc|phmn|jeib|btmn|sxbn|znio|qxhe|trto|tzty|ohqn|qaej|pgdk|oqvy|dnqb|lfmh|guom|pumx|hxnl|jxxm|pipj|hxjw|jlvu|mbql|hvnh|dzii|xpyx|fjtx|gxjd|ixuy|evpb|ogjp|wqxi|bogv|laoo|bslx|axtq|uwca|qzmp|gojb|kctw|nzlj|fuyw|klzo|nvpg|vhfx|vnmj|jrtx|yuin|lwbr|bpsh|txok|gvrp|acfz|tjga|kgew|rmrh|wszy|fulz|otgd|gnyh|fvsk|roox|xixy|nwqu|rdne|rngx|tyjq|gbrj|kgtn|zoys|pten|sptz|oxkh|kbin|uvwr|cgqw|smec|pvoe|hmdw|nkxs|bzzp|dkzu|txzu|ktrm|bbgp|esgh|ocza|mnoy|ejfc|xfwb|rwkz|mrbl|apwe|wmdr|ojgb|pfvi|napt|mwmb|wukl|rfzs|injw|jmpw|pmxe|pncm|smtx|xgee|oqhe|cqry|sipu|vaew|fuzw|ymkc|vvnr|lrip|nbsn|kjdn|nfdd|amcg|cncw|gmiw|juzo"
    $wlist = StringSplit($z, "|", 3)
    GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_AD_OPEN()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _AD_CLOSE()
            Exit
        Case $Button1
            generate()
        Case $Button2
            setpw()
    EndSwitch
WEnd
Func GenSymbol()
    $symnum = Random(1, 7, 1)
    If $symnum = 1 Then Global $symbb = "!"
    If $symnum = 2 Then Global $symbb = "@"
    If $symnum = 3 Then Global $symbb = "$"
    If $symnum = 4 Then Global $symbb = ";"
    If $symnum = 5 Then Global $symbb = "?"
    If $symnum = 6 Then Global $symbb = "%"
    If $symnum = 7 Then Global $symbb = "#"
EndFunc   ;==>GenSymbol
Func generate()
    Global $rnd = Random(1000, 9999, 1)
    Global $result = ""
    GUICtrlSetData($Input3, $result)
    Global $line = $wlist[Random(1, UBound($wlist))]
    GenSymbol()
    nato1()
    $line = $symbb & $line & $rnd
    GUICtrlSetData($Input3, $line)
    $rnd2 = StringSplit($rnd, "")
EndFunc   ;==>generate
Func nato1()
    $myword = $line
    symbol($symbb)
    $array = StringSplit($myword, "", 1)
    For $i = 1 To UBound($array) - 1
        $z = nato2($array[$i])
        $result = $result & $nato & " "
    Next
    $nums = StringSplit($rnd, "", 1)
    For $i = 1 To UBound($nums) - 1
        $y = digit($nums[$i])
        $result2 = $result2 & $numb & " "
    Next
    $result = $symb & " " & $result & $result2
    GUICtrlSetData($Label7, $result)
    ;GUICtrlSetData($Label8, "")
    $result = ""
    $result2 = ""
EndFunc   ;==>nato1
Func setpw()
    If Not GUICtrlRead($Input3) Then
        MsgBox(0, "Error", "You must generate a password first.")
    Else
        MsgBox(0, "Complete", "Password has been set. Thank you.")
    EndIf
EndFunc   ;==>setpw
Func nato2($letter)
    If $letter = "a" Then Global $nato = "Alpha"
    If $letter = "b" Then Global $nato = "Bravo"
    If $letter = "c" Then Global $nato = "Charlie"
    If $letter = "d" Then Global $nato = "Delta"
    If $letter = "e" Then Global $nato = "Echo"
    If $letter = "f" Then Global $nato = "Foxtrot"
    If $letter = "g" Then Global $nato = "Golf"
    If $letter = "h" Then Global $nato = "Hotel"
    If $letter = "i" Then Global $nato = "India"
    If $letter = "j" Then Global $nato = "Juliet"
    If $letter = "k" Then Global $nato = "Kilo"
    If $letter = "l" Then Global $nato = "Lima"
    If $letter = "m" Then Global $nato = "Mike"
    If $letter = "n" Then Global $nato = "November"
    If $letter = "o" Then Global $nato = "Oscar"
    If $letter = "p" Then Global $nato = "Papa"
    If $letter = "q" Then Global $nato = "Quebec"
    If $letter = "r" Then Global $nato = "Romeo"
    If $letter = "s" Then Global $nato = "Sierra"
    If $letter = "t" Then Global $nato = "Tango"
    If $letter = "u" Then Global $nato = "Uniform"
    If $letter = "v" Then Global $nato = "Victor"
    If $letter = "w" Then Global $nato = "Whiskey"
    If $letter = "x" Then Global $nato = "X-ray"
    If $letter = "y" Then Global $nato = "Yankee"
    If $letter = "z" Then Global $nato = "Zulu"
    Return
EndFunc   ;==>nato2
Func symbol($sym)
    If $sym = "!" Then Global $symb = "Exclamation-Mark"
    If $sym = "@" Then Global $symb = "At-Sign"
    If $sym = "$" Then Global $symb = "Dollar-Sign"
    If $sym = ";" Then Global $symb = "Semi-Colon"
    If $sym = "?" Then Global $symb = "Question-Mark"
    If $sym = "%" Then Global $symb = "Percent-Sign"
    If $sym = "#" Then Global $symb = "Pound-Sign"
    Return
EndFunc   ;==>symbol
Func digit($num)
    If $num = "1" Then Global $numb = "One"
    If $num = "2" Then Global $numb = "Two"
    If $num = "3" Then Global $numb = "Three"
    If $num = "4" Then Global $numb = "Four"
    If $num = "5" Then Global $numb = "Five"
    If $num = "6" Then Global $numb = "Six"
    If $num = "7" Then Global $numb = "Seven"
    If $num = "8" Then Global $numb = "Eight"
    If $num = "9" Then Global $numb = "Nine"
    If $num = "0" Then Global $numb = "Zero"
    Return
EndFunc   ;==>digit

Feel free to update and make it better.

Edited by Kovacic
  • Like 1

C0d3 is P0etry( ͡° ͜ʖ ͡°)

Share this post


Link to post
Share on other sites
ViciousXUSMC

Cool, gets a like from me because being former Military I love phonetics :)

But we always just give people a easy PW and set it so they must change at next login.

What I do like is seeing the status (is that working though?) and setting the password/unlocking so I may modify so we can just enter own own password.

Edited by ViciousXUSMC

Share this post


Link to post
Share on other sites
Kovacic

Cool, gets a like from me because being former Military I love phonetics :)

But we always just give people a easy PW and set it so they must change at next login.

What I do like is seeing the status (is that working though?) and setting the password/unlocking so I may modify so we can just enter own own password.

 

I didnt put that in yet. i was going to along with time remaining on password, locked or unlocked, etc.. but I no longer had a need for the tool so I kind of abandoned it. Adding password reset features would be very easy to do using AD.au3. The finished version would have even had built in validation, so you put in a users Employee ID and another piece of data, the tool will validate them. I was going to build it to conform to all standards specified by the Sarbanes–Oxley Act. I just never finished it.


C0d3 is P0etry( ͡° ͜ʖ ͡°)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • water
      By water
      Extensive library to control and manipulate Microsoft Active Directory.

      Threads: Development - General Help & Support - Example Scripts - Wiki
      Previous downloads: 30467
       
      Known Bugs: (last changed: 2018-12-03)
      None
        Things to come: (last changed: 2018-12-03)
      None
      BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort
    • tweakster2010
      By tweakster2010
      Hello All,
      It has been a long time since I posted, role changes etc involving work and I finally am back to modifying a program I write in AutoIt that has AD integration. I am at a point where we are modifying our structure where I am validating users access via what Distribution List they belong to in our AD OU's. What I have run into is the OU is a sub OU of a sub OU now. Meaning: CN=team, OU=DL, OU=Groups, DC=business.com(working), is now CN=Team, OU=SubDL, OU=DL, OU=Groups, DC=business.com (Not working).  Just curious if the AD functionality should be able to read it or maybe I am missing something?
       
      ElseIf _AD_IsMemberOf("CN=Team,OU=Distribution Lists,OU=Groups,DC=business,DC=com", $sFQDN_User) Then #works for primary Distro ElseIf _AD_IsMemberOf("CN=Team,OU=SubDL,OU=Distribution Lists,OU=Groups,DC=business,DC=com", $sFQDN_User) Then #fails for subOU of DL How I am accessing AD to get the information:
      _AD_Open() Global $aUser = _AD_GetObjectsInOU("", "(&(objectCategory=person)(objectClass=user)(samaccountname=" & @UserName & "))", 2, "ADsPath,Displayname,distinguishedName") Global $sDisplayName0 = $aUser[1][1] ; Displayname ;MsgBox(0,"", $sDisplayName0) If StringLeft($sDisplayName0, 2) = "9-" Then $Displaynamestring = StringTrimLeft($sDisplayName0, 2) $Displaynamestring1 = StringTrimRight($Displaynamestring, 6) The error code generated is a 1 with a 0 extended. I assume it is because it cannot find the SubOU.
       
      Thanks for any assistance.
    • antmar904
      By antmar904
      I'm trying to read all cells used in column "C" in excel to an array but not sure how.
       
      Local $NameArray = _Excel_RangeRead($oWorkbook, $oWorkbook.Activesheet, $oWorkbook.Range["C"].End)  
    • Blois
      By Blois
      Hey Guys,
      Good?
      I'm ned help to consult in other domain. My three domain contains any domains.
      How do I get this query done?
       
      Tks for the Help!
       
×