{
"name": "subdomain-enum",
"kind": "flow",
"description": "Comprehensive subdomain enumeration and probing workflow",
"file_path": "/home/user/osmedeus-base/workflows/flows/subdomain-enum.yaml",
"params": [
{"name": "target", "required": true, "default": "", "generator": ""},
{"name": "threads", "required": false, "default": "50", "generator": ""},
{"name": "output_dir", "required": false, "default": "{{Workspace}}", "generator": "workspace_path"},
{"name": "wordlist", "required": false, "default": "", "generator": "default_wordlist"}
],
"steps": [
{
"index": 0,
"name": "run-subfinder",
"type": "bash",
"command": "subfinder -d {{target}} -t {{threads}} -o {{output_dir}}/subdomains-subfinder.txt",
"timeout": "30m",
"pre_condition": "",
"exports": {"subfinder_output": "{{output_dir}}/subdomains-subfinder.txt"}
},
{
"index": 1,
"name": "run-amass",
"type": "bash",
"command": "amass enum -passive -d {{target}} -o {{output_dir}}/subdomains-amass.txt",
"timeout": "60m",
"pre_condition": "commandExists('amass')",
"exports": {"amass_output": "{{output_dir}}/subdomains-amass.txt"}
},
{
"index": 2,
"name": "merge-subdomains",
"type": "function",
"command": "mergeFiles('{{output_dir}}/subdomains-*.txt', '{{output_dir}}/all-subdomains.txt')",
"timeout": "",
"pre_condition": "",
"exports": {"all_subdomains": "{{output_dir}}/all-subdomains.txt"}
},
{
"index": 3,
"name": "run-httpx",
"type": "bash",
"command": "httpx -l {{all_subdomains}} -t {{threads}} -o {{output_dir}}/alive.txt -json -o {{output_dir}}/httpx.json",
"timeout": "60m",
"pre_condition": "fileLength('{{all_subdomains}}') > 0",
"exports": {"alive_hosts": "{{output_dir}}/alive.txt", "httpx_json": "{{output_dir}}/httpx.json"}
}
],
"modules": [
{"index": 0, "name": "port-scan", "path": "modules/port-scan.yaml", "depends_on": [], "condition": ""},
{"index": 1, "name": "nuclei-scan", "path": "modules/nuclei-scan.yaml", "depends_on": ["port-scan"], "condition": "fileLength('{{alive_hosts}}') > 0"},
{"index": 2, "name": "screenshot", "path": "modules/screenshot.yaml", "depends_on": ["port-scan"], "condition": ""}
],
"triggers": [
{"name": "daily-scan", "on": "cron", "schedule": "0 2 * * *", "enabled": true},
{"name": "on-new-asset", "on": "event", "topic": "asset.discovered", "enabled": false}
],
"dependencies": {
"commands": ["subfinder", "amass", "httpx", "nuclei", "nmap"],
"files": ["{{wordlist}}"]
}
}