bitcoinlabzAN INDEPENDENT KEYCHAINX RESOURCEmail@keychainx.io ↗

Home / Lab 02 · Search planning

Lab 02 · Search planning

Count candidates before starting a search

A 24-candidate Python experiment shows how independent choices multiply and why counts are not recovery probabilities.

By KeychainX · Published 20 September 2026 · See testing limits in the article

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.

Download search_space.py

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.

Sources & further reading