runner

package
v2.0.0 Latest Latest
Warning

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

Go to latest
Published: Jan 24, 2025 License: MIT Imports: 53 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultPortTimeoutSynScan     = 1000
	DefaultPortTimeoutConnectScan = 5000

	DefaultRateSynScan     = 1000
	DefaultRateConnectScan = 1500

	DefaultRetriesSynScan     = 3
	DefaultRetriesConnectScan = 3

	SynScan             = "s"
	ConnectScan         = "c"
	DefautStatsInterval = 5
)
View Source
const (
	Full        = "1-65535"
	NmapTop100  = "" /* 393-byte string literal not displayed */
	NmapTop1000 = "" /* 3813-byte string literal not displayed */
)

默认端口扫描策略

Variables

View Source
var (
	NumberOfCsvFieldsErr = errors.New("exported fields don't match csv tags")
)

Functions

func DefaultNmapFilePath

func DefaultNmapFilePath(uuid string) string

DefaultNmapFilePath returns the default nmap file full path

func DefaultResumeFilePath

func DefaultResumeFilePath() string

DefaultResumeFilePath returns the default resume file full path

func DefaultResumeFolderPath

func DefaultResumeFolderPath() string

DefaultResumeFolderPath returns the default resume folder path

func DoHealthCheck

func DoHealthCheck(options *Options, flagSet *goflags.FlagSet) string

func GetUpdateCallback

func GetUpdateCallback() func()

GetUpdateCallback returns a callback function that updates naabu

func ParsePorts

func ParsePorts(options *Options) ([]*port.Port, error)

ParsePorts parses the list of ports and creates a port map

func WriteCsvOutput

func WriteCsvOutput(host, ip string, ports []*port.Port, outputCDN bool, isCdn bool, cdnName string, header bool, writer io.Writer) error

WriteCsvOutput writes the output list of subdomain in csv format to an io.Writer

func WriteHostOutput

func WriteHostOutput(host string, ports []*port.Port, outputCDN bool, cdnName string, writer io.Writer) error

WriteHostOutput writes the output list of host ports to an io.Writer

func WriteJSONOutput

func WriteJSONOutput(host, ip string, ports []*port.Port, outputCDN bool, isCdn bool, cdnName string, writer io.Writer) error

WriteJSONOutput writes the output list of subdomain in JSON to an io.Writer

Types

type Options

