1
1
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:
Christian Bieg 2019-06-22 17:13:17 +02:00
parent 9ef3642d17
commit c74b522710
6 changed files with 29 additions and 0 deletions

View File

@ -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)")

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)
}
}
}

View File

@ -10,6 +10,7 @@ type Options struct {
Quiet bool
WildcardForced bool
Verbose bool
Delay int
}
// NewOptions returns a new initialized Options object