id = "amass" name = "Amass" homepage = "https://owasp.org/www-project-amass/" description = "In-depth attack surface mapping and asset discovery." executables = ["amass"] [dotfiles] # Amass's official configuration wiki lists these auto-discovered user # locations: ~/.config/amass/config.ini on Unix/XDG, ~/Library/Application # Support/amass/config.ini on macOS, and %AppData%\\amass\\config.ini on # Windows. The INI data-source sections can contain API keys, secrets, # usernames, and passwords, so the whole config is treated as secret. # https://github.com/owasp-amass/amass/wiki/The-Configuration-File 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"]