id = "amass"
name = "Amass"
homepage = "https://owasp.org/www-project-amass/"
description = "In-depth attack surface mapping and asset discovery."
executables = ["amass"]
[dotfiles]
paths = []
secret = [
"[configHome]/amass/config.ini",
"[appData]/amass/config.ini",
"%APPDATA%/amass/config.ini",
]
[commands]
format = 1
label = "Amass"
description = "Run amass enum for asset discovery. Data-source, wordlist-mask and resolver options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["enum"]
label = "Enumerate a domain"
description = "Discover subdomains and assets for one or more root domains."
[[commands.subcommand.source]]
id = "source"
kind = "help"
url = "https://github.com/owasp-amass/amass/blob/main/internal/enum/cli.go"
revision = "2026-10-27"
evidence = """
-d value Domain names separated by commas (can be used multiple times)
-active Attempt zone transfers and certificate name grabs
-brute Execute brute forcing after searches
-w value Path to a different wordlist file for brute forcing
-alts Enable generation of altered names
-norecursive Turn off recursive brute forcing
-timeout int Minutes to run without progress before terminating (Default: 30)
-dir string Path to the directory containing the output files
-config string Path to the YAML configuration file. Additional details below
-silent Disable all output during execution
-v Output status / debug / troubleshooting info
fs.Var(args.Domains, "d", "Domain names separated by commas (can be used multiple times)")
fs.BoolVar(&args.Options.Active, "active", false, "Attempt zone transfers and certificate name grabs")
fs.BoolVar(&args.Options.BruteForcing, "brute", false, "Execute brute forcing after searches")
fs.BoolVar(&args.Options.Alterations, "alts", false, "Enable generation of altered names")
fs.BoolVar(&args.Options.NoRecursive, "norecursive", false, "Turn off recursive brute forcing")
fs.BoolVar(&args.Options.Silent, "silent", false, "Disable all output during execution")
fs.BoolVar(&args.Options.Verbose, "v", false, "Output status / debug / troubleshooting info")
fs.IntVar(&args.Timeout, "timeout", 30, "Minutes to run without progress before terminating (Default: 30)")
fs.StringVar(&args.Filepaths.Directory, "dir", "", "Path to the directory containing the output files")
fs.StringVar(&args.Filepaths.ConfigFile, "config", "", "Path to the YAML configuration file. Additional details below")
fs.Var(&args.Filepaths.BruteWordlist, "w", "Path to a different wordlist file for brute forcing")
"""
[[commands.subcommand.field]]
id = "domains"
label = "Domains"
description = "Comma-separated root domains."
type = "string"
option = ["-d"]
sources = ["source"]
[[commands.subcommand.field]]
id = "active"
label = "Active techniques"
description = "Attempt zone transfers and certificate name grabs."
type = "boolean"
option = ["-active"]
sources = ["source"]
[[commands.subcommand.field]]
id = "brute"
label = "Brute force subdomains"
type = "boolean"
option = ["-brute"]
sources = ["source"]
[[commands.subcommand.field]]
id = "wordlist"
label = "Brute-force wordlist"
type = "path"
path = { kind = "file", role = "input" }
option = ["-w"]
sources = ["source"]
[[commands.subcommand.field]]
id = "alts"
label = "Generate altered names"
type = "boolean"
option = ["-alts"]
sources = ["source"]
[[commands.subcommand.field]]
id = "norecursive"
label = "No recursive brute forcing"
type = "boolean"
option = ["-norecursive"]
sources = ["source"]
[[commands.subcommand.field]]
id = "timeout"
label = "Timeout (minutes)"
description = "Minutes to run without progress before terminating."
type = "integer"
option = ["-timeout"]
sources = ["source"]
[[commands.subcommand.field]]
id = "dir"
label = "Output directory"
type = "path"
path = { kind = "directory", role = "output" }
option = ["-dir"]
sources = ["source"]
[[commands.subcommand.field]]
id = "config"
label = "YAML config file"
type = "path"
path = { kind = "file", role = "input" }
option = ["-config"]
sources = ["source"]
[[commands.subcommand.field]]
id = "silent"
label = "Silent"
type = "boolean"
option = ["-silent"]
sources = ["source"]
[[commands.subcommand.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["-v"]
sources = ["source"]
[[commands.subcommand.task]]
id = "passive"
label = "Passive enumeration"
fields = ["domains", "dir"]
required = ["domains"]
[[commands.subcommand.task]]
id = "active_brute"
label = "Active with brute force"
fields = ["domains", "active", "brute", "wordlist", "dir"]
required = ["domains"]
set = { active = [true], brute = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["domains", "active", "brute", "wordlist", "dir", "verbose"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["alts", "norecursive", "timeout", "config", "silent"]