enhanced

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 1, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package enhanced provides advanced discovery capabilities for web application crawling.

Package enhanced provides advanced discovery capabilities.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	UserAgent   string
	Concurrency int
	EnableAll   bool

	// Individual module toggles
	EnableRobots      bool
	EnableSitemap     bool
	EnableSourceMaps  bool
	EnablePathBrute   bool
	EnableFingerprint bool
	EnableParamDiscov bool
	EnableJSExtract   bool
}

Config holds configuration for enhanced discovery.

type DiscoveryResult

type DiscoveryResult struct {
	Target string

	// Robots.txt results
	RobotsResult *RobotsResult

	// Sitemap results
	SitemapURLs []SitemapURL

	// Source map results
	SourceMapResults []*SourceMapResult

	// Path brute results
	PathResults []PathResult

	// Technology fingerprint
	TechResult *TechResult

	// Parameter discovery
	ParameterResult *ParameterResult

	// JS extraction results
	JSResults []JSExtractionResult

	// Aggregated discoveries
	AllURLs         []string
	AllAPIEndpoints []string
	AllRoutes       []string
	AllSecrets      []SecretFinding
	AllParameters   []Parameter
}

DiscoveryResult contains all discovery results.

type EnhancedDiscovery

type EnhancedDiscovery struct {
	// contains filtered or unexported fields
}

EnhancedDiscovery orchestrates all enhanced discovery modules.

func NewEnhancedDiscovery

func NewEnhancedDiscovery(cfg Config) *EnhancedDiscovery

NewEnhancedDiscovery creates a new enhanced discovery orchestrator.

func (*EnhancedDiscovery) Discover

func (ed *EnhancedDiscovery) Discover(targetURL string, headers http.Header, htmlContent string, cookies []*http.Cookie, jsURLs []string, knownURLs []string) *DiscoveryResult

Discover performs all enabled discovery operations on a target.

func (*EnhancedDiscovery) DiscoverQuick

func (ed *EnhancedDiscovery) DiscoverQuick(targetURL string) *DiscoveryResult

DiscoverQuick performs a quick discovery with essential modules only.

func (*EnhancedDiscovery) GetFingerprinter

func (ed *EnhancedDiscovery) GetFingerprinter() *TechFingerprinter

GetFingerprinter returns the fingerprinter for direct use.

func (*EnhancedDiscovery) GetJSExtractor

func (ed *EnhancedDiscovery) GetJSExtractor() *JSExtractor

GetJSExtractor returns the JS extractor for direct use.

func (*EnhancedDiscovery) GetParameterDiscovery

func (ed *EnhancedDiscovery) GetParameterDiscovery() *ParameterDiscovery

GetParameterDiscovery returns the parameter discovery for direct use.

func (*EnhancedDiscovery) GetPathBruter

func (ed *EnhancedDiscovery) GetPathBruter() *PathBruter

GetPathBruter returns the path bruter for direct use.

func (*EnhancedDiscovery) GetRobotsParser

func (ed *EnhancedDiscovery) GetRobotsParser() *RobotsParser

GetRobotsParser returns the robots parser for direct use.

func (*EnhancedDiscovery) GetSitemapParser

func (ed *EnhancedDiscovery) GetSitemapParser() *SitemapParser

GetSitemapParser returns the sitemap parser for direct use.

func (*EnhancedDiscovery) GetSourceMapParser

func (ed *EnhancedDiscovery) GetSourceMapParser() *SourceMapParser

GetSourceMapParser returns the source map parser for direct use.

type JSExtractionResult

type JSExtractionResult struct {
	SourceURL    string
	URLs         []string
	APIEndpoints []string
	Routes       []string
	Subdomains   []string
	Secrets      []SecretFinding
	Comments     []string
}

JSExtractionResult contains extracted data from JS files.

type JSExtractor

type JSExtractor struct {
	// contains filtered or unexported fields
}

JSExtractor extracts URLs and endpoints from JavaScript files.

func NewJSExtractor

func NewJSExtractor(userAgent string, concurrency int) *JSExtractor

NewJSExtractor creates a new JavaScript extractor.

func (*JSExtractor) ExtractFromContent

