From 045ed69f387816b91c51eeaff3181e09682aa145 Mon Sep 17 00:00:00 2001 From: Joe Rozner Date: Sun, 21 Feb 2016 22:38:23 -0800 Subject: [PATCH] Add wordlist generator --- .gitignore | 1 + cmd/sonar/main.go | 2 +- cmd/wordlist_generator/main.go | 39 ++++++++++++++++++++++++++++++++++ wordlist.go | 3 +-- 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 cmd/wordlist_generator/main.go diff --git a/.gitignore b/.gitignore index a60370e..cc0ed88 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store .*swp cmd/sonar/sonar +words.go diff --git a/cmd/sonar/main.go b/cmd/sonar/main.go index 5010411..f8d94c5 100644 --- a/cmd/sonar/main.go +++ b/cmd/sonar/main.go @@ -52,7 +52,7 @@ func main() { case (brute == true): var wl sonar.Wordlist if wordlist == "" { - wl = sonar.NewInternal(sonar.InternalWords) + wl = sonar.NewInternal(sonar.InternalWordlist) } else { fp, err := os.Open(wordlist) if err != nil { diff --git a/cmd/wordlist_generator/main.go b/cmd/wordlist_generator/main.go new file mode 100644 index 0000000..c394b96 --- /dev/null +++ b/cmd/wordlist_generator/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "bytes" + "flag" + "io/ioutil" + "log" + "strings" +) + +func main() { + var wordlist, pkg, output string + + flag.StringVar(&wordlist, "wordlist", "", "word list to generate from") + flag.StringVar(&pkg, "package", "sonar", "package to generate for") + flag.StringVar(&output, "output", "words.go", "file output source to") + flag.Parse() + + if wordlist == "" { + log.Fatal("no wordlist specified") + } + + words, err := ioutil.ReadFile(wordlist) + if err != nil { + log.Fatal(err) + } + + wordSlice := strings.Split(string(words), "\n") + out := bytes.NewBuffer([]byte{}) + _, err = out.Write([]byte("package " + pkg + "\n\nvar InternalWordlist = []string{\"" + strings.Join(wordSlice, "\", \"") + "\"}\n")) + if err != nil { + log.Fatal(err) + } + + err = ioutil.WriteFile(output, out.Bytes(), 0600) + if err != nil { + log.Fatal(err) + } +} diff --git a/wordlist.go b/wordlist.go index 684fe56..b000d59 100644 --- a/wordlist.go +++ b/wordlist.go @@ -1,3 +1,4 @@ +//go:generate wordlist_generator -wordlist wordlist.txt package sonar import ( @@ -6,8 +7,6 @@ import ( "strings" ) -var InternalWords = []string{"www", "beta", "mail", "demo", "test"} - type Wordlist interface { readWords() GetChannel() <-chan string