pkg

package
v2.15.0 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2026 License: GPL-3.0 Imports: 32 Imported by: 2

Documentation

Index

Constants

View Source
const (
	SMART       = "s"       // 使用port-probe探测存活的c段, 递归下降到default
	SUPERSMART  = "ss"      // 使用ip-probe探测存活的b段, 递归下降到s
	SUPERSMARTC = "sb"      // 使用port-probe探测到c段后退出
	SUPERSMARTB = "sc"      // 使用ip-probe探测存活的b段,. 递归下降到sb
	Default     = "default" // 扫描完后退出
)

Variables

View Source
var (
	HttpTimeout time.Duration

	// DefaultTransport 仅作为不可变的默认配置参考保留;运行时不再被改写,
	// 也不再作为客户端共享 transport(每次构造经 utils/httpx 返回全新实例,
	// 确保并发下不同代理互不干扰)。
	DefaultTransport = &http.Transport{
		TLSClientConfig: &tls.Config{
			MinVersion:         tls.VersionTLS10,
			Renegotiation:      tls.RenegotiateOnceAsClient,
			InsecureSkipVerify: true,
		},
		MaxIdleConnsPerHost: 1,
		MaxIdleConns:        4000,
		DisableKeepAlives:   false,
	}
)
View Source
var (
	FingerEngine         *fingers.FingersEngine
	FingerprintHubEngine *fingerprinthub.FingerPrintHubEngine
	Extractor            []*parsers.Extractor
	Extractors           = make(parsers.Extractors)
	ExtractRegexps       = map[string][]*parsers.Extractor{}
)
View Source
var (
	TemplateMap map[string][]*templates.Template
	ChainExec   *templates.ChainExecutor
)
View Source
var (
	Win            = iutils.IsWin()
	Mac            = iutils.IsMac()
	Root           = iutils.IsRoot()
	DefaultMaxSize = 1024 * 16 // 16k
)
View Source
var DefaultConfig = Config{
	GOGOConfig: &parsers.GOGOConfig{
		Ports: "top1",
		Mod:   Default,
	},
	RunnerOpt: DefaultRunnerOption,

	PortProbe:   "default",
	IpProbe:     "default",
	IpProbeList: []uint{1, 254},

	Compress:        true,
	Outputf:         "full",
	FileOutputf:     "default",
	OutputDelimiter: "\t",
}

DefaultConfig 包含所有默认值的配置实例 基于 options.go 中的默认值和 runner.go 中的 PrepareConfig 方法

View Source
var DefaultRunnerOption = &RunnerOption{
	Exploit:      "none",
	VersionLevel: 0,
	Delay:        2,
	HttpsDelay:   2,
	ScanFilters:  nil,
	Debug:        false,
	Opsec:        false,
	ExcludeCIDRs: nil,
}
View Source
var ExecuterOptions *protocols.ExecuterOptions = &protocols.ExecuterOptions{
	Options: &protocols.Options{
		Timeout: 5,
	},
}
View Source
var PortStat = map[int]string{
	0:  "open",
	1:  "closed",
	2:  "filtered|closed",
	3:  "noroute",
	4:  "denied",
	5:  "down",
	6:  "error_host",
	7:  "icmp",
	8:  "rst",
	-1: "unknown",
}

return open: 0, closed: 1, filtered: 2, noroute: 3, denied: 4, down: 5, error_host: 6, unkown: -1

View Source
var RandomDir = "/g8kZMwp4oeKsL2in"

Functions

func CleanSpiltCFLR added in v2.10.4

func CleanSpiltCFLR(s string) []string

func CollectHttpResponse added in v2.12.2

func CollectHttpResponse(result *Result, resp *http.Response)

func CollectParsedResponse added in v2.12.2

func CollectParsedResponse(result *Result, resp *httputils.Response)

func CollectSocketResponse added in v2.12.2

func CollectSocketResponse(result *Result, socketContent []byte)

func CollectTLS added in v2.12.2

func CollectTLS(result *Result, resp *http.Response)

func Decode

func Decode(input string) []byte

func FormatCertDomains

func FormatCertDomains(domains []string) []string

func GetFilename

func GetFilename(config *Config, name string) string

func GetStatusCode

func GetStatusCode(content []byte) (bool, string)

GetStatusCode 从socket中获取http状态码

func HTTPGet added in v2.13.2

