Output types
... or how secator unifies all output into common schemas.
secator
uses the notion of output types to uniformize tasks output. A task can output one or multiple output types.
The currently available output types are βΌ Exploit, π» Ip, π Port, π€ Record,π° Subdomain, π·οΈ Tag, π Url, π€ UserAccount, π¨ Vulnerability.
βΌ Exploit
@dataclass
class Exploit(OutputType):
name: str
id: str
provider: str
matched_at: str = ''
ip: str = ''
reference: str = ''
cves: list = field(default_factory=list, compare=False)
tags: list = field(default_factory=list, compare=False)
extra_data: dict = field(default_factory=dict, compare=False)
π» Ip
@dataclass
class Ip(OutputType):
ip: str
host: str = ''
alive: bool = False
π Port
@dataclass
class Port(OutputType):
port: int
ip: str
state: str = 'UNKNOWN'
service_name: str = field(default='', compare=False)
cpes: list = field(default_factory=list, compare=False)
host: str = field(default='', repr=True, compare=False)
protocol: str = field(default='TCP', repr=True, compare=False)
extra_data: dict = field(default_factory=dict, compare=False)
π€ Record
@dataclass
class Record(OutputType):
name: str
type: str
host: str = ''
extra_data: dict = field(default_factory=dict, compare=False)
π° Subdomain
@dataclass
class Subdomain(OutputType):
host: str
domain: str
sources: List[str] = field(default_factory=list, compare=False)
extra_data: dict = field(default_factory=dict, compare=False)
π·οΈ Tag
@dataclass
class Tag(OutputType):
name: str
match: str
extra_data: dict = field(default_factory=dict, repr=True, compare=False)
π Url
@dataclass
class Url(OutputType):
url: str
host: str = field(default='', compare=False)
status_code: int = field(default=0, compare=False)
title: str = field(default='', compare=False)
webserver: str = field(default='', compare=False)
tech: list = field(default_factory=list, compare=False)
content_type: str = field(default='', compare=False)
content_length: int = field(default=0, compare=False)
time: str = field(default='', compare=False)
method: str = field(default='', compare=False)
words: int = field(default=0, compare=False)
lines: int = field(default=0, compare=False)
screenshot_path: str = field(default='', compare=False)
stored_response_path: str = field(default='', compare=False)
headers: dict = field(default_actory=dict, repr=True, compare=False)
π€ UserAccount
@dataclass
class UserAccount(OutputType):
username: str
url: str = ''
email: str = ''
site_name: str = ''
extra_data: dict = field(default_factory=dict, compare=False)
π¨ Vulnerability
@dataclass
class Vulnerability(OutputType):
name: str
provider: str = ''
id: str = ''
matched_at: str = ''
ip: str = field(default='', compare=False)
confidence: int = 'low'
severity: str = 'unknown'
cvss_score: float = 0
tags: List[str] = field(default_factory=list)
extra_data: dict = field(default_factory=dict, compare=False)
description: str = field(default='', compare=False)
references: List[str] = field(default_factory=list, compare=False)
reference: str = field(default='', compare=False)
confidence_nb: int = 0
severity_nb: int = 0
Last updated
Was this helpful?