M09Ic 2024-09-10 14:13:06 +08:00
parent 4a0c8f86eb
commit 5cf02cbbcb
2 changed files with 17 additions and 6 deletions

View File

@ -334,21 +334,28 @@ func (pool *BrutePool) Invoke(v interface{}) {
bl.Spended = time.Since(start).Milliseconds() bl.Spended = time.Since(start).Milliseconds()
switch unit.source { switch unit.source {
case parsers.InitRandomSource: case parsers.InitRandomSource:
bl.Collect() defer pool.initwg.Done()
pool.locker.Lock() pool.locker.Lock()
pool.random = bl pool.random = bl
pool.addFuzzyBaseline(bl) if !bl.IsValid {
return
}
pool.locker.Unlock() pool.locker.Unlock()
pool.initwg.Done()
case parsers.InitIndexSource:
bl.Collect() bl.Collect()
pool.addFuzzyBaseline(bl)
case parsers.InitIndexSource:
defer pool.initwg.Done()
pool.locker.Lock() pool.locker.Lock()
pool.index = bl pool.index = bl
pool.locker.Unlock() pool.locker.Unlock()
if !bl.IsValid {
return
}
bl.Collect()
pool.doCrawl(bl) pool.doCrawl(bl)
pool.doAppend(bl) pool.doAppend(bl)
pool.putToOutput(bl) pool.putToOutput(bl)
pool.initwg.Done()
case parsers.CheckSource: case parsers.CheckSource:
if bl.ErrString != "" { if bl.ErrString != "" {
logs.Log.Warnf("[check.error] %s maybe ip had banned, break (%d/%d), error: %s", pool.BaseURL, pool.failedCount, pool.BreakThreshold, bl.ErrString) logs.Log.Warnf("[check.error] %s maybe ip had banned, break (%d/%d), error: %s", pool.BaseURL, pool.failedCount, pool.BreakThreshold, bl.ErrString)

View File

@ -13,6 +13,7 @@ import (
"github.com/panjf2000/ants/v2" "github.com/panjf2000/ants/v2"
"github.com/vbauerster/mpb/v8" "github.com/vbauerster/mpb/v8"
"github.com/vbauerster/mpb/v8/decor" "github.com/vbauerster/mpb/v8/decor"
"strings"
"sync" "sync"
) )
@ -366,7 +367,6 @@ func (r *Runner) Output(bl *pkg.Baseline) {
if bl.IsValid { if bl.IsValid {
logs.Log.Console(out + "\n") logs.Log.Console(out + "\n")
} else if r.Fuzzy && bl.IsFuzzy { } else if r.Fuzzy && bl.IsFuzzy {
logs.Log.Console("[fuzzy] " + out + "\n") logs.Log.Console("[fuzzy] " + out + "\n")
} }
@ -376,6 +376,10 @@ func (r *Runner) Output(bl *pkg.Baseline) {
r.OutputFile.SafeWrite(bl.ToJson() + "\n") r.OutputFile.SafeWrite(bl.ToJson() + "\n")
} else if r.FileOutput == "csv" { } else if r.FileOutput == "csv" {
r.OutputFile.SafeWrite(bl.ToCSV() + "\n") r.OutputFile.SafeWrite(bl.ToCSV() + "\n")
} else if r.FileOutput == "full" {
r.OutputFile.SafeWrite(bl.String() + "\n")
} else {
r.OutputFile.SafeWrite(bl.Format(strings.Split(r.FileOutput, ",")) + "\n")
} }
r.OutputFile.SafeSync() r.OutputFile.SafeSync()