func HTTPGet(client *http.Client, url string) (*http.Response, error)

func HasPingPriv

func HasPingPriv() bool

func HasTLS added in v2.15.0

func HasTLS(resp *http.Response) bool

func HttpConn

func HttpConn(delay int) *http.Client

func HttpConnWithDialer added in v2.15.0

func HttpConnWithDialer(delay int, dialContext func(ctx context.Context, network, address string) (net.Conn, error)) *http.Client

HttpConnWithDialer 创建一个 http.Client。dialContext 非 nil 时作为 Transport 的 DialContext(用于代理)。每次返回全新实例,不读写任何全局状态。

func HttpConnWithNoRedirect added in v2.11.3

func HttpConnWithNoRedirect(delay int) *http.Client

func HttpConnWithNoRedirectWithDialer added in v2.15.0

func HttpConnWithNoRedirectWithDialer(delay int, dialContext func(ctx context.Context, network, address string) (net.Conn, error)) *http.Client

HttpConnWithNoRedirectWithDialer 同 HttpConnWithDialer,但禁止重定向。

func LoadConfig

func LoadConfig(typ string) []byte

LoadConfig loads config bytes from the external provider first, then from the embedded templates kept for standalone gogo compatibility.

func LoadEmbeddedConfig added in v2.15.0

func LoadEmbeddedConfig(typ string) []byte

LoadEmbeddedConfig loads the standalone embedded config without consulting an installed external provider.

func LoadExtractor added in v2.10.4

func LoadExtractor() error

func LoadFinger

func LoadFinger(fileutils []string) error

LoadFinger 加载指纹到全局变量

func LoadNeutron added in v2.10.7

func LoadNeutron(filename string) (map[string][]*templates.Template, error)

func LoadPortConfig

func LoadPortConfig(portConfig string) error

func LoadResource added in v2.13.8

func LoadResource(url string) ([]byte, error)

func LoadResources added in v2.15.0

func LoadResources() error

LoadResources executes the configured resource loader. Returns nil immediately if an external loader was set (e.g. SDK already loaded resources).

func LoadResultFile

func LoadResultFile(file io.Reader) interface{}

func LoadTemplates

func LoadTemplates(content []byte) (map[string][]*templates.Template, error)

func ParserCmdPayload

func ParserCmdPayload(payloads []string) map[string]interface{}

func ResetResourceProvider added in v2.15.0

func ResetResourceProvider()

ResetResourceProvider removes the external template/config provider.

func SetResourceLoader added in v2.15.0

func SetResourceLoader(fn func() error)

SetResourceLoader overrides the default resource loading strategy. Pass nil to restore default behavior.

func SetResourceProvider added in v2.15.0

func SetResourceProvider(provider ResourceProvider)

SetResourceProvider installs an external template/config provider.

func WriteSmartResult

func WriteSmartResult(file *fileutils.File, target string, ips []string)

Types

type Config

type Config struct {
	*parsers.GOGOConfig
	RunnerOpt *RunnerOption `json:"-"`
	// ip
	CIDRs    utils.CIDRs `json:"-"`
	Excludes utils.CIDRs `json:"-"`
	// port and probe
	//Ports         string   `json:"ports"` // 预设字符串
	PortList      []string `json:"-"` // 处理完的端口列表
	PortProbe     string   `json:"-"` // 启发式扫描预设探针
	PortProbeList []string `json:"-"` // 启发式扫描预设探针
	IpProbe       string   `json:"-"`
	IpProbeList   []uint   `json:"-"`

	// file
	IsListInput bool `json:"-"` // 从标准输入中读
	IsJsonInput bool `json:"-"` // 从标准输入中读
	NoSpray     bool `json:"-"`
	Compress    bool `json:"-"`

	// output
	FilePath        string              `json:"-"`
	Filename        string              `json:"-"`
	SmartBFilename  string              `json:"-"`
	SmartCFilename  string              `json:"-"`
	AlivedFilename  string              `json:"-"`
	File            *fileutils.File     `json:"-"`
	SmartBFile      *fileutils.File     `json:"-"`
	SmartCFile      *fileutils.File     `json:"-"`
	AliveFile       *fileutils.File     `json:"-"`
	FileSync        func()              `json:"-"`
	Tee             bool                `json:"-"`
	Outputf         string              `json:"-"`
	FileOutputf     string              `json:"-"`
	OutputDelimiter string              `json:"-"`
	Filenamef       string              `json:"-"`
	Results         parsers.GOGOResults `json:"-"` // json反序列化后的,保存在内存中
	HostsMap        map[string][]string `json:"-"` // host映射表
	Filters         []string            `json:"-"`
	FilterOr        bool                `json:"-"`
	OutputFilters   [][]string          `json:"-"`
	ResultCallback  func(*Result)       `json:"-"`

	Ctx context.Context `json:"-"`
}

