ソースを参照

Add haveibeenpwned check for compromised passwords

Dennis Rodewyk 5 年 前
コミット
b4861575c8
2 ファイル変更25 行追加1 行削除
  1. 24 1
      app.go
  2. 1 0
      packages/haveibeenpwned

+ 24 - 1
app.go

@@ -6,6 +6,7 @@ import (
 	"math"
 	"os"
 	"strings"
+	"passphrase-entropy/packages/haveibeenpwned"
 )
 
 func contains(arr [3]string, str string) bool {
@@ -30,6 +31,7 @@ func main() {
 	var usedCharsets[] string
 	var possibleSymbols int = 0
 
+	var haveIBeenPwned bool
 	var passphrase string
 	var err error
 
@@ -49,10 +51,12 @@ func main() {
 
 	randomCommand := flag.NewFlagSet("random", flag.ExitOnError)
 	randomPassphraseFlag := randomCommand.String("password", "", "the password")
+	randomPwnedFlag := randomCommand.Bool("pwned", false, "check if password has been seen before")
 
 	inventedCommand := flag.NewFlagSet("invented", flag.ExitOnError)
 	inventedPassphraseFlag := inventedCommand.String("password", "", "the password")
 	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 {
 		myUsage()
@@ -107,6 +111,13 @@ func main() {
 			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)
 
 		for key, value := range charsets {
@@ -129,6 +140,18 @@ func main() {
 			inventedCommand.Usage()
 			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")
+		}
 	}
 }

+ 1 - 0
packages/haveibeenpwned

@@ -0,0 +1 @@
+Subproject commit d7e04bb67546eeee7bc0c32f2fd0b00bf27f94a2