mirror of
https://github.com/OJ/gobuster.git
synced 2024-09-28 02:55:57 +02:00
Added an option to add a delay to threads
This commit is contained in:
parent
9ef3642d17
commit
c74b522710
@ -64,6 +64,16 @@ func parseGlobalOptions() (*libgobuster.Options, error) {
|
||||
}
|
||||
globalopts.Threads = threads
|
||||
|
||||
delay, err := rootCmd.Flags().GetInt("delay")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid value for delay: %v", err)
|
||||
}
|
||||
|
||||
if delay < 0 {
|
||||
return nil, fmt.Errorf("delay must be positive")
|
||||
}
|
||||
globalopts.Delay = delay
|
||||
|
||||
globalopts.Wordlist, err = rootCmd.Flags().GetString("wordlist")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid value for wordlist: %v", err)
|
||||
@ -109,6 +119,7 @@ func configureGlobalOptions() {
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.PersistentFlags().IntP("delay", "d", 0, "Number of milliseconds each thread waits between requests")
|
||||
rootCmd.PersistentFlags().IntP("threads", "t", 10, "Number of concurrent threads")
|
||||
rootCmd.PersistentFlags().StringP("wordlist", "w", "", "Path to the wordlist")
|
||||
rootCmd.PersistentFlags().StringP("output", "o", "", "Output file to write results to (defaults to stdout)")
|
||||
|
@ -242,10 +242,15 @@ func (d *GobusterDir) GetConfigString() (string, error) {
|
||||
if _, err := fmt.Fprintf(tw, "[+] Url:\t%s\n", o.URL); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintf(tw, "[+] Threads:\t%d\n", d.globalopts.Threads); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintf(tw, "[+] Delay:\t%dms\n", d.globalopts.Delay); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
wordlist := "stdin (pipe)"
|
||||
if d.globalopts.Wordlist != "-" {
|
||||
wordlist = d.globalopts.Wordlist
|
||||
|
@ -173,6 +173,10 @@ func (d *GobusterDNS) GetConfigString() (string, error) {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintf(tw, "[+] Delay:\t%d\n", d.globalopts.Delay); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if o.Resolver != "" {
|
||||
if _, err := fmt.Fprintf(tw, "[+] Resolver:\t%s\n", o.Resolver); err != nil {
|
||||
return "", err
|
||||
|
@ -143,10 +143,15 @@ func (v *GobusterVhost) GetConfigString() (string, error) {
|
||||
if _, err := fmt.Fprintf(tw, "[+] Url:\t%s\n", o.URL); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintf(tw, "[+] Threads:\t%d\n", v.globalopts.Threads); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintf(tw, "[+] Delay:\t%d\n", v.globalopts.Delay); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
wordlist := "stdin (pipe)"
|
||||
if v.globalopts.Wordlist != "-" {
|
||||
wordlist = v.globalopts.Wordlist
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// SetupFunc is the "setup" function prototype for implementations
|
||||
@ -113,6 +114,8 @@ func (g *Gobuster) worker(wordChan <-chan string, wg *sync.WaitGroup) {
|
||||
g.resultChan <- r
|
||||
}
|
||||
}
|
||||
|
||||
time.Sleep(time.Duration(g.Opts.Delay) * time.Millisecond)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ type Options struct {
|
||||
Quiet bool
|
||||
WildcardForced bool
|
||||
Verbose bool
|
||||
Delay int
|
||||
}
|
||||
|
||||
// NewOptions returns a new initialized Options object
|
||||
|
Loading…
Reference in New Issue
Block a user