Skip to content

Commit

Permalink
Test only patterns if provided a pattern file
Browse files Browse the repository at this point in the history
  • Loading branch information
acammack committed Feb 5, 2025
1 parent 10f5f00 commit e950dbe
Showing 1 changed file with 22 additions and 15 deletions.
37 changes: 22 additions & 15 deletions libgobuster/libgobuster.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,33 +143,40 @@ func (g *Gobuster) feedWordlist(ctx context.Context, guessChan chan<- *Guess, wo
continue
}

guess := &Guess{word: word, discoverOnSuccess: true}
if len(g.Opts.Patterns) > 0 {
for _, w := range g.processPatterns(word) {
guess := &Guess{word: w, discoverOnSuccess: true}
select {
case <-ctx.Done():
return
case guessChan <- guess:
}

feed(ctx, guessChan, g.plugin.AdditionalWords(w), true)
}
} else {
guess := &Guess{word: word, discoverOnSuccess: true}

// add the original word
select {
case <-ctx.Done():
return
case guessChan <- guess:
}
// now create perms
for _, w := range g.processPatterns(word) {
guess := &Guess{word: w, discoverOnSuccess: true}
select {
case <-ctx.Done():
return
case guessChan <- guess:
}

feed(ctx, guessChan, g.plugin.AdditionalWords(w), true)
feed(ctx, guessChan, g.plugin.AdditionalWords(word), true)
}
feed(ctx, guessChan, g.plugin.AdditionalWords(word), true)
}
}

func (g *Gobuster) getWordlist() (*Wordlist, error) {
// calcutate expected requests
nPats := 1 + len(g.Opts.Patterns)
guessesPerLine := nPats + nPats*g.plugin.AdditionalWordsLen()
// calculate expected requests
var guessesPerLine int
if len(g.Opts.Patterns) > 0 {
nPats := len(g.Opts.Patterns)
guessesPerLine = nPats + nPats*g.plugin.AdditionalWordsLen()
} else {
guessesPerLine = 1 + g.plugin.AdditionalWordsLen()
}

if g.Opts.Wordlist == "-" {
// Read directly from stdin
Expand Down

0 comments on commit e950dbe

Please sign in to comment.