runner

package
v2.3.4 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2025 License: MIT Imports: 53 Imported by: 11

Documentation

Index

Constants

View Source
const (
	DefaultPortTimeoutSynScan     = time.Second
	DefaultPortTimeoutConnectScan = time.Duration(5 * time.Second)

	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 */
)

List of default ports

Variables

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

Functions

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
	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 milliseconds to wait for ports to respond
	Timeout        time.Duration
	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)

	OnResult          result.ResultFn // callback on final host result
	OnReceive         result.ResultFn // callback on response receive
	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"`
	IsCDNIP   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 is an instance of the port enumeration client used to orchestrate the whole process.

func NewRunner

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

NewRunner creates a new runner struct instance by parsing the configuration options, configuring sources, reading lists, etc

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