type Options struct {
	Verbose        bool // Verbose flag indicates whether to show verbose output or not
	NoColor        bool // No-Color disables the colored output
	JSON           bool // JSON specifies whether to use json for output format or text file
	Silent         bool // Silent suppresses any extra text and only writes found host:port to screen
	Stdin          bool // Stdin specifies whether stdin input was given to the process
	Verify         bool // Verify is used to check if the ports found were valid using CONNECT method
	Version        bool // Version specifies if we should just show version and exit
	Ping           bool // Ping uses ping probes to discover fastest active host and discover dead hosts
	Debug          bool // Prints out debug information
	ExcludeCDN     bool // Excludes ip of knows CDN ranges for full port scan
	Nmap           bool // Invoke nmap detailed scan on results
	NmapOx         bool // Invoke nmap detailed scan on results
	NmapOj         bool // Invoke nmap detailed scan on results
	InterfacesList bool // InterfacesList show interfaces list

	Retries        int                 // Retries is the number of retries for the port
	Rate           int                 // Rate is the rate of port scan requests
	Timeout        int                 // Timeout is the seconds to wait for ports to respond
	WarmUpTime     int                 // WarmUpTime between scan phases
	Host           goflags.StringSlice // Host is the single host or comma-separated list of hosts to find ports for
	HostsFile      string              // HostsFile is the file containing list of hosts to find port for
	Output         string              // Output is the file to write found ports to.
	Ports          string              // Ports is the ports to use for enumeration
	PortsFile      string              // PortsFile is the file containing ports to use for enumeration
	ExcludePorts   string              // ExcludePorts is the list of ports to exclude from enumeration
	ExcludeIps     string              // Ips or cidr to be excluded from the scan
	ExcludeIpsFile string              // File containing Ips or cidr to exclude from the scan
	TopPorts       string              // Tops ports to scan
	PortThreshold  int                 // PortThreshold is the number of ports to find before skipping the host
	SourceIP       string              // SourceIP to use in TCP packets
	SourcePort     string              // Source Port to use in packets
	Interface      string              // Interface to use for TCP packets
	ConfigFile     string              // Config file contains a scan configuration
	NmapCLI        string              // Nmap command (has priority over config file)
	Threads        int                 // Internal worker threads
	// Deprecated: stats are automatically available through local endpoint
	EnableProgressBar bool // Enable progress bar
	// Deprecated: stats are automatically available through local endpoint (maybe used on cloud?)
	StatsInterval int                 // StatsInterval is the number of seconds to display stats after
	ScanAllIPS    bool                // Scan all the ips
	IPVersion     goflags.StringSlice // IP Version to use while resolving hostnames
	ScanType      string              // Scan Type
	Proxy         string              // Socks5 proxy
	ProxyAuth     string              // Socks5 proxy authentication (username:password)
	Resolvers     string              // Resolvers (comma separated or file)

	OnReceive         result.ResultFn     // 主机每个端口响应结果回调操作
	OnResult          result.ResultFn     // 每个主机所有端口结果回调操作
	OnNMAPCallback    result.NmapResultFn // 所有主机所有端口nmap结果回调操作
	CSV               bool
	Resume            bool
	ResumeCfg         *ResumeCfg
	Stream            bool
	Passive           bool
	OutputCDN         bool // display cdn in use
	HealthCheck       bool
	OnlyHostDiscovery bool // Perform only host discovery
	// Deprecated: use WithHostDiscovery instead
	SkipHostDiscovery bool // Skip Host discovery
	WithHostDiscovery bool // Enable Host discovery
	TcpSynPingProbes  goflags.StringSlice
	TcpAckPingProbes  goflags.StringSlice
	// UdpPingProbes               goflags.StringSlice - planned
	// STcpInitPingProbes          goflags.StringSlice - planned
	IcmpEchoRequestProbe        bool
	IcmpTimestampRequestProbe   bool
	IcmpAddressMaskRequestProbe bool
	// IpProtocolPingProbes        goflags.StringSlice - planned
	ArpPing                   bool
	IPv6NeighborDiscoveryPing bool
	// HostDiscoveryIgnoreRST      bool - planned
	InputReadTimeout time.Duration
	DisableStdin     bool
	// ServiceDiscovery enables service discovery on found open ports (matches port number with service)
	ServiceDiscovery bool
	// ServiceVersion attempts to discover service running on open ports with active/passive probes
	ServiceVersion bool
	// ReversePTR lookup for ips
	ReversePTR bool
	//DisableUpdateCheck disables automatic update check
	DisableUpdateCheck bool
	// MetricsPort with statistics
	MetricsPort int
	// contains filtered or unexported fields
}

Options contains the configuration options for tuning the port enumeration process. nolint:maligned // just an option structure

func ParseOptions

func ParseOptions() *Options

ParseOptions parses the command line flags provided by a user

func (*Options) ShouldLoadResume

func (options *Options) ShouldLoadResume() bool

ShouldLoadResume resume file

func (*Options) ShouldScanIPv4

func (options *Options) ShouldScanIPv4() bool

func (*Options) ShouldScanIPv6

func (options *Options) ShouldScanIPv6() bool

func (*Options) ValidateOptions

func (options *Options) ValidateOptions() error

ValidateOptions validates the configuration options passed

type Result