func (e *JSExtractor) ExtractFromContent(content string, baseURL *url.URL) *JSExtractionResult

ExtractFromContent extracts URLs and endpoints from JS content.

func (*JSExtractor) ExtractFromURLs

func (e *JSExtractor) ExtractFromURLs(jsURLs []string) []JSExtractionResult

ExtractFromURLs fetches and extracts from multiple JS URLs.

type Parameter

type Parameter struct {
	Name     string
	Value    string
	Source   string   // URL, form, javascript, etc.
	Type     string   // query, body, header, cookie
	Context  string   // The URL or context where it was found
	Examples []string // Example values seen
}

Parameter represents a discovered URL parameter.

type ParameterDiscovery

type ParameterDiscovery struct {
	// contains filtered or unexported fields
}

ParameterDiscovery discovers URL parameters from various sources.

func NewParameterDiscovery

func NewParameterDiscovery() *ParameterDiscovery

NewParameterDiscovery creates a new parameter discovery instance.

func (*ParameterDiscovery) CommonParameters

func (p *ParameterDiscovery) CommonParameters() []string

CommonParameters returns a list of commonly used parameter names.

func (*ParameterDiscovery) ExtractFromHTML

func (p *ParameterDiscovery) ExtractFromHTML(html string) []Parameter

ExtractFromHTML extracts parameters from HTML form elements.

func (*ParameterDiscovery) ExtractFromJavaScript

func (p *ParameterDiscovery) ExtractFromJavaScript(js string) []Parameter

ExtractFromJavaScript extracts parameters from JavaScript code.

func (*ParameterDiscovery) ExtractFromURLs

func (p *ParameterDiscovery) ExtractFromURLs(urls []string) *ParameterResult

ExtractFromURLs extracts parameters from a list of URLs.

type ParameterResult

type ParameterResult struct {
	QueryParams  []Parameter
	BodyParams   []Parameter
	HeaderParams []Parameter
	PathParams   []Parameter
}

ParameterResult contains all discovered parameters.

type PathBruter

type PathBruter struct {
	// contains filtered or unexported fields
}

PathBruter checks for common paths and backup files.

func NewPathBruter

func NewPathBruter(userAgent string, concurrency int) *PathBruter

NewPathBruter creates a new path bruter.

func (*PathBruter) BackupExtensions

func (p *PathBruter) BackupExtensions() []string

BackupExtensions returns file extensions to check for backups.

func (*PathBruter) Brute

func (p *PathBruter) Brute(targetURL string) ([]PathResult, error)

Brute checks common paths against a target.

func (*PathBruter) BruteBackups

func (p *PathBruter) BruteBackups(knownFiles []string) ([]PathResult, error)

BruteBackups checks for backup files of known files.

func (*PathBruter) CommonPaths

func (p *PathBruter) CommonPaths() []string

CommonPaths returns a list of common paths to check.

type PathResult

type PathResult struct {
	Path          string
	URL           string
	StatusCode    int
	ContentType   string
	ContentLength int64
	Category      string
	Interesting   bool
}

PathResult represents a discovered path.

type RobotsParser

type RobotsParser struct {
	// contains filtered or unexported fields
}

RobotsParser parses robots.txt to discover paths.

func NewRobotsParser

func NewRobotsParser(userAgent string) *RobotsParser

NewRobotsParser creates a new robots.txt parser.

func (*RobotsParser) GetInterestingPaths

func (p *RobotsParser) GetInterestingPaths(result *RobotsResult) []string

GetInterestingPaths returns paths that might reveal hidden content.

func (*RobotsParser) Parse

func (p *RobotsParser) Parse(targetURL string) (*RobotsResult, error)

Parse fetches and parses robots.txt for a target.

type RobotsResult

type RobotsResult struct {
	AllowedPaths    []string
	DisallowedPaths []string
	Sitemaps        []string
	CrawlDelay      int
	Host            string
	UserAgentRules  map[string]*RobotsRules
}

RobotsResult contains parsed robots.txt data.

type RobotsRules

type RobotsRules struct {
	UserAgent  string
	Allow      []string
	Disallow   []string
	CrawlDelay int
}

RobotsRules contains rules for a specific user agent.

type SecretFinding

type SecretFinding struct {
	Type    string
	Value   string
	File    string
	Context string
}

