|
@@ -6,6 +6,7 @@ import (
|
|
"math"
|
|
"math"
|
|
"os"
|
|
"os"
|
|
"strings"
|
|
"strings"
|
|
|
|
+ "passphrase-entropy/packages/haveibeenpwned"
|
|
)
|
|
)
|
|
|
|
|
|
func contains(arr [3]string, str string) bool {
|
|
func contains(arr [3]string, str string) bool {
|
|
@@ -30,6 +31,7 @@ func main() {
|
|
var usedCharsets[] string
|
|
var usedCharsets[] string
|
|
var possibleSymbols int = 0
|
|
var possibleSymbols int = 0
|
|
|
|
|
|
|
|
+ var haveIBeenPwned bool
|
|
var passphrase string
|
|
var passphrase string
|
|
var err error
|
|
var err error
|
|
|
|
|
|
@@ -49,10 +51,12 @@ func main() {
|
|
|
|
|
|
randomCommand := flag.NewFlagSet("random", flag.ExitOnError)
|
|
randomCommand := flag.NewFlagSet("random", flag.ExitOnError)
|
|
randomPassphraseFlag := randomCommand.String("password", "", "the password")
|
|
randomPassphraseFlag := randomCommand.String("password", "", "the password")
|
|
|
|
+ randomPwnedFlag := randomCommand.Bool("pwned", false, "check if password has been seen before")
|
|
|
|
|
|
inventedCommand := flag.NewFlagSet("invented", flag.ExitOnError)
|
|
inventedCommand := flag.NewFlagSet("invented", flag.ExitOnError)
|
|
inventedPassphraseFlag := inventedCommand.String("password", "", "the password")
|
|
inventedPassphraseFlag := inventedCommand.String("password", "", "the password")
|
|
inventedWords := inventedCommand.Int("words", 0, "number of words in invented passphrase")
|
|
inventedWords := inventedCommand.Int("words", 0, "number of words in invented passphrase")
|
|
|
|
+ inventedPwnedFlag := inventedCommand.Bool("pwned", false, "check if password has been seen before")
|
|
|
|
|
|
if len(os.Args) == 1 {
|
|
if len(os.Args) == 1 {
|
|
myUsage()
|
|
myUsage()
|
|
@@ -107,6 +111,13 @@ func main() {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if *randomPwnedFlag == true {
|
|
|
|
+ haveIBeenPwned, err = pwned.IsPasswordCompromised(passphrase)
|
|
|
|
+ if haveIBeenPwned == true {
|
|
|
|
+ fmt.Println("This password does not have any entropy, because it has been compromised.")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
passphraseLength := len(*randomPassphraseFlag)
|
|
passphraseLength := len(*randomPassphraseFlag)
|
|
|
|
|
|
for key, value := range charsets {
|
|
for key, value := range charsets {
|
|
@@ -129,6 +140,18 @@ func main() {
|
|
inventedCommand.Usage()
|
|
inventedCommand.Usage()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- fmt.Println("Calc entropy here")
|
|
|
|
|
|
+
|
|
|
|
+ if *inventedPwnedFlag == true {
|
|
|
|
+ haveIBeenPwned, err = pwned.IsPasswordCompromised(passphrase)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println("Something went wrong.")
|
|
|
|
+ } else if haveIBeenPwned == true {
|
|
|
|
+ fmt.Println("This password does not have any entropy, because it has been compromised.")
|
|
|
|
+ return
|
|
|
|
+ } else {
|
|
|
|
+ fmt.Println("Calc entropy here")
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|