{
  "all_candidates_unique_within_each_run": true,
  "all_targets_present": true,
  "btcrecover_commit": "1457088acf17630eb12a5b53989982ac34e55f2a",
  "btcrecover_origin": "https://github.com/3rdIteration/btcrecover.git",
  "btcrecover_py_sha256": "f18e075b4407ea9c782bf78727d18b04d44f18dc51602395246933d2a07e362e",
  "btcrecover_tree": "5d2e1206ca321db67c0e11d0a240be04273c2e9a",
  "btcrecover_version": "1.13.0-Cryptoguide",
  "btcrecover_worktree_dirty": false,
  "derived": {
    "structured_reduction_percent": 99.2308,
    "two_typo_to_one_typo_ratio": 28.02,
    "unstructured_to_positioned_ratio": 130.0
  },
  "lab_script_sha256": "d27106ec57d3b671ef8b5a4c54b41b5f4f98284a4cddef628abcd6074ebf0574",
  "python_version": "3.12.10",
  "runs": [
    {
      "arguments": [
        "--listpass",
        "--tokenlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--max-tokens",
        "4"
      ],
      "candidate_count": 2080,
      "description": "Eight separate fragments; related variants can be combined as nonsense.",
      "input_sha256": "ec2991455b9acd63930cc091d60684741c30f13ef00dd92205516e0239334d85",
      "list_type": "tokenlist",
      "scenario_id": "fragments_unstructured",
      "target_present": true,
      "unique_candidate_count": 2080
    },
    {
      "arguments": [
        "--listpass",
        "--tokenlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--max-tokens",
        "4"
      ],
      "candidate_count": 632,
      "description": "Same-family alternatives share a line and are mutually exclusive.",
      "input_sha256": "2567bc121c453846edc32a0676d7403119fdc3b7c45572b46b05ebf10edf57fc",
      "list_type": "tokenlist",
      "scenario_id": "fragments_grouped",
      "target_present": true,
      "unique_candidate_count": 632
    },
    {
      "arguments": [
        "--listpass",
        "--tokenlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--max-tokens",
        "4"
      ],
      "candidate_count": 384,
      "description": "All four remembered fragment families are required, but order is open.",
      "input_sha256": "3c54e0d14c83896e9a61e4192417af2f99dbcb133e88b69f25e050e534acacf0",
      "list_type": "tokenlist",
      "scenario_id": "fragments_required",
      "target_present": true,
      "unique_candidate_count": 384
    },
    {
      "arguments": [
        "--listpass",
        "--tokenlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--max-tokens",
        "4"
      ],
      "candidate_count": 16,
      "description": "All fragment families are required and fixed to remembered positions.",
      "input_sha256": "ca795aa21b759ac916ceceb9eb047670f15e50c62814588d65b5002fa6c6c9b4",
      "list_type": "tokenlist",
      "scenario_id": "fragments_required_and_positioned",
      "target_present": true,
      "unique_candidate_count": 16
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw"
      ],
      "candidate_count": 1,
      "description": "One complete remembered guess, tried verbatim.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "whole_guess_exact",
      "target_present": true,
      "unique_candidate_count": 1
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--typos",
        "1",
        "--typos-case"
      ],
      "candidate_count": 12,
      "description": "One capitalization uncertainty, searched with the matching typo class.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "one_case_change",
      "target_present": true,
      "unique_candidate_count": 12
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--typos",
        "1",
        "--typos-swap"
      ],
      "candidate_count": 16,
      "description": "One adjacent transposition, searched with the matching typo class.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "one_adjacent_swap",
      "target_present": true,
      "unique_candidate_count": 16
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--typos",
        "1",
        "--typos-delete"
      ],
      "candidate_count": 17,
      "description": "One missing character, searched with the matching typo class.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "one_deleted_character",
      "target_present": true,
      "unique_candidate_count": 17
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--typos",
        "1",
        "--typos-repeat"
      ],
      "candidate_count": 17,
      "description": "One doubled character, searched with the matching typo class.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "one_repeated_character",
      "target_present": true,
      "unique_candidate_count": 17
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--typos",
        "1",
        "--typos-capslock",
        "--typos-swap",
        "--typos-repeat",
        "--typos-delete",
        "--typos-case"
      ],
      "candidate_count": 60,
      "description": "Five typo classes enabled together for one possible change.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "five_typo_classes_one_change",
      "target_present": true,
      "unique_candidate_count": 60
    },
    {
      "arguments": [
        "--listpass",
        "--passwordlist",
        "SYNTHETIC_INPUT",
        "--dsw",
        "--typos",
        "2",
        "--typos-capslock",
        "--typos-swap",
        "--typos-repeat",
        "--typos-delete",
        "--typos-case"
      ],
      "candidate_count": 1681,
      "description": "The same five classes widened from one to two possible changes.",
      "input_sha256": "08caef68dfa5db933181ef0d0c108d91990c8c29442f7a019e46bef6e7c19226",
      "list_type": "passwordlist",
      "scenario_id": "five_typo_classes_two_changes",
      "target_present": true,
      "unique_candidate_count": 1681
    }
  ],
  "scenario_count": 11,
  "scope": "Candidate generation only; no wallet, seed, key, hash, funds, or real password.",
  "study": "Cora Aegis A-02 synthetic BTCRecover candidate-space lab"
}
