Output types
... or how secator unifies all output into common schemas.
Last updated
Was this helpful?
... or how secator unifies all output into common schemas.
Last updated
Was this helpful?
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.
Feel free to request more output types by on the GitHub repo.
@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)
@dataclass
class Ip(OutputType):
ip: str
host: str = ''
alive: bool = False
@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)
@dataclass
class Record(OutputType):
name: str
type: str
host: str = ''
extra_data: dict = field(default_factory=dict, compare=False)
@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)
@dataclass
class Tag(OutputType):
name: str
match: str
extra_data: dict = field(default_factory=dict, repr=True, compare=False)
@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)
@dataclass
class UserAccount(OutputType):
username: str
url: str = ''
email: str = ''
site_name: str = ''
extra_data: dict = field(default_factory=dict, compare=False)
@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