This is my solution to the McAfee ATR Hax 2021 forensics challenge Password in a Haystack. You are provided with a username (steve557), a text file containing thousands of passwords, and a set of password rules. Only one of the thousands of passwords will meet the rules.
The rules are as follows:
- All passwords must be 6-12 printable characters in length
- Each password must contain at least 3 unique digits
- Passwords must not contain 3 consecutive characters of the username, nor its reverse
Important thing to note – digits means numbers, not characters!
I solved this using Python; as always I am MrN00b0t so there may be a neater answer!
rawfile = open("output.txt", "r") rawpass = rawfile.readlines() consec = [] user = "steve557" revuser = "755evets" i = 0 #create list of username segments of three consecutive characters while i < 6: consec.append(user[i:i+3]) consec.append(revuser[i:i+3]) i+=1 for rawpassword in rawpass: password = rawpassword.strip().lower() digitcount = 0 #count the number of unique digits for elem in set(password): if elem in "0123456789": digitcount += 1 #check three of the password logic statements if (5 < len(password) < 13) and password.isprintable() and (digitcount > 2): j = 0 usernotinpass = True #where the first three checks are passed, perform the final check while j < len(consec): if consec[j] in password: usernotinpass = False j += 1 #only the correct password can reach this point with usernotinpass = True if usernotinpass: print("ATR[" + password + "]")
When run, this spits out the flag ATR[1-r-d4-n33dl]