Print error messages to stderr to help with piping -s output

This commit is contained in:
Joona Hoikkala 2018-11-08 15:54:12 +02:00
parent 466a011db9
commit 8287881a84
No known key found for this signature in database
GPG Key ID: D5AA86BBF9B29A5C
2 changed files with 10 additions and 9 deletions

14
main.go
View File

@ -62,19 +62,19 @@ func main() {
//flag.StringVar(&opts.matcherReflect, "mref", "", "Match reflected payload") //flag.StringVar(&opts.matcherReflect, "mref", "", "Match reflected payload")
flag.Parse() flag.Parse()
if err := prepareConfig(&opts, &conf); err != nil { if err := prepareConfig(&opts, &conf); err != nil {
fmt.Printf("Encountered error(s): %s\n", err) fmt.Fprintf(os.Stderr, "Encountered error(s): %s\n", err)
flag.Usage() flag.Usage()
os.Exit(1) os.Exit(1)
} }
if err := prepareFilters(&opts, &conf); err != nil { if err := prepareFilters(&opts, &conf); err != nil {
fmt.Printf("Encountered error(s): %s\n", err) fmt.Fprintf(os.Stderr, "Encountered error(s): %s\n", err)
flag.Usage() flag.Usage()
os.Exit(1) os.Exit(1)
} }
job, err := prepareJob(&conf) job, err := prepareJob(&conf)
if err != nil { if err != nil {
fmt.Printf("Encountered error(s): %s\n", err) fmt.Fprintf(os.Stderr, "Encountered error(s): %s\n", err)
flag.Usage() flag.Usage()
os.Exit(1) os.Exit(1)
} }
@ -107,10 +107,10 @@ func prepareConfig(parseOpts *cliOptions, conf *ffuf.Config) error {
var errlist *multierror.Error var errlist *multierror.Error
foundkeyword := false foundkeyword := false
if len(conf.Url) == 0 { if len(conf.Url) == 0 {
errlist = multierror.Append(errlist, fmt.Errorf("-u flag is required.")) errlist = multierror.Append(errlist, fmt.Errorf("-u flag is required"))
} }
if len(conf.Wordlist) == 0 { if len(conf.Wordlist) == 0 {
errlist = multierror.Append(errlist, fmt.Errorf("-w flag is required.")) errlist = multierror.Append(errlist, fmt.Errorf("-w flag is required"))
} }
//Prepare headers //Prepare headers
for _, v := range parseOpts.headers { for _, v := range parseOpts.headers {
@ -130,7 +130,7 @@ func prepareConfig(parseOpts *cliOptions, conf *ffuf.Config) error {
conf.StaticHeaders[strings.TrimSpace(hs[0])] = strings.TrimSpace(hs[1]) conf.StaticHeaders[strings.TrimSpace(hs[0])] = strings.TrimSpace(hs[1])
} }
} else { } else {
errlist = multierror.Append(errlist, fmt.Errorf("Header defined by -H needs to have a value. \":\" should be used as a separator.")) errlist = multierror.Append(errlist, fmt.Errorf("Header defined by -H needs to have a value. \":\" should be used as a separator"))
} }
} }
//Search for keyword from URL and POST data too //Search for keyword from URL and POST data too
@ -142,7 +142,7 @@ func prepareConfig(parseOpts *cliOptions, conf *ffuf.Config) error {
} }
if !foundkeyword { if !foundkeyword {
errlist = multierror.Append(errlist, fmt.Errorf("No FUZZ keywords found in headers or URL, nothing to do.")) errlist = multierror.Append(errlist, fmt.Errorf("No FUZZ keywords found in headers or URL, nothing to do"))
} }
return errlist.ErrorOrNil() return errlist.ErrorOrNil()
} }

View File

@ -2,6 +2,7 @@ package ffuf
import ( import (
"fmt" "fmt"
"os"
"sync" "sync"
) )
@ -49,12 +50,12 @@ func (j *Job) Start() {
func (j *Job) runTask(input []byte) { func (j *Job) runTask(input []byte) {
req, err := j.Runner.Prepare(input) req, err := j.Runner.Prepare(input)
if err != nil { if err != nil {
fmt.Printf("Encountered error while preparing request: %s\n", err) fmt.Fprintf(os.Stderr, "Encountered error while preparing request: %s\n", err)
return return
} }
resp, err := j.Runner.Execute(&req) resp, err := j.Runner.Execute(&req)
if err != nil { if err != nil {
fmt.Printf("Error in runner: %s\n", err) fmt.Fprintf(os.Stderr, "Error in runner: %s\n", err)
return return
} }
j.Output.Result(resp) j.Output.Result(resp)