wordlistxpl 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. wlf/__init__.py +5 -0
  2. wlf/__main__.py +4 -0
  3. wlf/cli/__init__.py +1 -0
  4. wlf/cli/config.py +143 -0
  5. wlf/cli/context.py +101 -0
  6. wlf/cli/handlers/__init__.py +106 -0
  7. wlf/cli/handlers/analysis.py +582 -0
  8. wlf/cli/handlers/generation.py +786 -0
  9. wlf/cli/handlers/infra.py +404 -0
  10. wlf/cli/handlers/ops.py +456 -0
  11. wlf/cli/handlers/osint.py +988 -0
  12. wlf/cli/main.py +247 -0
  13. wlf/cli/menu.py +255 -0
  14. wlf/cli/parser.py +2659 -0
  15. wlf/cli/utils.py +410 -0
  16. wlf/py.typed +0 -0
  17. wlf.py +18 -0
  18. wlf_modules/__init__.py +1 -0
  19. wlf_modules/affix_engine.py +378 -0
  20. wlf_modules/analyzer.py +830 -0
  21. wlf_modules/anomaly_scorer.py +513 -0
  22. wlf_modules/api_server.py +408 -0
  23. wlf_modules/archive_export.py +274 -0
  24. wlf_modules/async_pipeline.py +221 -0
  25. wlf_modules/bandit_router.py +92 -0
  26. wlf_modules/bayesian_full.py +315 -0
  27. wlf_modules/benchmark_suite.py +1018 -0
  28. wlf_modules/br_deep_engine.py +449 -0
  29. wlf_modules/brwordlist_loader.py +350 -0
  30. wlf_modules/charset_gen.py +531 -0
  31. wlf_modules/cluster_engine.py +435 -0
  32. wlf_modules/combiner.py +346 -0
  33. wlf_modules/combo_engine.py +238 -0
  34. wlf_modules/compare_engine.py +310 -0
  35. wlf_modules/compute_backend.py +401 -0
  36. wlf_modules/corp_convention.py +219 -0
  37. wlf_modules/corp_prefixes.py +403 -0
  38. wlf_modules/corp_profiler.py +350 -0
  39. wlf_modules/country_tokens.py +405 -0
  40. wlf_modules/coverage_analyzer.py +301 -0
  41. wlf_modules/credential_tester.py +281 -0
  42. wlf_modules/cupp_engine.py +207 -0
  43. wlf_modules/data/__init__.py +2 -0
  44. wlf_modules/data/behavior_patterns.json +7668 -0
  45. wlf_modules/data/corp_prefix_patterns.json +452 -0
  46. wlf_modules/date_profile.py +487 -0
  47. wlf_modules/default_creds.py +242 -0
  48. wlf_modules/diffusion_engine.py +209 -0
  49. wlf_modules/dns_wordlist.py +556 -0
  50. wlf_modules/domain_pcfg.py +281 -0
  51. wlf_modules/domain_users.py +1305 -0
  52. wlf_modules/entropy_strength.py +349 -0
  53. wlf_modules/entropy_viz.py +271 -0
  54. wlf_modules/eval_harness.py +244 -0
  55. wlf_modules/explainer.py +208 -0
  56. wlf_modules/file_extractor.py +237 -0
  57. wlf_modules/finetune_engine.py +259 -0
  58. wlf_modules/flow_engine.py +208 -0
  59. wlf_modules/gan_engine.py +276 -0
  60. wlf_modules/generation_engines.py +357 -0
  61. wlf_modules/genetic_engine.py +313 -0
  62. wlf_modules/gpu_expand.py +142 -0
  63. wlf_modules/hash_tools.py +314 -0
  64. wlf_modules/hashcat_monitor.py +481 -0
  65. wlf_modules/hibp_checker.py +356 -0
  66. wlf_modules/hw_profiler.py +331 -0
  67. wlf_modules/i18n/__init__.py +143 -0
  68. wlf_modules/i18n/locale.py +299 -0
  69. wlf_modules/i18n/prompts.py +552 -0
  70. wlf_modules/intelx_checker.py +407 -0
  71. wlf_modules/isp_keygen.py +300 -0
  72. wlf_modules/iwlgen.py +338 -0
  73. wlf_modules/keyword_mutations.py +361 -0
  74. wlf_modules/kwalk_gen.py +415 -0
  75. wlf_modules/leet_permuter.py +333 -0
  76. wlf_modules/linkedin_search.py +401 -0
  77. wlf_modules/linkwords.py +134 -0
  78. wlf_modules/list_ops.py +391 -0
  79. wlf_modules/locales/__init__.py +131 -0
  80. wlf_modules/locales/ar.py +86 -0
  81. wlf_modules/locales/de.py +86 -0
  82. wlf_modules/locales/en_gb.py +80 -0
  83. wlf_modules/locales/en_us.py +92 -0
  84. wlf_modules/locales/es.py +93 -0
  85. wlf_modules/locales/fr.py +83 -0
  86. wlf_modules/locales/hi.py +87 -0
  87. wlf_modules/locales/ja.py +88 -0
  88. wlf_modules/locales/ko.py +79 -0
  89. wlf_modules/locales/pt_br.py +31 -0
  90. wlf_modules/locales/pt_pt.py +92 -0
  91. wlf_modules/locales/zh.py +85 -0
  92. wlf_modules/mangler.py +437 -0
  93. wlf_modules/map_elites.py +274 -0
  94. wlf_modules/markov_engine.py +311 -0
  95. wlf_modules/masked_lm_engine.py +290 -0
  96. wlf_modules/maya_ranker.py +661 -0
  97. wlf_modules/merger.py +146 -0
  98. wlf_modules/ml_patterns.py +858 -0
  99. wlf_modules/neural_engine.py +683 -0
  100. wlf_modules/nflow_engine.py +344 -0
  101. wlf_modules/noun_dictionary.py +123 -0
  102. wlf_modules/num2text.py +316 -0
  103. wlf_modules/ocr_extractor.py +151 -0
  104. wlf_modules/osint_advanced.py +287 -0
  105. wlf_modules/osint_perm.py +280 -0
  106. wlf_modules/passphrase_gen.py +138 -0
  107. wlf_modules/password_dna.py +484 -0
  108. wlf_modules/password_graph.py +234 -0
  109. wlf_modules/pattern_engine.py +387 -0
  110. wlf_modules/pattern_ranker.py +201 -0
  111. wlf_modules/pbmp_full.py +344 -0
  112. wlf_modules/pcfg_engine.py +662 -0
  113. wlf_modules/pharma_gen.py +303 -0
  114. wlf_modules/phone_gen.py +568 -0
  115. wlf_modules/phonetic_engine.py +407 -0
  116. wlf_modules/pipeline_dsl.py +456 -0
  117. wlf_modules/pipeline_engine.py +1254 -0
  118. wlf_modules/plugin_manager.py +193 -0
  119. wlf_modules/plugin_schema.py +117 -0
  120. wlf_modules/prince_engine.py +276 -0
  121. wlf_modules/profiler.py +3074 -0
  122. wlf_modules/py.typed +0 -0
  123. wlf_modules/resource_governor.py +201 -0
  124. wlf_modules/rl_router.py +228 -0
  125. wlf_modules/rsmangler_engine.py +330 -0
  126. wlf_modules/rule_engine.py +483 -0
  127. wlf_modules/rule_miner.py +309 -0
  128. wlf_modules/rulegen_engine.py +358 -0
  129. wlf_modules/sanitizer.py +261 -0
  130. wlf_modules/score_normalizer.py +169 -0
  131. wlf_modules/seclists_trainer.py +279 -0
  132. wlf_modules/semantic_pcfg.py +96 -0
  133. wlf_modules/session_manager.py +190 -0
  134. wlf_modules/strategy_engine.py +173 -0
  135. wlf_modules/target_spider.py +236 -0
  136. wlf_modules/tcn_engine.py +202 -0
  137. wlf_modules/temporal_calendar.py +247 -0
  138. wlf_modules/temporal_drift.py +240 -0
  139. wlf_modules/theme_packs.py +204 -0
  140. wlf_modules/thread_pool.py +346 -0
  141. wlf_modules/transformer_engine.py +330 -0
  142. wlf_modules/vae_engine.py +274 -0
  143. wlf_modules/web_scraper.py +428 -0
  144. wlf_modules/xor_crypto.py +167 -0
  145. wordlistxpl-2.0.0.dist-info/METADATA +677 -0
  146. wordlistxpl-2.0.0.dist-info/RECORD +150 -0
  147. wordlistxpl-2.0.0.dist-info/WHEEL +5 -0
  148. wordlistxpl-2.0.0.dist-info/entry_points.txt +3 -0
  149. wordlistxpl-2.0.0.dist-info/licenses/LICENSE +123 -0
  150. wordlistxpl-2.0.0.dist-info/top_level.txt +2 -0
