-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathanalyzer.py
More file actions
69 lines (57 loc) · 1.62 KB
/
Copy pathanalyzer.py
File metadata and controls
69 lines (57 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import re
def analyze_password(password, common_passwords):
score = 0
suggestions = []
result = {
"length" : False,
"uppercase" : False,
"lowercase" : False,
"number" : False,
"special" : False,
"common" : False,
"repeat" : False,
}
if len(password) >= 8:
result["length"] = True
score += 20
else:
suggestions.append("Use at least 8 characters.")
if re.search(r"[A-Z]", password):
result["uppercase"] = True
score += 15
else:
suggestions.append("Add uppercase letters.")
if re.search(r"[a-z]", password):
result["lowercase"] = True
score += 15
else:
suggestions.append("Add lowercase letters.")
if re.search(r"[0-9]", password):
result["number"] = True
score += 15
else:
suggestions.append("Add numbers.")
if re.search(r"[!@#$%^&*(),.?\":{}|<>]", password):
result["special"] = True
score += 20
else:
suggestions.append("Add special characters.")
if password.lower() not in common_passwords:
result["common"] = True
score += 10
else:
suggestions.append("Avoid common passwords.")
if not re.search(r"(.)\1{2,}", password):
result["repeat"] = True
score += 5
else:
suggestions.append("Avoid repeated characters.")
if score < 40:
strength = "Weak"
elif score < 70:
strength = "Medium"
elif score < 90:
strength = "Strong"
else:
strength = "Very Strong"
return score, strength, result, suggestions