Documentation ¶
Index ¶
- func ConfigureHTTPClient(sendToBurpOnly bool) *http.Client
- func HTTPReq(method, path string, client *http.Client) (resp *http.Response, err error)
- func InitLogger(good2Handle io.Writer, good3Handle io.Writer, good4Handle io.Writer, ...)
- func LoadWords(filePath string, destChan chan string)
- func ManageNewURLs()
- func ManageRequests()
- func OutputWriter(localPath string)
- func PrintBanner()
- func PrintOutput(message string, writer *ConsoleWriter, verboseLevel int)
- func RandString() string
- func RedirectHandler(req *http.Request, via []*http.Request) error
- func SetState(s *State)
- func SetupState(globalState *State)
- func StartBusting(randURL string, u url.URL)
- func StatsTracker()
- func StatusPrinter()
- func StopUI()
- func UIPrinter()
- type ArrayStringFlag
- type Config
- type ConsoleWriter
- func (c *ConsoleWriter) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
- func (c ConsoleWriter) GetPrefix() string
- func (ConsoleWriter) New(w io.Writer, prefix string) *ConsoleWriter
- func (c *ConsoleWriter) Output(calldepth int, s string) error
- func (c *ConsoleWriter) Printf(format string, v ...interface{})
- func (c *ConsoleWriter) Println(v ...interface{})
- type HostState
- type HostStates
- func (hs *HostStates) AddHost(u *url.URL)
- func (hs *HostStates) AddSoft404Content(host string, content []byte, h *http.Response)
- func (hs *HostStates) Get404(host string) *http.Response
- func (hs *HostStates) Get404Body(host string) []byte
- func (hs HostStates) HostExists(hval string) bool
- func (hs *HostStates) Init()
- type OutLine
- type SpiderPage
- type State
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConfigureHTTPClient ¶
ConfigureHTTPClient configures and returns a HTTP Client (mostly useful to be able to send to burp)
func HTTPReq ¶
HTTPReq sends the HTTP request based on the given settings, returns the response and the body todo: This can probably be optimized to exit once the head has been retreived and discard the body
func InitLogger ¶
func InitLogger( good2Handle io.Writer, good3Handle io.Writer, good4Handle io.Writer, good5Handle io.Writer, goodxHandle io.Writer, infoHandle io.Writer, debugHandle io.Writer, warningHandle io.Writer, statusHandle io.Writer, errorHandle io.Writer)
InitLogger initialises the output writer stuff
func LoadWords ¶
LoadWords asynchronously loads in words to a channel. Expects the channel to either be big enough to load the whole file, or that it will be streamed from as the file is opened and read from.
func ManageNewURLs ¶
func ManageNewURLs()
ManageNewURLs will take in any URL, and decide if it should be added to the queue for bustin', or if we discovered something new
func OutputWriter ¶
func OutputWriter(localPath string)
OutputWriter will write to a file and the screen
func PrintBanner ¶
func PrintBanner()
PrintBanner prints the banner and in debug mode will also print all set options
func PrintOutput ¶
func PrintOutput(message string, writer *ConsoleWriter, verboseLevel int)
PrintOutput used to send output to the screen
func RedirectHandler ¶
RedirectHandler dictates the way to handle redirects.
func SetState ¶ added in v1.5.0
func SetState(s *State)
SetState will assign the global state object
func SetupState ¶ added in v1.5.9
func SetupState(globalState *State)
SetupState will perform all the basic state setup functions (adding URL's to the blacklist etc)
func StartBusting ¶ added in v1.5.7
StartBusting will add a suppllied url to the queue to be tested
func StatusPrinter ¶
func StatusPrinter()
StatusPrinter is the function that performs all the status printing logic
Types ¶
type ArrayStringFlag ¶
type ArrayStringFlag []string
ArrayStringFlag is used to be able to supply more than one flag at the command line (for the -header option)
func (*ArrayStringFlag) Get ¶
func (i *ArrayStringFlag) Get() []string
Get the Values stored (required for the interface)
func (*ArrayStringFlag) Set ¶
func (i *ArrayStringFlag) Set(value string) error
Set the value. Appends to the current state. (required for the interface)
func (*ArrayStringFlag) String ¶
func (i *ArrayStringFlag) String() string
type Config ¶
type Config struct { Agent string Ajax bool AppendDir bool Auth string BadResponses string BadHeader ArrayStringFlag BodyContent string BlacklistLocation string BurpMode bool Canary string CleanOutput bool Cookies string Debug bool Extensions string FollowRedirects bool Headers ArrayStringFlag HTTPS bool InputList string Localpath string //MaxDirs int Methods string NoBase bool NoGet bool NoHead bool NoRecursion bool NoSpider bool NoStatus bool NoStartStop bool NoUI bool NoWildcardChecks bool ProxyAddr string Ratio404 float64 ShowAll bool ShowLen bool ShowVersion bool SSLIgnore bool Threads int Timeout int URL string VerboseLevel int Version string WhitelistLocation string Wordlist string }
Config represents the configuration supplied at runtime. Different to program State which can change, this is set once, and only queried during program operation.
type ConsoleWriter ¶
type ConsoleWriter struct {
// contains filtered or unexported fields
}
ConsoleWriter is pretty much a straight rip from the go project's log writer, but modified as needed https://golang.org/src/log/log.go
var ( Good2 *ConsoleWriter //*log.Logger Good3 *ConsoleWriter //*log.Logger Good4 *ConsoleWriter //*log.Logger Good5 *ConsoleWriter //*log.Logger Goodx *ConsoleWriter //*log.Logger Info *ConsoleWriter Debug *ConsoleWriter Error *ConsoleWriter Status *ConsoleWriter )
All the ConsoleWriter stuff can probably be abstracted into an interface :thinkingemoji:
func (*ConsoleWriter) Fprintf ¶ added in v1.5.0
Fprintf is a helper function, will write the format (time etc) using the the supplied writer
func (ConsoleWriter) GetPrefix ¶ added in v1.5.0
func (c ConsoleWriter) GetPrefix() string
GetPrefix returns the prefix unfiltered
func (ConsoleWriter) New ¶
func (ConsoleWriter) New(w io.Writer, prefix string) *ConsoleWriter
New creates a new Console writer. The prefix appears at the beginning of each generated log line.
func (*ConsoleWriter) Output ¶
func (c *ConsoleWriter) Output(calldepth int, s string) error
Output writes the output for an event. The string s contains the text to print after the prefix specified by the flags of the Logger. A newline is appended if the last character of s is not already a newline. Calldepth is used to recover the PC and is provided for generality, although at the moment on all pre-defined paths it will be 2.
func (*ConsoleWriter) Printf ¶
func (c *ConsoleWriter) Printf(format string, v ...interface{})
Printf calls l.Output to print to the logger. Arguments are handled in the manner of fmt.Printf.
func (*ConsoleWriter) Println ¶
func (c *ConsoleWriter) Println(v ...interface{})
Println calls l.Output to print to the logger. Arguments are handled in the manner of fmt.Println.
type HostState ¶
HostState is the actual state of each host (wow this is confusing and should be broken into different state files imo)
type HostStates ¶
type HostStates struct {
// contains filtered or unexported fields
}
HostStates represents the interface to the Host States..? (all this smells of bad hacks)
func (*HostStates) AddHost ¶
func (hs *HostStates) AddHost(u *url.URL)
AddHost adds a host to the hosts lol
func (*HostStates) AddSoft404Content ¶
func (hs *HostStates) AddSoft404Content(host string, content []byte, h *http.Response)
AddSoft404Content sets the soft404 content retreived using the canary request to be compared against during the hacking phase
func (*HostStates) Get404 ¶ added in v1.5.3
func (hs *HostStates) Get404(host string) *http.Response
Get404 returns the stored known-not-good response
func (*HostStates) Get404Body ¶
func (hs *HostStates) Get404Body(host string) []byte
Get404Body returns the stored known-not-good body from a response
func (HostStates) HostExists ¶
func (hs HostStates) HostExists(hval string) bool
HostExists checks to see if the host string specified exists within the hosts states??
func (*HostStates) Init ¶
func (hs *HostStates) Init()
Init initialises the map because apparently OO is hard to do
type OutLine ¶
type OutLine struct { Content string Level int //Define the log/verbosity level. 0 is normal, 1 is higher verbosity etc Type *ConsoleWriter }
OutLine represents some form of console output. Should consist of the content to output, the type of output and the verbosity level.
type SpiderPage ¶
type SpiderPage struct { URL string Result *http.Response Reference *url.URL //where did we get this URL from? (for the logic portion) }
SpiderPage represents a 'working' page object, represented by an URL and it's (optional)result.
type State ¶
type State struct { //global State values Client *http.Client BurpClient *http.Client Cfg *Config TotalTested *uint64 PerSecondShort *uint64 //how many tested over 2 seconds or so PerSecondLong *uint64 StartTime time.Time Blacklist map[string]bool Whitelist map[string]bool BadResponses map[int]bool //response codes to consider *dont care* (this might be worth putting in per host state, but idk how) Extensions []string Methods []string // WordlistLen *uint32 WordList []string DirbProgress *uint32 StopDir chan struct{} //should probably have all teh chans in here Checked map[string]bool CMut *sync.RWMutex StartWG *sync.WaitGroup //per host States Hosts HostStates Chans *chans //ParsedURL *url.URL //Soft404ResponseBody []byte Version string // contains filtered or unexported fields }
State represents the current state of the program. Options are not configured here, those are found in Config.
func (*State) AddWG ¶ added in v1.5.7
func (s *State) AddWG()
AddWG adds a single value to the state waitgroup