SecretFinding represents a potential secret found in source code.

type Sitemap

type Sitemap struct {
	XMLName xml.Name     `xml:"urlset"`
	URLs    []SitemapURL `xml:"url"`
}

Sitemap represents a sitemap.xml structure.

type SitemapEntry

type SitemapEntry struct {
	Loc     string `xml:"loc"`
	LastMod string `xml:"lastmod"`
}

SitemapEntry represents an entry in a sitemap index.

type SitemapIndex

type SitemapIndex struct {
	XMLName  xml.Name       `xml:"sitemapindex"`
	Sitemaps []SitemapEntry `xml:"sitemap"`
}

SitemapIndex represents a sitemap index file.

type SitemapParser

type SitemapParser struct {
	// contains filtered or unexported fields
}

SitemapParser parses sitemap.xml files to discover URLs.

func NewSitemapParser

func NewSitemapParser(userAgent string) *SitemapParser

NewSitemapParser creates a new sitemap parser.

func (*SitemapParser) Discover

func (p *SitemapParser) Discover(targetURL string) ([]SitemapURL, error)

Discover finds and parses sitemaps for a target.

func (*SitemapParser) GetURLStrings

func (p *SitemapParser) GetURLStrings(entries []SitemapURL) []string

GetURLStrings returns just the URL strings from sitemap entries.

type SitemapURL

type SitemapURL struct {
	Loc        string  `xml:"loc"`
	LastMod    string  `xml:"lastmod"`
	ChangeFreq string  `xml:"changefreq"`
	Priority   float64 `xml:"priority"`
	ParsedTime time.Time
}

SitemapURL represents a URL entry in a sitemap.

type SourceMap

type SourceMap struct {
	Version        int      `json:"version"`
	Sources        []string `json:"sources"`
	SourcesContent []string `json:"sourcesContent,omitempty"`
	Names          []string `json:"names"`
	Mappings       string   `json:"mappings"`
	File           string   `json:"file"`
	SourceRoot     string   `json:"sourceRoot,omitempty"`
}

SourceMap represents a parsed source map file.

type SourceMapParser

type SourceMapParser struct {
	// contains filtered or unexported fields
}

SourceMapParser extracts routes and endpoints from JavaScript source maps.

func NewSourceMapParser

func NewSourceMapParser(userAgent string) *SourceMapParser

NewSourceMapParser creates a new source map parser.

func (*SourceMapParser) FindSourceMaps

func (p *SourceMapParser) FindSourceMaps(jsURLs []string) []string

FindSourceMaps looks for source map references in JavaScript files.

func (*SourceMapParser) Parse

func (p *SourceMapParser) Parse(sourceMapURL string) (*SourceMapResult, error)

Parse downloads and parses a source map file.

type SourceMapResult

type SourceMapResult struct {
	SourceMapURL   string
	Sources        []string
	Routes         []string
	APIEndpoints   []string
	Secrets        []SecretFinding
	Components     []string
	OriginalSource map[string]string // filename -> content
}

SourceMapResult contains extracted information from source maps.

type TechFingerprinter

type TechFingerprinter struct {
	// contains filtered or unexported fields
}

TechFingerprinter detects technologies used by a web application.

func NewTechFingerprinter

func NewTechFingerprinter(userAgent string) *TechFingerprinter

NewTechFingerprinter creates a new technology fingerprinter.

func (*TechFingerprinter) Fingerprint

func (f *TechFingerprinter) Fingerprint(headers http.Header, htmlContent string, cookies []*http.Cookie) *TechResult

Fingerprint detects technologies from headers and HTML content.

func (*TechFingerprinter) GetSecurityRelevantTech

func (f *TechFingerprinter) GetSecurityRelevantTech(result *TechResult) []Technology

GetSecurityRelevantTech returns technologies that are security-relevant.

type TechResult

type TechResult struct {
	Technologies []Technology
	Headers      map[string]string
	Cookies      []string
	MetaTags     map[string]string
}

TechResult contains all detected technologies.

type Technology

type Technology struct {
	Name       string
	Category   string
	Version    string
	Confidence int // 0-100
	Evidence   string
}

Technology represents a detected technology.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL