core

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2025 License: GPL-3.0 Imports: 41 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultFingerPath     = "fingers"
	DefaultFingerTemplate = "fingers/templates"

	FingerConfigs = map[string]string{
		fingers.FingersEngine:     "fingers_http.json.gz",
		fingers.FingerPrintEngine: "fingerprinthub_v3.json.gz",
		fingers.WappalyzerEngine:  "wappalyzer.json.gz",
		fingers.EHoleEngine:       "ehole.json.gz",
		fingers.GobyEngine:        "goby.json.gz",
	}
)
View Source
var (
	DefaultThreads = 20
)
View Source
var (
	MAX = 2147483647
)

Functions

func Format

func Format(opts Option)

func InitDefaultConfig

func InitDefaultConfig(cfg interface{}, indentLevel int) string

func LoadConfig

func LoadConfig(filename string, v interface{}) error

func PrintPreset

func PrintPreset()

Types

type FingerOptions

type FingerOptions struct {
	Finger       bool   `long:"finger" description:"Bool, enable active finger detect" config:"finger"`
	FingerUpdate bool   `long:"update" description:"Bool, update finger database" config:"update"`
	FingerPath   string `long:"finger-path" default:"fingers" description:"String, 3rd finger config path" config:"finger-path"`
	//FingersTemplatesPath string `long:"finger-template" default:"fingers/templates" description:"Bool, use finger templates path" config:"finger-template"`
	FingerEngines string `` /* 133-byte string literal not displayed */
}

func (*FingerOptions) LoadLocalFingerConfig

func (opt *FingerOptions) LoadLocalFingerConfig() error

func (*FingerOptions) UpdateFinger

func (opt *FingerOptions) UpdateFinger() error

func (*FingerOptions) Validate

func (opt *FingerOptions) Validate() error

type FunctionOptions

type FunctionOptions struct {
	Extensions        string            `short:"e" long:"extension" description:"String, add extensions (separated by commas), e.g.: -e jsp,jspx" config:"extension"`
	ForceExtension    bool              `long:"force-extension" description:"Bool, force add extensions" config:"force-extension"`
	ExcludeExtensions string            `` /* 150-byte string literal not displayed */
	RemoveExtensions  string            `` /* 146-byte string literal not displayed */
	Uppercase         bool              `short:"U" long:"uppercase" description:"Bool, upper wordlist, e.g.: --uppercase" config:"upper"`
	Lowercase         bool              `short:"L" long:"lowercase" description:"Bool, lower wordlist, e.g.: --lowercase" config:"lower"`
	Prefixes          []string          `long:"prefix" description:"Strings, add prefix, e.g.: --prefix aaa --prefix bbb" config:"prefix"`
	Suffixes          []string          `long:"suffix" description:"Strings, add suffix, e.g.: --suffix aaa --suffix bbb" config:"suffix"`
	Replaces          map[string]string `long:"replace" description:"Strings, replace string, e.g.: --replace aaa:bbb --replace ccc:ddd" config:"replace"`
	Skips             []string          `long:"skip" description:"String, skip word when generate. rule, e.g.: --skip aaa" config:"skip"`
}

type InputOptions

type InputOptions struct {
	ResumeFrom   string   `long:"resume" description:"File, resume filename" `
	Config       string   `short:"c" long:"config" description:"File, config filename"`
	URL          []string `short:"u" long:"url" description:"Strings, input baseurl, e.g.: http://google.com"`
	URLFile      string   `short:"l" long:"list" description:"File, input filename"`
	PortRange    string   `short:"p" long:"port" description:"String, input port range, e.g.: 80,8080-8090,db"`
	CIDRs        []string `short:"i" long:"cidr" description:"String, input cidr, e.g.: 1.1.1.1/24 "`
	RawFile      string   `long:"raw" description:"File, input raw request filename"`
	Dictionaries []string `short:"d" long:"dict" description:"Files, Multi,dict files, e.g.: -d 1.txt -d 2.txt" config:"dictionaries"`
	DefaultDict  bool     `short:"D" long:"default" description:"Bool, use default dictionary" config:"default"`
	Word         string   `short:"w" long:"word" description:"String, word generate dsl, e.g.: -w test{?ld#4}" config:"word"`
	Rules        []string `short:"r" long:"rules" description:"Files, rule files, e.g.: -r rule1.txt -r rule2.txt" config:"rules"`
	AppendRule   []string `` /* 138-byte string literal not displayed */
	FilterRule   string   `long:"filter-rule" description:"String, filter rule, e.g.: --rule-filter '>8 <4'" config:"filter-rule"`
	AppendFile   []string `long:"append" description:"Files, when found valid path , use append file new word with current path" config:"append-files"`
	Offset       int      `long:"offset" description:"Int, wordlist offset"`
	Limit        int      `long:"limit" description:"Int, wordlist limit, start with offset. e.g.: --offset 1000 --limit 100"`
}

type MiscOptions