wlf/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ """WordlistXPL-Forge — unified wordlist generation."""
2
+ from wlf.cli.context import VERSION
3
+ from wlf.cli.main import main
4
+
5
+ __all__ = ["main", "VERSION"]
wlf/__main__.py ADDED
@@ -0,0 +1,4 @@
1
+ """Allow running as: python -m wlf"""
2
+ from wlf.cli.main import main
3
+
4
+ main()
wlf/cli/__init__.py ADDED
@@ -0,0 +1 @@
1
+ """WordlistXPL-Forge CLI package."""
wlf/cli/config.py ADDED
@@ -0,0 +1,143 @@
1
+ """Persistent configuration file support (~/.wlf/config.yaml)."""
2
+ from __future__ import annotations
3
+
4
+ import os
5
+ from pathlib import Path
6
+ from typing import Any
7
+
8
+ _CONFIG_DIR = Path(os.environ.get("WLF_CONFIG_DIR", "~/.wlf")).expanduser()
9
+ _CONFIG_FILE = _CONFIG_DIR / "config.yaml"
10
+
11
+ DEFAULTS: dict[str, Any] = {
12
+ "threads": 5,
13
+ "compute_mode": "auto",
14
+ "use_ml": True,
15
+ "limit": 0,
16
+ "timeout": 0,
17
+ "min_len": 0,
18
+ "max_len": 0,
19
+ "ram_budget_pct": 50.0,
20
+ "vram_budget_mb": 4096,
21
+ "chunk_lines": 0,
22
+ "chunk_bytes": 0,
23
+ "stream": False,
24
+ "locale": "en",
25
+ "model_dir": "",
26
+ "output_dir": "",
27
+ }
28
+
29
+ _TEMPLATE = """\
30
+ # WordlistXPL-Forge configuration
31
+ # Persistent defaults — CLI flags always override these values.
32
+ # Location: ~/.wlf/config.yaml (override with WLF_CONFIG_DIR env var)
33
+
34
+ # ── Execution ────────────────────────────────────────────────────────────────
35
+ threads: 5 # Worker threads (1-300)
36
+ compute_mode: auto # cpu | gpu | cuda | rocm | mps | auto | hybrid
37
+ use_ml: true # Enable ML-powered engines globally
38
+
39
+ # ── Limits ───────────────────────────────────────────────────────────────────
40
+ limit: 0 # Global line limit (0 = unlimited)
41
+ timeout: 0 # Global timeout in seconds (0 = unlimited)
42
+ min_len: 0 # Minimum entry length (0 = no filter)
43
+ max_len: 0 # Maximum entry length (0 = no filter)
44
+
45
+ # ── Resources ────────────────────────────────────────────────────────────────
46
+ ram_budget_pct: 50.0 # Max % of system RAM for ResourceGovernor
47
+ vram_budget_mb: 4096 # Max VRAM budget in MB for GPU engines
48
+ chunk_lines: 0 # Chunk size in lines (0 = auto)
49
+ chunk_bytes: 0 # Chunk size in bytes (0 = auto)
50
+ stream: false # Stream output to stdout instead of buffering
51
+
52
+ # ── Locale ───────────────────────────────────────────────────────────────────
53
+ locale: en # Default locale (en, pt-br, es, fr, de)
54
+
55
+ # ── Paths ────────────────────────────────────────────────────────────────────
56
+ model_dir: "" # Directory for ML model checkpoints
57
+ output_dir: "" # Default output directory for generated wordlists
58
+ """
59
+
60
+
61
+ def config_dir() -> Path:
62
+ """Return the configuration directory path."""
63
+ return _CONFIG_DIR
64
+
65
+
66
+ def config_path() -> Path:
67
+ """Return the configuration file path."""
68
+ return _CONFIG_FILE
69
+
70
+
71
+ def load_config() -> dict[str, Any]:
72
+ """Load config from ~/.wlf/config.yaml, returning DEFAULTS on any error."""
73
+ cfg = dict(DEFAULTS)
74
+ if not _CONFIG_FILE.is_file():
75
+ return cfg
76
+ try:
77
+ import yaml
78
+ except ImportError:
79
+ try:
80
+ text = _CONFIG_FILE.read_text(encoding="utf-8")
81
+ cfg.update(_parse_simple_yaml(text))
82
+ except Exception:
83
+ pass
84
+ return cfg
85
+ try:
86
+ raw = yaml.safe_load(_CONFIG_FILE.read_text(encoding="utf-8"))
87
+ if isinstance(raw, dict):
88
+ for key in DEFAULTS:
89
+ if key in raw and raw[key] is not None:
90
+ cfg[key] = type(DEFAULTS[key])(raw[key])
91
+ except Exception:
92
+ pass
93
+ return cfg
94
+
95
+
96
+ def _parse_simple_yaml(text: str) -> dict[str, Any]:
97
+ """Minimal key: value parser for when PyYAML is not installed."""
98
+ result: dict[str, Any] = {}
99
+ for line in text.splitlines():
100
+ line = line.split("#", 1)[0].strip()
101
+ if not line or ":" not in line:
102
+ continue
103
+ key, _, val = line.partition(":")
104
+ key = key.strip()
105
+ val = val.strip()
106
+ if key not in DEFAULTS:
107
+ continue
108
+ default = DEFAULTS[key]
109
+ if isinstance(default, bool):
110
+ result[key] = val.lower() in ("true", "yes", "1", "on")
111
+ elif isinstance(default, int):
112
+ try:
113
+ result[key] = int(val)
114
+ except ValueError:
115
+ pass
116
+ elif isinstance(default, float):
117
+ try:
118
+ result[key] = float(val)
119
+ except ValueError:
120
+ pass
121
+ else:
122
+ if val.startswith(('"', "'")) and len(val) >= 2:
123
+ val = val[1:-1]
124
+ result[key] = val
125
+ return result
126
+
127
+
128
+ def init_config(force: bool = False) -> Path:
129
+ """Create default config file. Returns the path written."""
130
+ _CONFIG_DIR.mkdir(parents=True, exist_ok=True)
131
+ if _CONFIG_FILE.exists() and not force:
132
+ raise FileExistsError(f"Config already exists: {_CONFIG_FILE}")
133
+ _CONFIG_FILE.write_text(_TEMPLATE, encoding="utf-8")
134
+ return _CONFIG_FILE
135
+
136
+
137
+ def apply_config_to_ctx(ctx: dict[str, Any], cfg: dict[str, Any]) -> None:
138
+ """Merge config values into _GLOBAL_CTX as defaults (CLI overrides later)."""
139
+ for key in ("threads", "compute_mode", "use_ml", "limit", "timeout",
140
+ "min_len", "max_len", "ram_budget_pct", "vram_budget_mb",
141
+ "chunk_lines", "chunk_bytes", "stream"):
142
+ if key in cfg:
143
+ ctx[key] = cfg[key]
wlf/cli/context.py ADDED
@@ -0,0 +1,101 @@
1
+ """Global execution context, constants, and terminal output setup."""
2
+ from __future__ import annotations
3
+
4
+ import logging
5
+ import signal
6
+ import sys
7
+ import types
8
+ from pathlib import Path
9
+ from typing import Any
10
+
11
+ # ── Colorama ─────────────────────────────────────────────────────────────────
12
+ try:
13
+ from colorama import Fore, Style, init as colorama_init
14
+ colorama_init(autoreset=True)
15
+ _COLOR = True
16
+ except ImportError:
17
+ _COLOR = False
18
+ class Fore: # type: ignore[no-redef]
19
+ CYAN = GREEN = YELLOW = RED = MAGENTA = WHITE = RESET = ""
20
+ class Style: # type: ignore[no-redef]
21
+ BRIGHT = RESET_ALL = ""
22
+
23
+ # ── tqdm ─────────────────────────────────────────────────────────────────────
24
+ try:
25
+ from tqdm import tqdm as _tqdm
26
+ _TQDM = True
27
+ except ImportError:
28
+ _TQDM = False
29
+ _tqdm = None
30
+
31
+ # ── Path setup ───────────────────────────────────────────────────────────────
32
+ _HERE = Path(__file__).resolve().parent.parent.parent
33
+ sys.path.insert(0, str(_HERE))
34
+
35
+ logging.basicConfig(
36
+ level=logging.WARNING,
37
+ format="%(levelname)s %(name)s: %(message)s",
38
+ )
39
+ logger = logging.getLogger("wlf")
40
+
41
+ VERSION = "2.0.0"
42
+
43
+ # ── Graceful shutdown ────────────────────────────────────────────────────────
44
+ _SHUTDOWN_REQUESTED = False
45
+
46
+
47
+ def _signal_handler(signum: int, frame: types.FrameType | None) -> None:
48
+ """Handle SIGINT/SIGTERM for graceful shutdown."""
49
+ global _SHUTDOWN_REQUESTED
50
+ _SHUTDOWN_REQUESTED = True
51
+ print(f"\n{Fore.YELLOW}[!]{Style.RESET_ALL} Shutdown requested - finishing current batch...")
52
+
53
+
54
+ signal.signal(signal.SIGINT, _signal_handler)
55
+ if hasattr(signal, "SIGTERM"):
56
+ signal.signal(signal.SIGTERM, _signal_handler)
57
+
58
+
59
+ def is_shutdown() -> bool:
60
+ """Check if a graceful shutdown has been requested."""
61
+ return _SHUTDOWN_REQUESTED
62
+
63
+
64
+ # ── Global execution context ─────────────────────────────────────────────────
65
+ _GLOBAL_CTX: dict[str, Any] = {
66
+ "threads": 5, # thread count (1-300)
67
+ "compute_mode": "auto", # cpu | gpu | cuda | rocm | mps | auto | hybrid
68
+ "use_ml": True, # ML enabled globally
69
+ "limit": 0, # global line limit (0=unlimited)
70
+ "timeout": 0, # global timeout in seconds (0=unlimited)
71
+ "start_time": 0.0, # epoch when execution started
72
+ "min_len": 0, # global minimum entry length (0=no filter)
73
+ "max_len": 0, # global maximum entry length (0=no filter)
74
+ "ram_budget_pct": 50.0,
75
+ "min_available_ram_mb": 512,
76
+ "vram_budget_mb": 4096,
77
+ "chunk_lines": 0,
78
+ "chunk_bytes": 0,
79
+ "gov_poll_every": 10_000,
80
+ "enforce_safe_default": False,
81
+ "safe_default_max": 5_000_000,
82
+ "stream": False,
83
+ }
84
+
85
+
86
+ _BANNER_ART = (
87
+ " __ _______ _ _ \n"
88
+ r" \ \ / / ____| | | | " + "\n"
89
+ r" \ \ /\ / /| |__ | |__| | " + "\n"
90
+ r" \ \/ \/ / | __| | __ | " + "\n"
91
+ r" \ /\ / | | | | | | " + "\n"
92
+ r" \/ \/ |_| |_| |_| " + "\n"
93
+ )
94
+ BANNER = (
95
+ f"\n{Fore.CYAN}{Style.BRIGHT}\n"
96
+ + _BANNER_ART
97
+ + f"\n WordlistXPL-Forge v{VERSION}\n"
98
+ + " Author: André Henrique (@mrhenrike)\n"
99
+ + " Unified wordlist generation for pentest & red team\n"
100
+ + f"{Style.RESET_ALL}"
101
+ )
@@ -0,0 +1,106 @@
1
+ """Command handlers — re-export from category modules."""
2
+ from wlf.cli.handlers.generation import ( # noqa: F401
3
+ cmd_charset,
4
+ cmd_pattern,
5
+ cmd_mutate,
6
+ cmd_num2text,
7
+ cmd_phrase,
8
+ cmd_leet,
9
+ cmd_leet_perm,
10
+ cmd_combiner,
11
+ cmd_pcfg,
12
+ cmd_markov,
13
+ cmd_kwalk,
14
+ cmd_rule_mine,
15
+ cmd_finetune_data,
16
+ cmd_nflow,
17
+ cmd_combo,
18
+ cmd_corp_conv,
19
+ cmd_phonetic,
20
+ cmd_prince,
21
+ cmd_br_names,
22
+ cmd_iwlgen,
23
+ cmd_neural,
24
+ cmd_passphrase,
25
+ cmd_br_deep,
26
+ cmd_locale,
27
+ cmd_pbmp,
28
+ cmd_evolve,
29
+ cmd_graph_expand,
30
+ cmd_temporal_model,
31
+ cmd_domain_pcfg,
32
+ cmd_vae_interp,
33
+ )
34
+ from wlf.cli.handlers.analysis import ( # noqa: F401
35
+ cmd_analyze,
36
+ cmd_compare,
37
+ cmd_cluster,
38
+ cmd_entropy,
39
+ cmd_hcmon,
40
+ cmd_hibp,
41
+ cmd_intelx,
42
+ cmd_maskgen,
43
+ cmd_password_dna,
44
+ cmd_dna_extract,
45
+ cmd_cover,
46
+ cmd_benchmark,
47
+ cmd_maya_rank,
48
+ cmd_pattern_rank,
49
+ cmd_anomaly_score,
50
+ cmd_strength,
51
+ cmd_hash_id,
52
+ cmd_hash_gen,
53
+ cmd_hcmask,
54
+ cmd_evaluate,
55
+ cmd_score,
56
+ cmd_explain_cmd,
57
+ )
58
+ from wlf.cli.handlers.osint import ( # noqa: F401
59
+ cmd_profile,
60
+ cmd_corp,
61
+ cmd_corp_users,
62
+ cmd_phone,
63
+ cmd_scrape,
64
+ cmd_ocr,
65
+ cmd_extract,
66
+ cmd_dns,
67
+ cmd_pharma,
68
+ cmd_default_creds,
69
+ cmd_isp_keygen,
70
+ cmd_corp_prefixes,
71
+ cmd_osint_perm,
72
+ cmd_cupp,
73
+ cmd_scrape_target,
74
+ cmd_osint,
75
+ )
76
+ from wlf.cli.handlers.ops import ( # noqa: F401
77
+ cmd_xor,
78
+ cmd_merge,
79
+ cmd_sanitize,
80
+ cmd_reverse,
81
+ cmd_emit,
82
+ cmd_replay,
83
+ cmd_rulegen,
84
+ cmd_mangle,
85
+ cmd_improve,
86
+ cmd_rules,
87
+ cmd_affix,
88
+ cmd_dedup,
89
+ cmd_subtract,
90
+ cmd_split,
91
+ cmd_keyspace,
92
+ cmd_curate,
93
+ cmd_test,
94
+ )
95
+ from wlf.cli.handlers.infra import ( # noqa: F401
96
+ cmd_strategy,
97
+ cmd_bandit,
98
+ cmd_sysinfo,
99
+ cmd_train,
100
+ cmd_pipeline,
101
+ cmd_session,
102
+ cmd_serve,
103
+ cmd_plugin,
104
+ )
105
+
106
+ __all__ = ['cmd_affix', 'cmd_analyze', 'cmd_anomaly_score', 'cmd_cluster', 'cmd_compare', 'cmd_entropy', 'cmd_hcmon', 'cmd_hibp', 'cmd_intelx', 'cmd_bandit', 'cmd_benchmark', 'cmd_br_deep', 'cmd_br_names', 'cmd_charset', 'cmd_combo', 'cmd_combiner', 'cmd_corp', 'cmd_corp_conv', 'cmd_corp_prefixes', 'cmd_corp_users', 'cmd_cover', 'cmd_cupp', 'cmd_curate', 'cmd_dedup', 'cmd_default_creds', 'cmd_dna_extract', 'cmd_dns', 'cmd_domain_pcfg', 'cmd_emit', 'cmd_evaluate', 'cmd_evolve', 'cmd_finetune_data', 'cmd_nflow', 'cmd_explain_cmd', 'cmd_extract', 'cmd_graph_expand', 'cmd_hash_gen', 'cmd_hash_id', 'cmd_hcmask', 'cmd_improve', 'cmd_isp_keygen', 'cmd_iwlgen', 'cmd_keyspace', 'cmd_kwalk', 'cmd_leet', 'cmd_leet_perm', 'cmd_locale', 'cmd_mangle', 'cmd_markov', 'cmd_maskgen', 'cmd_maya_rank', 'cmd_merge', 'cmd_mutate', 'cmd_neural', 'cmd_num2text', 'cmd_ocr', 'cmd_osint', 'cmd_osint_perm', 'cmd_passphrase', 'cmd_password_dna', 'cmd_pattern', 'cmd_pattern_rank', 'cmd_pbmp', 'cmd_pcfg', 'cmd_pharma', 'cmd_phone', 'cmd_phonetic', 'cmd_phrase', 'cmd_pipeline', 'cmd_plugin', 'cmd_prince', 'cmd_rule_mine', 'cmd_profile', 'cmd_replay', 'cmd_reverse', 'cmd_rulegen', 'cmd_rules', 'cmd_sanitize', 'cmd_score', 'cmd_scrape', 'cmd_scrape_target', 'cmd_serve', 'cmd_session', 'cmd_split', 'cmd_strategy', 'cmd_strength', 'cmd_subtract', 'cmd_sysinfo', 'cmd_temporal_model', 'cmd_test', 'cmd_train', 'cmd_vae_interp', 'cmd_xor']