diff --git a/internal/pool/brutepool.go b/internal/pool/brutepool.go index 1436747..3970b3d 100644 --- a/internal/pool/brutepool.go +++ b/internal/pool/brutepool.go @@ -334,21 +334,28 @@ func (pool *BrutePool) Invoke(v interface{}) { bl.Spended = time.Since(start).Milliseconds() switch unit.source { case parsers.InitRandomSource: - bl.Collect() + defer pool.initwg.Done() pool.locker.Lock() pool.random = bl - pool.addFuzzyBaseline(bl) + if !bl.IsValid { + return + } pool.locker.Unlock() - pool.initwg.Done() - case parsers.InitIndexSource: bl.Collect() + pool.addFuzzyBaseline(bl) + + case parsers.InitIndexSource: + defer pool.initwg.Done() pool.locker.Lock() pool.index = bl pool.locker.Unlock() + if !bl.IsValid { + return + } + bl.Collect() pool.doCrawl(bl) pool.doAppend(bl) pool.putToOutput(bl) - pool.initwg.Done() case parsers.CheckSource: 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) diff --git a/internal/runner.go b/internal/runner.go index efebf14..15424a5 100644 --- a/internal/runner.go +++ b/internal/runner.go @@ -13,6 +13,7 @@ import ( "github.com/panjf2000/ants/v2" "github.com/vbauerster/mpb/v8" "github.com/vbauerster/mpb/v8/decor" + "strings" "sync" ) @@ -366,7 +367,6 @@ func (r *Runner) Output(bl *pkg.Baseline) { if bl.IsValid { logs.Log.Console(out + "\n") - } else if r.Fuzzy && bl.IsFuzzy { logs.Log.Console("[fuzzy] " + out + "\n") } @@ -376,6 +376,10 @@ func (r *Runner) Output(bl *pkg.Baseline) { r.OutputFile.SafeWrite(bl.ToJson() + "\n") } else if r.FileOutput == "csv" { 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()