Documentation
¶
Overview ¶
Package recon holds the domain types for reconnaissance runs. A run is one argv-based tool execution against an in-scope engagement target; its raw output is sealed into the evidence chain and its progress is tracked so the UI can tail logs and survive reloads. The package is pure: it knows nothing about how tools execute (that is the ToolRunner port / adapters).
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Result ¶
type Result struct {
Kind ResultKind `json:"kind"`
Value string `json:"value"` // the discovered host / url / host:port
Detail string `json:"detail"` // tool-specific extra (status code, title, …)
}
Result is a single asset a recon tool discovered. The recon use case re-checks every Result against the engagement scope before keeping it (discovered hosts are re-validated before they feed any further action).
type ResultKind ¶
type ResultKind string
ResultKind classifies a discovered asset.
const ( ResultSubdomain ResultKind = "subdomain" ResultURL ResultKind = "url" ResultPort ResultKind = "port" ResultHost ResultKind = "host" )
type Run ¶
type Run struct {
ID shared.ID `json:"id"`
EngagementID shared.ID `json:"engagementId"`
Tool string `json:"tool"` // recon tool name, e.g. "subfinder"
Target string `json:"target"` // the in-scope target value the run was launched against
Status Status `json:"status"`
Stage string `json:"stage"`
Error string `json:"error,omitempty"`
ResultCount int `json:"resultCount"` // in-scope results discovered
Containment string `json:"containment,omitempty"` // human-readable confinement posture
EvidenceID shared.ID `json:"evidenceId,omitempty"`
StartedAt time.Time `json:"startedAt"`
FinishedAt *time.Time `json:"finishedAt,omitempty"`
}
Run records one recon tool execution against an engagement target so the UI can track progress, survive reloads, and link to the sealed evidence.