type Result struct {
	Host      string    `json:"host,omitempty" csv:"host"`
	IP        string    `json:"ip,omitempty" csv:"ip"`
	Port      int       `json:"port,omitempty" csv:"port"`
	Protocol  string    `json:"protocol,omitempty" csv:"protocol"`
	TLS       bool      `json:"tls,omitempty" csv:"tls"`
	IsCDN     bool      `json:"cdn,omitempty" csv:"cdn"`
	CDNName   string    `json:"cdn-name,omitempty" csv:"cdn-name"`
	TimeStamp time.Time `json:"timestamp,omitempty" csv:"timestamp"`
}

Result contains the result for a host

func (*Result) CSVFields

func (r *Result) CSVFields() ([]string, error)

func (*Result) CSVHeaders

func (r *Result) CSVHeaders() ([]string, error)

func (*Result) JSON

func (r *Result) JSON() ([]byte, error)

type ResumeCfg

type ResumeCfg struct {
	sync.RWMutex
	Retry int   `json:"retry"`
	Seed  int64 `json:"seed"`
	Index int64 `json:"index"`
}

ResumeCfg contains the scan progression

func NewResumeCfg

func NewResumeCfg() *ResumeCfg

NewResumeCfg creates a new scan progression structure

func (*ResumeCfg) CleanupResumeConfig

func (resumeCfg *ResumeCfg) CleanupResumeConfig()

CleanupResumeConfig cleaning up the config file

func (*ResumeCfg) ConfigureResume

func (resumeCfg *ResumeCfg) ConfigureResume() error

ConfigureResume read the resume config file

func (*ResumeCfg) SaveResumeConfig

func (resumeCfg *ResumeCfg) SaveResumeConfig() error

SaveResumeConfig to file

func (*ResumeCfg) ShouldSaveResume

func (resumeCfg *ResumeCfg) ShouldSaveResume() bool

ShouldSaveResume file

type Runner

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

Runner 端口枚举实例, 客户端用于编排整个过程。

func NewRunner

func NewRunner(options *Options) (*Runner, error)

NewRunner 通过解析创建新的runner结构实例配置选项、配置源、阅读列表等

func (*Runner) AddTarget

func (r *Runner) AddTarget(target string) error

func (*Runner) BackgroundWorkers

func (r *Runner) BackgroundWorkers(ctx context.Context)

func (*Runner) Close

func (r *Runner) Close()

Close runner instance

func (*Runner) ConnectVerification

func (r *Runner) ConnectVerification()

func (*Runner) GetTargetIps

func (r *Runner) GetTargetIps(ipsCallback func() ([]*net.IPNet, []string)) (targets, targetsV4, targetsV6 []*net.IPNet, targetsWithPort []string, err error)

func (*Runner) Load

func (r *Runner) Load() error

func (*Runner) PickIP

func (r *Runner) PickIP(targets []*net.IPNet, index int64) string

PickIP randomly

func (*Runner) PickPort

func (r *Runner) PickPort(index int) *port.Port

func (*Runner) PickSubnetIP

func (r *Runner) PickSubnetIP(network *net.IPNet, index int64) string

func (*Runner) PreProcessTargets

func (r *Runner) PreProcessTargets() error

func (*Runner) RawSocketEnumeration

func (r *Runner) RawSocketEnumeration(ctx context.Context, ip string, p *port.Port)

func (*Runner) RawSocketHostDiscovery

func (r *Runner) RawSocketHostDiscovery(ip string)

func (*Runner) RunEnumeration

func (r *Runner) RunEnumeration(pctx context.Context) error

RunEnumeration runs the ports enumeration flow on the targets specified

func (*Runner) SetInterface

func (r *Runner) SetInterface(interfaceName string) error

func (*Runner) SetSourceIP

func (r *Runner) SetSourceIP(sourceIP string) error

func (*Runner) SetSourcePort

func (r *Runner) SetSourcePort(sourcePort string) error

func (*Runner) ShowScanResultOnExit

func (r *Runner) ShowScanResultOnExit()

type Target

type Target struct {
	Ip   string
	Cidr string
	Fqdn string
	Port string
}

Jump to

Keyboard shortcuts

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