Library usage
... or how you can use secator as a foundation to build powerful security software.
secator can also be used as a Python library.
Running tasks, workflows, and scans
You can run any task supported by secator by simply importing it by name from secator.tasks.
You can run any workflow or scan by importing it from secator.workflows or secator.scans.
from secator.template import TemplateLoader
from secator.runners import Workflow
from secator.tasks import subfinder, httpx, naabu
from secator.workflows import host_recon
from secator.scans import host
# Run simple tasks, chain them together
target = 'wikipedia.org'
subdomains = subfinder(target).run()
hosts = set(_.host for _ in subdomains if _._type == 'subdomain']
ports_open = naabu(hosts).run()
to_probe = set(f'{_.host}:{_.port}' for _ in ports_open if _._type == 'port']
alive_urls = httpx(to_probe).run()
# ... or run a workflow
results = host_recon(target).run()
# ... or run a scan
results = host(target).run()
# ... or run any custom template by loading it dynamically
config = TemplateLoader('/path/to/my/workflow.yaml')
results = Workflow(config, target).run()Consuming results live
All runners yield results in real-time, which means you can run them as generators to consume their results:
For instance, you can consume results lazily using threads or a Celery task:
Overriding global options
Options specified with the name of the command name prefixed will override global options for that specific command.
For instance, if you want a global rate limit of 1000 (reqs/s), but for ffuf you want it to be 100 you can do so:
Disabling default options
Sometimes you might wish to omit passing the option and use the command defaults. You can set the option to False in order to do this.
Last updated
Was this helpful?