type MiscOptions struct {
	Mod         string   `short:"m" long:"mod" default:"path" choice:"path" choice:"host" description:"String, path/host spray" config:"mod"`
	Client      string   ``                                                                                         /* 134-byte string literal not displayed */
	Deadline    int      `long:"deadline" default:"999999" description:"Int, deadline (seconds)" config:"deadline"` // todo 总的超时时间,适配云函数的deadline
	Timeout     int      `short:"T" long:"timeout" default:"5" description:"Int, timeout with request (seconds)" config:"timeout"`
	PoolSize    int      `short:"P" long:"pool" default:"5" description:"Int, Pool size" config:"pool"`
	Threads     int      `short:"t" long:"thread" default:"20" description:"Int, number of threads per pool" config:"thread"`
	Debug       bool     `long:"debug" description:"Bool, output debug info" config:"debug"`
	Version     bool     `long:"version" description:"Bool, show version"`
	Verbose     []bool   `short:"v" description:"Bool, log verbose level ,default 0, level1: -v level2 -vv " config:"verbose"`
	Proxies     []string `long:"proxy" description:"String, proxy address, e.g.: --proxy socks5://127.0.0.1:1080" config:"proxies"`
	InitConfig  bool     `long:"init" description:"Bool, init config file"`
	PrintPreset bool     `long:"print" description:"Bool, print preset all preset config "`
}

type ModeOptions

type ModeOptions struct {
	RateLimit       int      `long:"rate-limit" default:"0" description:"Int, request rate limit (rate/s), e.g.: --rate-limit 100" config:"rate-limit"`
	Force           bool     `long:"force" description:"Bool, skip error break" config:"force"`
	NoScope         bool     `long:"no-scope" description:"Bool, no scope" config:"no-scope"`
	Scope           []string `long:"scope" description:"String, custom scope, e.g.: --scope *.example.com" config:"scope"`
	Recursive       string   `` /* 139-byte string literal not displayed */
	Depth           int      `long:"depth" default:"0" description:"Int, recursive depth" config:"depth"`
	Index           string   `long:"index" default:"/" description:"String, custom index path" config:"index"`
	Random          string   `long:"random" default:"" description:"String, custom random path" config:"random"`
	CheckPeriod     int      `long:"check-period" default:"200" description:"Int, check period when request" config:"check-period"`
	ErrPeriod       int      `long:"error-period" default:"10" description:"Int, check period when error" config:"error-period"`
	BreakThreshold  int      `long:"error-threshold" default:"20" description:"Int, break when the error exceeds the threshold" config:"error-threshold"`
	BlackStatus     string   `long:"black-status" default:"400,410" description:"Strings (comma split),custom black status" config:"black-status"`
	WhiteStatus     string   `long:"white-status" default:"200" description:"Strings (comma split), custom white status" config:"white-status"`
	FuzzyStatus     string   `` /* 136-byte string literal not displayed */
	UniqueStatus    string   `long:"unique-status" default:"403,200,404" description:"Strings (comma split), custom unique status" config:"unique-status"`
	Unique          bool     `long:"unique" description:"Bool, unique response" config:"unique"`
	RetryCount      int      `long:"retry" default:"0" description:"Int, retry count" config:"retry"`
	SimhashDistance int      `long:"sim-distance" default:"8" config:"sim-distance"`
}

type Option

type Option struct {
	InputOptions    `group:"Input Options" config:"input" `
	FunctionOptions `group:"Function Options" config:"functions" `
	OutputOptions   `group:"Output Options" config:"output"`
	PluginOptions   `group:"Plugin Options" config:"plugins"`
	FingerOptions   `group:"Finger Options" config:"finger"`
	RequestOptions  `group:"Request Options" config:"request"`
	ModeOptions     `group:"Modify Options" config:"mode"`
	MiscOptions     `group:"Miscellaneous Options" config:"misc"`
}

func (*Option) BuildPlugin

func (opt *Option) BuildPlugin(r *Runner) error

func (*Option) BuildTasks

func (opt *Option) BuildTasks(r *Runner) (*TaskGenerator, error)

func (*Option) BuildWords

func (opt *Option) BuildWords(r *Runner) error

func (*Option) NewRunner

func (opt *Option) NewRunner() (*Runner, error)

func (*Option) Prepare

func (opt *Option) Prepare() error

func (*Option) PrintConfig

func (opt *Option) PrintConfig(r *Runner) string

func (*Option) Validate

func (opt *Option) Validate() error

type Origin

type Origin struct {
	*pkg.Statistor
	// contains filtered or unexported fields
}

func NewOrigin

func NewOrigin(stat *pkg.Statistor) *Origin

func (*Origin) InitWorder

func (o *Origin) InitWorder(fns []words.WordFunc) (*words.Worder, error)

type OutputOptions

type OutputOptions struct {
	Match       string `long:"match" description:"String, custom match function, e.g.: --match 'current.Status != 200''" config:"match" `
	Filter      string `long:"filter" description:"String, custom filter function, e.g.: --filter 'current.Body contains \"hello\"'" config:"filter"`
	Fuzzy       bool   `long:"fuzzy" description:"String, open fuzzy output" config:"fuzzy"`
	OutputFile  string `short:"f" long:"file" description:"String, output filename" json:"output_file,omitempty" config:"output-file"`
	DumpFile    string `long:"dump-file" description:"String, dump all request, and write to filename" config:"dump-file"`
	Dump        bool   `long:"dump" description:"Bool, dump all request" config:"dump"`
	AutoFile    bool   `long:"auto-file" description:"Bool, auto generator output and fuzzy filename" config:"auto-file"`
	Format      string `short:"F" long:"format" description:"String, output format, e.g.: --format 1.json" config:"format"`
	Json        bool   `short:"j" long:"json" description:"Bool, output json" config:"json"`
	FileOutput  string `short:"O" long:"file-output" default:"json" description:"Bool, file output format" config:"file_output"`
	OutputProbe string `short:"o" long:"probe" description:"String, output format" config:"output"`
	Quiet       bool   `short:"q" long:"quiet" description:"Bool, Quiet" config:"quiet"`
	NoColor     bool   `long:"no-color" description:"Bool, no color" config:"no-color"`
	NoBar       bool   `long:"no-bar" description:"Bool, No progress bar" config:"no-bar"`
	NoStat      bool   `long:"no-stat" description:"Bool, No stat file output" config:"no-stat"`
}

type PluginOptions

type PluginOptions struct {
	Advance       bool     `short:"a" long:"advance" description:"Bool, enable all plugin" config:"all" `
	Extracts      []string `` /* 128-byte string literal not displayed */
	ExtractConfig string   `long:"extract-config" description:"String, extract config filename" config:"extract-config"`
	ActivePlugin  bool     `long:"active" description:"Bool, enable active finger path"`
	ReconPlugin   bool     `long:"recon" description:"Bool, enable recon" config:"recon"`
	BakPlugin     bool     `long:"bak" description:"Bool, enable bak found" config:"bak"`
	CommonPlugin  bool     `long:"common" description:"Bool, enable common file found" config:"common"`
	CrawlPlugin   bool     `long:"crawl" description:"Bool, enable crawl" config:"crawl"`
	CrawlDepth    int      `long:"crawl-depth" default:"3" description:"Int, crawl depth" config:"crawl-depth"`
	AppendDepth   int      `long:"append-depth" default:"2" description:"Int, append depth" config:"append-depth"`
}

type RequestOptions

type RequestOptions struct {
	Method          string   `short:"X" long:"method" default:"GET" description:"String, request method, e.g.: --method POST" config:"method"`
	Headers         []string `short:"H" long:"header" description:"Strings, custom headers, e.g.: --header 'Auth: example_auth'" config:"headers"`
	UserAgent       string   `long:"user-agent" description:"String, custom user-agent, e.g.: --user-agent Custom" config:"useragent"`
	RandomUserAgent bool     `long:"random-agent" description:"Bool, use random with default user-agent" config:"random-useragent"`
	Cookie          []string `long:"cookie" description:"Strings, custom cookie" config:"cookies"`
	ReadAll         bool     `long:"read-all" description:"Bool, read all response body" config:"read-all"`
	MaxBodyLength   int64    `` /* 168-byte string literal not displayed */
}

type Runner

type Runner struct {
	*Option

	ProxyClient   proxyclient.Dial
	IsCheck       bool
	Pools         *ants.PoolWithFunc
	PoolName      map[string]bool
	Tasks         *TaskGenerator
	Rules         *rule.Program
	AppendRules   *rule.Program
	Headers       map[string]string
	FilterExpr    *vm.Program
	MatchExpr     *vm.Program
	RecursiveExpr *vm.Program
	OutputFile    *files.File
	//FuzzyFile     *files.File
	DumpFile    *files.File
	StatFile    *files.File
	Progress    *mpb.Progress
	Fns         []words.WordFunc
	Count       int // tasks total number
	Wordlist    []string
	AppendWords []string
	ClientType  int
	Probes      []string
	Total       int // wordlist total number
	Color       bool
	Jsonify     bool
	// contains filtered or unexported fields
}

func (*Runner) AddPool

func (r *Runner) AddPool(task *Task)

func (*Runner) AddRecursive

func (r *Runner) AddRecursive(bl *baseline.Baseline)

func (*Runner) AppendFunction

func (r *Runner) AppendFunction(fn func(string) []string)

func (*Runner) Done

func (r *Runner) Done()

func (*Runner) Output

func (r *Runner) Output(bl *baseline.Baseline)

func (*Runner) OutputHandler

func (r *Runner) OutputHandler()

func (*Runner) Prepare

func (r *Runner) Prepare(ctx context.Context) error

func (*Runner) PrepareConfig

func (r *Runner) PrepareConfig() *pool.Config

func (*Runner) PrintStat

func (r *Runner) PrintStat(pool *pool.BrutePool)

func (*Runner) Run

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

func (*Runner) RunWithCheck

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

type Task

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

type TaskGenerator

type TaskGenerator struct {
	Name string

	In chan *Task
	// contains filtered or unexported fields
}

func NewTaskGenerator

func NewTaskGenerator(port string) *TaskGenerator

func (*TaskGenerator) Close

func (gen *TaskGenerator) Close()

func (*TaskGenerator) Run

func (gen *TaskGenerator) Run(baseurl string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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