A small, checkable model
A useful search plan states its assumptions. In this invented example there are three capitalization choices, four years and two endings. Their Cartesian product contains 3 × 4 × 2 = 24 combinations. This lab generates those combinations; it does not decrypt a wallet.
Run the experiment
This is an original KeychainX exercise using invented data. It runs locally with Python 3 and makes no network requests. Download the script, read it, and run it in a folder used for practice.
python search_space.py"""Synthetic search-space arithmetic; does not test wallet passwords."""
from itertools import product
prefixes = ("Atlas", "atlas", "ATLAS")
years = ("2014", "2015", "2016", "2017")
endings = ("", "!")
candidates = [a+b+c for a,b,c in product(prefixes, years, endings)]
print("Combinations:", len(candidates))
print("Unique candidates:", len(set(candidates)))
print("First:", candidates[0])
print("Last:", candidates[-1])
assert len(candidates) == len(set(candidates)) == 24
Expected observations
Both counts should be 24. The first candidate is Atlas2014 and the last is ATLAS2017!. Add a repeated prefix to the script and compare the raw count with the unique count. Duplicate guesses take time without exploring a new possibility.
Time is conditional
If a particular wallet verifier actually tests r candidates per second, a full pass through N unique candidates takes approximately N ÷ r seconds, plus overhead. A hypothetical 24 candidates at 2 per second means 12 seconds; it is an arithmetic example, not a measured benchmark. A different wallet format, hardware setup or key-derivation cost can change the rate.
Write down what a failed pass means
A completed search rules out the tested candidates only if the wallet identification and verification process were correct. It does not rule out a different spelling, omitted token or forgotten passphrase. Keep an experiment log with the candidate rule, unique count, tool version and stopping condition. Never interpret candidate count as a percentage chance of recovery.