func NewDefaultConfig added in v2.14.1

func NewDefaultConfig(opt *RunnerOption) Config

func (*Config) Close

func (config *Config) Close()

func (*Config) Context added in v2.15.0

func (config *Config) Context() context.Context

func (*Config) ExcludeCIDRs added in v2.13.6

func (config *Config) ExcludeCIDRs(cidrs utils.CIDRs) utils.CIDRs

func (*Config) GetTarget

func (config *Config) GetTarget() string

func (*Config) GetTargetName

func (config *Config) GetTargetName() string

func (*Config) HasAlivedScan

func (config *Config) HasAlivedScan() bool

func (*Config) InitFile

func (config *Config) InitFile() error

func (*Config) InitIP

func (config *Config) InitIP() error

func (*Config) IsBSmart

func (config *Config) IsBSmart() bool

func (*Config) IsCSmart added in v2.8.10

func (config *Config) IsCSmart() bool

func (*Config) IsScan

func (config *Config) IsScan() bool

func (*Config) IsSmart

func (config *Config) IsSmart() bool

func (*Config) SyncFile added in v2.15.0

func (config *Config) SyncFile()

func (*Config) ToJson

func (config *Config) ToJson(json_type string) string

func (*Config) ToWorkflow added in v2.14.1

func (config *Config) ToWorkflow() *Workflow

func (*Config) Validate

func (config *Config) Validate() error

type PortMapResult added in v2.10.5

type PortMapResult map[string]*parsers.GOGOResult

func (PortMapResult) Get added in v2.10.5

func (imap PortMapResult) Get(port string) *parsers.GOGOResult

type ResourceProvider added in v2.15.0

type ResourceProvider func(string) []byte

ResourceProvider supplies template/config bytes by logical name.

type Result

type Result struct {
	*parsers.GOGOResult
	HttpHosts   []string `json:"-"`
	CurrentHost string   `json:"-"`

	IsHttp     bool                `json:"-"`
	Filtered   bool                `json:"-"`
	Open       bool                `json:"-"`
	SmartProbe bool                `json:"-"`
	TcpConn    *net.Conn           `json:"-"`
	HttpConn   *http.Client        `json:"-"`
	Httpresp   *httputils.Response `json:"-"`
	HasTitle   bool                `json:"-"`
	Err        error               `json:"-"`
	Error      string              `json:"-"`
	ErrStat    int                 `json:"-"`
	Content    []byte              `json:"-"`
}

func NewResult

func NewResult(ip, port string) *Result

func (*Result) AddExtract

func (result *Result) AddExtract(extract *parsers.Extracted)

func (*Result) AddExtracts

func (result *Result) AddExtracts(extracts []*parsers.Extracted)

func (*Result) AddFramework

func (result *Result) AddFramework(f *common.Framework)

func (*Result) AddFrameworks

func (result *Result) AddFrameworks(fs []*common.Framework)

func (*Result) AddNTLMInfo

func (result *Result) AddNTLMInfo(m map[string]string, t string)

func (*Result) AddVuln

func (result *Result) AddVuln(vuln *common.Vuln)

func (*Result) AddVulns

func (result *Result) AddVulns(vulns []*common.Vuln)

func (*Result) AddVulnsAndFrameworks added in v2.12.1

func (result *Result) AddVulnsAndFrameworks(fs common.Frameworks, vs common.Vulns)

func (*Result) Filter

func (result *Result) Filter(rules [][]string) bool

func (*Result) GetHostBaseURL

func (result *Result) GetHostBaseURL() string

func (*Result) GetHostURL

func (result *Result) GetHostURL() string

func (*Result) GetHttpConn

func (result *Result) GetHttpConn(delay int) *http.Client

func (*Result) GetHttpConnWithOpt added in v2.15.0

func (result *Result) GetHttpConnWithOpt(delay int, opt *RunnerOption) *http.Client

GetHttpConnWithOpt 在 opt 配置了实例级 proxy 时返回带代理 DialContext 的 http.Client(每次新建以隔离不同任务的代理),否则回退到 GetHttpConn 的 缓存逻辑。

func (*Result) GuessFramework

func (result *Result) GuessFramework()

func (*Result) IsHttps

func (result *Result) IsHttps() bool

func (*Result) String added in v2.11.8

func (result *Result) String() string

func (*Result) ToContent added in v2.12.4

func (result *Result) ToContent() *fingers.Content

type ResultsData

type ResultsData struct {
	*parsers.GOGOData
}

func (*ResultsData) GetConfig added in v2.9.0

func (rd *ResultsData) GetConfig() *Config

func (*ResultsData) ToCobaltStrike

func (rd *ResultsData) ToCobaltStrike() string

func (*ResultsData) ToExtracteds added in v2.9.0

func (rd *ResultsData) ToExtracteds() string

func (*ResultsData) ToFormat

func (rd *ResultsData) ToFormat(isColor bool) string

type RunnerOption added in v2.14.1

type RunnerOption struct {
	Exploit      string
	VersionLevel int
	Delay        int
	HttpsDelay   int
	ScanFilters  [][]string
	//SuffixStr    string
	Debug        bool
	Opsec        bool // enable opsec
	ExcludeCIDRs utils.CIDRs

	// 实例级 proxy 支持。为 nil 时表示不使用代理(直连),并回退到全局
	// ProxyDialTimeout / DefaultTransport(保持 CLI 行为)。
	// SDK 通过设置这两个字段实现 per-instance / per-task 代理控制。
	ProxyDialTimeout func(network, address string, timeout time.Duration) (net.Conn, error)
	ProxyDialContext func(ctx context.Context, network, address string) (net.Conn, error)
}

type SmartResult added in v2.11.0

type SmartResult struct {
	Config *Config
	Data   map[string][]string `json:"data"`
}

func (*SmartResult) List added in v2.11.0

func (sr *SmartResult) List() []string

type Socket

type Socket = httpx.Socket

Socket 复用 utils/httpx 的统一实现,消除与 zombie 的重复定义。

func NewSocket

func NewSocket(network, target string, delay int) (*Socket, error)

func NewSocketWithDialer added in v2.15.0

func NewSocketWithDialer(network, target string, delay int, dialTimeout func(string, string, time.Duration) (net.Conn, error)) (*Socket, error)

NewSocketWithDialer 使用指定的 dialTimeout 创建 Socket。dialTimeout 为 nil 时 直连(net.DialTimeout)。SDK 通过传入 opt.ProxyDialTimeout 实现实例级 / 单任务级代理控制——不再依赖任何包级全局,天然并发安全。

type Workflow

type Workflow struct {
	Name        string   `json:"name" yaml:"name"`
	Description string   `json:"description" yaml:"description"`
	IP          string   `json:"ip" yaml:"ip"`
	IPlist      []string `json:"iplist" yaml:"iplist"`
	Ports       string   `json:"ports" yaml:"ports"`
	Mod         string   `json:"mod" yaml:"mod"`
	Ping        bool     `json:"ping" yaml:"ping"`
	NoScan      bool     `json:"no-scan" yaml:"no-scan"`
	IpProbe     string   `json:"ip-probe" yaml:"ip-probe"`
	PortProbe   string   `json:"port-probe" yaml:"port-probe"`
	Exploit     string   `json:"exploit" yaml:"exploit"`
	Verbose     int      `json:"verbose" yaml:"verbose"`
	File        string   `json:"file" yaml:"file"`
	Path        string   `json:"path" yaml:"path"`
	Tags        []string `json:"tags" yaml:"tags"`
}

func ParseWorkflowsFromInput

func ParseWorkflowsFromInput(content []byte) ([]*Workflow, error)

func (*Workflow) Marshal added in v2.14.1

func (w *Workflow) Marshal() string

func (*Workflow) PrepareConfig

func (w *Workflow) PrepareConfig(rconfig Config) *Config

type WorkflowMap

type WorkflowMap map[string][]*Workflow

func LoadWorkFlow

func LoadWorkFlow() (WorkflowMap, error)

func (WorkflowMap) Choice

func (m WorkflowMap) Choice(name string) []*Workflow

Jump to

Keyboard shortcuts

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