Advertisement
anonymous1184

Advent of Code 2020.2 AHK

Dec 2nd, 2020
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. passwordCount := 1024
  2. passwordMinLength := 8
  3. passwordMaxLength := 20
  4. policyType := "L" ; A=All, N=Numbers, L=Lower, U=Upper
  5.  
  6. ;=========================
  7.  
  8. totalPassed := 0
  9. policies := genPolicies(policyType)
  10. policiesCount := policies.Count()
  11. passwords := genPasswords(passwordCount, passwordMinLength, passwordMaxLength)
  12.  
  13. for idx,pwd in passwords
  14. {
  15.     ; Get random policy
  16.     Random, rnd, 1, % policiesCount
  17.  
  18.     chr := policies[rnd].chr
  19.     min := policies[rnd].min
  20.     max := policies[rnd].max
  21.  
  22.     cnt := pos := 0
  23.     while (pos := InStr(pwd, chr, true, ++pos))
  24.     {
  25.         cnt++
  26.     }
  27.  
  28.     res := "FAIL"
  29.     if (cnt >= min && cnt <= max)
  30.     {
  31.         res := "PASS"
  32.         totalPassed++
  33.     }
  34.  
  35.     ; OutputDebug, % "`n------------------------"
  36.     ;     . "`n" res
  37.     ;     . "`n" "Found: " cnt
  38.     ;     . "`n" "Policy: " min "-" max ": " chr
  39.     ;     . "`n" "Password: " pwd
  40. }
  41. OutputDebug, % "Valid passwords: " totalPassed " (out of " passwordCount ")"
  42.  
  43. genPasswords(qty := 1024, minLen := 8, maxLen := 20)
  44. {
  45.     passwords := []
  46.     loop, % qty
  47.     {
  48.         pwd := ""
  49.         Random, len, % minLen, % maxLen
  50.         loop, % len
  51.         {
  52.             Random, chr, 33, 126
  53.             pwd .= Chr(chr)
  54.         }
  55.         passwords.Push(pwd)
  56.     }
  57.     return passwords
  58. }
  59.  
  60. genPolicies(type := "A")
  61. {
  62.     policies := []
  63.     if (type = "A")
  64.     {
  65.         Loop, 94
  66.         {
  67.             Random, min, 1, 3
  68.             Random, max, % min + 1, 9
  69.             policies.Push({"chr" : Chr(32 + A_Index), "min" : min, "max" : max })
  70.         }
  71.     }
  72.     else if (type = "N")
  73.     {
  74.         loop, 10
  75.         {
  76.             Random, min, 1, 3
  77.             Random, max, % min + 1, 9
  78.             policies.Push({"chr" : A_Index-1, "min" : min, "max" : max })
  79.         }
  80.     }
  81.     else if (type = "L")
  82.     {
  83.         loop, 26
  84.         {
  85.             Random, min, 1, 3
  86.             Random, max, % min + 1, 9
  87.             policies.Push({"chr" : Chr(96 + A_Index), "min" : min, "max" : max })
  88.         }
  89.     }
  90.     else if (type = "U")
  91.     {
  92.         loop, 26
  93.         {
  94.             Random, min, 1, 3
  95.             Random, max, % min + 1, 9
  96.             policies.Push({"chr" : Chr(64 + A_Index), "min" : min, "max" : max })
  97.         }
  98.     }
  99.     return policies
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement