Practice Lab Exercise: How Secure is My Password?
Objective:
To understand the importance of strong passwords and evaluate the strength of different
passwords using online tools and basic password-cracking logic.
Learning Outcomes
By the end of this lab, students should be able to:
- Evaluate password strength using online tools.
- Understand the importance of password complexity.
- Identify common weak password patterns.
- Apply best practices in creating secure passwords.
Tools Required:
- Internet access
- Web browser
- https://howsecureismypassword.net/
- Optional: Python (for basic brute-force simulation demo)
Part A: Password Strength Testing
Steps:
1. Open your browser and go to: https://howsecureismypassword.net/
2. Try entering the following sample passwords (DO NOT enter your real password):
- 123456
- iloveyou
- password@123
- MyNameIsJohn2024
- M!n$d#Y@2025
3. Observe how long it would take a computer to crack each password.
4. Note down the results in the following table:
Password Estimated Time to Crack Your Observation
123456 Instantly Easy to crack
Iloveyou Instantly
one of the top 3 most used
password
password@123 though it shows 200 years, it is incorrect as
one of the top 10 most frequently seen
200 years
passwords its quite easy to crack in reality
MyNameIsJohn2024 37 B years
it's a fair point to say, it takes long to crack this code but if i
have the prior information on the owner of password i would
say it takes an hour at max to crack this password
M!n$d#Y@2025 i would say this is quite accurate as it's not the human
34 K years cracking but the computer and even the prior info on the
owner wouldn't help the case any
Part B: Identify Weaknesses
Discuss:
1. What patterns make passwords weak?
2. Which password was the strongest and why?
3. How can we improve a password’s security?
Part C: Optional – Brute Force Simulation in Python
Code Sample:
import itertools
import string
import time
# Define target password
target = "ab"
# Define character set (lowercase only for demo)
charset = string.ascii_lowercase
start = time.time()
attempts = 0
for length in range(1, 5): # Try lengths from 1 to 4
for guess in itertools.product(charset, repeat=length):
attempts += 1
if ''.join(guess) == target:
print(f"Password found: {''.join(guess)} in {attempts} attempts")
end = time.time()
print(f"Time taken: {round(end - start, 2)} seconds")
break
else:
continue
break
Discussion Questions:
- How does password length affect cracking time?
- What if we increase the character set to include numbers and symbols?