diff --git a/go.mod b/go.mod index e9e051069..384d1cdbb 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,6 @@ require ( github.com/a1ex3/zstd-seekable-format-go/pkg v0.10.0 github.com/a8m/tree v0.0.0-20240104212747-2c8764a5f17e github.com/aalpar/deheap v1.1.2 - github.com/abbot/go-http-auth v0.4.0 github.com/adrg/xdg v0.5.3 github.com/anacrolix/dms v1.8.0 github.com/apache/arrow-go/v18 v18.7.0 // indirect diff --git a/go.sum b/go.sum index d4482650f..eaf17e7e8 100644 --- a/go.sum +++ b/go.sum @@ -63,8 +63,6 @@ github.com/a8m/tree v0.0.0-20240104212747-2c8764a5f17e h1:KMVieI1/Ub++GYfnhyFPoG github.com/a8m/tree v0.0.0-20240104212747-2c8764a5f17e/go.mod h1:j5astEcUkZQX8lK+KKlQ3NRQ50f4EE8ZjyZpCz3mrH4= github.com/aalpar/deheap v1.1.2 h1:MABHLcnjqsffb8GLkUFDigqpBBxOMz0DoKM9QfELeTw= github.com/aalpar/deheap v1.1.2/go.mod h1:A+nfkD4JbS05sewV0he/MYgR/90vfqyMoNNROgs+rmA= -github.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0= -github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78= github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ= github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw= diff --git a/lib/http/htpasswd.go b/lib/http/htpasswd.go new file mode 100644 index 000000000..9b08b562d --- /dev/null +++ b/lib/http/htpasswd.go @@ -0,0 +1,207 @@ +package http + +import ( + "bufio" + "crypto/md5" + "crypto/sha1" + "crypto/subtle" + "encoding/base64" + "io" + "os" + "strings" + "sync" + "time" + + "github.com/rclone/rclone/fs" + "golang.org/x/crypto/bcrypt" +) + +// md5CryptAlphabet is the base64 variant used by crypt(3) +const md5CryptAlphabet = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + +// md5Crypt returns the MD5-crypt hash of password as used by "$1$" +// and Apache "$apr1$" entries, in the form magic+salt+"$"+hash. +// +// Unlike crypt(3) the salt isn't truncated to 8 bytes, for +// compatibility with entries rclone accepted previously. +func md5Crypt(password, salt, magic string) string { + alt := md5.Sum([]byte(password + salt + password)) + h := md5.New() + _, _ = io.WriteString(h, password+magic+salt) + for n := len(password); n > 0; n -= md5.Size { + _, _ = h.Write(alt[:min(n, md5.Size)]) + } + // The algorithm adds a NUL or the first byte of the password + // for each bit of the password length + for n := len(password); n > 0; n >>= 1 { + if n&1 != 0 { + _, _ = h.Write([]byte{0}) + } else { + _, _ = io.WriteString(h, password[:1]) + } + } + sum := h.Sum(nil) + for i := range 1000 { + h.Reset() + if i&1 != 0 { + _, _ = io.WriteString(h, password) + } else { + _, _ = h.Write(sum) + } + if i%3 != 0 { + _, _ = io.WriteString(h, salt) + } + if i%7 != 0 { + _, _ = io.WriteString(h, password) + } + if i&1 != 0 { + _, _ = h.Write(sum) + } else { + _, _ = io.WriteString(h, password) + } + sum = h.Sum(sum[:0]) + } + out := []byte(magic + salt + "$") + encode := func(v uint32, n int) { + for range n { + out = append(out, md5CryptAlphabet[v&0x3f]) + v >>= 6 + } + } + for _, i := range [][3]int{{0, 6, 12}, {1, 7, 13}, {2, 8, 14}, {3, 9, 15}, {4, 10, 5}} { + encode(uint32(sum[i[0]])<<16|uint32(sum[i[1]])<<8|uint32(sum[i[2]]), 4) + } + encode(uint32(sum[11]), 2) + return string(out) +} + +// parseMD5Crypt returns the magic and salt of an MD5-crypt hash or +// ok=false if secret isn't one. +func parseMD5Crypt(secret string) (magic, salt string, ok bool) { + for _, magic = range []string{"$1$", "$apr1$"} { + if rest, found := strings.CutPrefix(secret, magic); found { + salt, _, ok = strings.Cut(rest, "$") + return magic, salt, ok + } + } + return "", "", false +} + +// isBcrypt returns true if secret is a bcrypt hash +func isBcrypt(secret string) bool { + for _, prefix := range []string{"$2a$", "$2b$", "$2x$", "$2y$"} { + if strings.HasPrefix(secret, prefix) { + return true + } + } + return false +} + +// supportedHash returns true if secret is in a format checkHash +// can check. +func supportedHash(secret string) bool { + if _, _, ok := parseMD5Crypt(secret); ok { + return true + } + return strings.HasPrefix(secret, "{SHA}") || isBcrypt(secret) +} + +// checkHash returns true if password matches the hashed secret. +// +// It returns false if secret isn't in a supported format. +func checkHash(secret, password string) bool { + switch { + case strings.HasPrefix(secret, "{SHA}"): + sum := sha1.Sum([]byte(password)) + return subtle.ConstantTimeCompare([]byte(secret[len("{SHA}"):]), []byte(base64.StdEncoding.EncodeToString(sum[:]))) == 1 + case isBcrypt(secret): + return bcrypt.CompareHashAndPassword([]byte(secret), []byte(password)) == nil + } + if magic, salt, ok := parseMD5Crypt(secret); ok { + return subtle.ConstantTimeCompare([]byte(secret), []byte(md5Crypt(password, salt, magic))) == 1 + } + return false +} + +// parseHtpasswd reads user:hash lines from in, returning a map of +// user to hash. Blank lines and lines starting with # are ignored and +// malformed lines are logged and skipped. +func parseHtpasswd(name string, in io.Reader) (map[string]string, error) { + users := make(map[string]string) + scanner := bufio.NewScanner(in) + for lineNumber := 1; scanner.Scan(); lineNumber++ { + line := strings.TrimSpace(scanner.Text()) + if line == "" || line[0] == '#' { + continue + } + user, secret, ok := strings.Cut(line, ":") + // Some tools write extra fields after the hash + secret, _, _ = strings.Cut(secret, ":") + user, secret = strings.TrimSpace(user), strings.TrimSpace(secret) + if !ok || user == "" || secret == "" { + // Don't log the line as it may contain a password + fs.Errorf(name, "Ignoring malformed htpasswd line %d", lineNumber) + continue + } + if !supportedHash(secret) { + fs.Errorf(name, "Password for htpasswd user %q is in an unsupported format - use bcrypt, MD5 or SHA1", user) + } + users[user] = secret + } + return users, scanner.Err() +} + +// htpasswdFile checks passwords against an htpasswd file, reloading +// it whenever it changes. +type htpasswdFile struct { + path string + mu sync.Mutex + loaded bool + modTime time.Time + size int64 + users map[string]string // user => hashed password +} + +// load reads the users from the file. On error it leaves no users and +// the load is retried on the next lookup, as fixing errors such as +// permissions needn't change the file's size or modification time. +// +// Call with mu held. +func (h *htpasswdFile) load(info os.FileInfo) { + h.loaded, h.users = false, nil + f, err := os.Open(h.path) + if err != nil { + fs.Errorf(nil, "Failed to read htpasswd file: %v", err) + return + } + defer func() { _ = f.Close() }() + users, err := parseHtpasswd(h.path, f) + if err != nil { + fs.Errorf(nil, "Failed to read htpasswd file %q: %v", h.path, err) + return + } + h.loaded, h.modTime, h.size = true, info.ModTime(), info.Size() + h.users = users +} + +// lookup returns the hashed password for user, or "" if there isn't +// one. +func (h *htpasswdFile) lookup(user string) string { + info, err := os.Stat(h.path) + h.mu.Lock() + defer h.mu.Unlock() + if err != nil { + fs.Errorf(nil, "Failed to read htpasswd file: %v", err) + h.loaded, h.users = false, nil + return "" + } + if !h.loaded || !info.ModTime().Equal(h.modTime) || info.Size() != h.size { + h.load(info) + } + return h.users[user] +} + +// check returns true if user and password match an entry in the file. +func (h *htpasswdFile) check(user, password string) bool { + return checkHash(h.lookup(user), password) +} diff --git a/lib/http/htpasswd_test.go b/lib/http/htpasswd_test.go new file mode 100644 index 000000000..3966012aa --- /dev/null +++ b/lib/http/htpasswd_test.go @@ -0,0 +1,135 @@ +package http + +import ( + "bufio" + "os" + "path/filepath" + "runtime" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestMD5Crypt(t *testing.T) { + // Expected values made with "openssl passwd" + for _, test := range []struct { + password, salt, magic, want string + }{ + {"password", "saltsalt", "$1$", "$1$saltsalt$qjXMvbEw8oaL.CzflDtaK/"}, + {"", "ab", "$1$", "$1$ab$rn6aQS/o7141mj179E/zA."}, + {"md5", "s7fogein", "$apr1$", "$apr1$s7fogein$IK9ItbnGM14ct0bY4Uyik1"}, + {"averyveryverylongpasswordthatislongerthan32bytes", "12345678", "$apr1$", "$apr1$12345678$AzbvZTnrGfP3.51TG02ZD1"}, + {"pässwörd", "x£y", "$1$", "$1$x£y$DQwRxj42VvbTcvJrXRM8k1"}, + } { + assert.Equal(t, test.want, md5Crypt(test.password, test.salt, test.magic), test.password) + } +} + +// TestCheckHashGolden checks checkHash against hashes made by +// htpasswd, openssl, mkpasswd and Python bcrypt with +// testdata/make-htpasswd-vectors.sh. The expected results were +// recorded from github.com/abbot/go-http-auth v0.4.0 which rclone +// used previously. +func TestCheckHashGolden(t *testing.T) { + f, err := os.Open("testdata/htpasswd-golden.tsv") + require.NoError(t, err) + defer func() { _ = f.Close() }() + scanner := bufio.NewScanner(f) + n := 0 + for scanner.Scan() { + fields := strings.Split(scanner.Text(), "\t") + require.Len(t, fields, 4, scanner.Text()) + label, secret, password, want := fields[0], fields[1], fields[2], fields[3] == "true" + assert.Equal(t, want, checkHash(secret, password), "%s %q %q", label, secret, password) + n++ + } + require.NoError(t, scanner.Err()) + assert.Greater(t, n, 1000) +} + +func TestCheckHash(t *testing.T) { + for _, test := range []struct { + secret, password string + want bool + }{ + {"{SHA}2PRZAyDhNDqRW2OUFwZQqPNdaSY=", "sha", true}, + {"{SHA}2PRZAyDhNDqRW2OUFwZQqPNdaSY=", "wrong", false}, + {"$apr1$s7fogein$IK9ItbnGM14ct0bY4Uyik1", "md5", true}, + {"$apr1$s7fogein$IK9ItbnGM14ct0bY4Uyik1", "wrong", false}, + {"$1$saltsalt$qjXMvbEw8oaL.CzflDtaK/", "password", true}, + {"$2y$10$K/b3mVXUA6X857TOTYIL9.Lbaeg9oBjMQwUX5NefpVUCcYP0Z5KY2", "bcrypt", true}, + {"$2y$10$K/b3mVXUA6X857TOTYIL9.Lbaeg9oBjMQwUX5NefpVUCcYP0Z5KY2", "wrong", false}, + // Unsupported formats never match + {"plain", "plain", false}, + {"abJnggxhB/yWI", "des", false}, + {"", "", false}, + } { + assert.Equal(t, test.want, checkHash(test.secret, test.password), "%q %q", test.secret, test.password) + } +} + +func TestParseHtpasswd(t *testing.T) { + in := strings.NewReader(`# comment +user1:{SHA}2PRZAyDhNDqRW2OUFwZQqPNdaSY= + + user2 : $apr1$s7fogein$IK9ItbnGM14ct0bY4Uyik1 +user3:$1$saltsalt$qjXMvbEw8oaL.CzflDtaK/:extra:fields +malformed +:nouser +nopass: +user1:{SHA}overridden= +`) + users, err := parseHtpasswd("test", in) + require.NoError(t, err) + assert.Equal(t, map[string]string{ + "user1": "{SHA}overridden=", + "user2": "$apr1$s7fogein$IK9ItbnGM14ct0bY4Uyik1", + "user3": "$1$saltsalt$qjXMvbEw8oaL.CzflDtaK/", + }, users) +} + +func TestHtpasswdFileUnsupported(t *testing.T) { + path := filepath.Join(t.TempDir(), ".htpasswd") + require.NoError(t, os.WriteFile(path, []byte("des:abJnggxhB/yWI\nplain:plain\nmd5:$apr1$s7fogein$IK9ItbnGM14ct0bY4Uyik1\n"), 0600)) + h := &htpasswdFile{path: path} + assert.False(t, h.check("des", "des")) + assert.False(t, h.check("plain", "plain")) + assert.True(t, h.check("md5", "md5")) + assert.False(t, h.check("nosuchuser", "md5")) +} + +// The users must follow changes to the htpasswd file +func TestHtpasswdFileReload(t *testing.T) { + path := filepath.Join(t.TempDir(), ".htpasswd") + require.NoError(t, os.WriteFile(path, []byte("sha:{SHA}2PRZAyDhNDqRW2OUFwZQqPNdaSY=\n"), 0600)) + h := &htpasswdFile{path: path} + assert.True(t, h.check("sha", "sha")) + + require.NoError(t, os.WriteFile(path, []byte("bcrypt:$2y$10$K/b3mVXUA6X857TOTYIL9.Lbaeg9oBjMQwUX5NefpVUCcYP0Z5KY2\n"), 0600)) + future := time.Now().Add(time.Hour) + require.NoError(t, os.Chtimes(path, future, future)) + assert.False(t, h.check("sha", "sha")) + assert.True(t, h.check("bcrypt", "bcrypt")) + + // A missing file lets nobody in + require.NoError(t, os.Remove(path)) + assert.False(t, h.check("bcrypt", "bcrypt")) +} + +// A file which can't be read must be retried even if it doesn't change +func TestHtpasswdFileUnreadable(t *testing.T) { + if runtime.GOOS == "windows" || os.Geteuid() == 0 { + t.Skip("can't make file unreadable") + } + path := filepath.Join(t.TempDir(), ".htpasswd") + require.NoError(t, os.WriteFile(path, []byte("sha:{SHA}2PRZAyDhNDqRW2OUFwZQqPNdaSY=\n"), 0000)) + h := &htpasswdFile{path: path} + assert.False(t, h.check("sha", "sha")) + + // chmod changes neither the size nor the modification time + require.NoError(t, os.Chmod(path, 0600)) + assert.True(t, h.check("sha", "sha")) +} diff --git a/lib/http/middleware.go b/lib/http/middleware.go index eaa6b0a10..0e59c1a71 100644 --- a/lib/http/middleware.go +++ b/lib/http/middleware.go @@ -2,6 +2,7 @@ package http import ( "context" + "crypto/subtle" "encoding/base64" "fmt" "net/http" @@ -9,7 +10,6 @@ import ( "strings" "sync" - goauth "github.com/abbot/go-http-auth" "github.com/rclone/rclone/fs" ) @@ -34,36 +34,27 @@ func parseAuthorization(r *http.Request) (user, pass string, ok bool) { return } -// LoggedBasicAuth simply wraps the goauth.BasicAuth struct -type LoggedBasicAuth struct { - goauth.BasicAuth +// requireBasicAuth replies to the request asking the client for +// basic auth credentials. +func requireBasicAuth(w http.ResponseWriter, realm string) { + w.Header().Set("Content-Type", "text/plain") + w.Header().Set("WWW-Authenticate", `Basic realm="`+realm+`"`) + w.WriteHeader(http.StatusUnauthorized) + _, _ = fmt.Fprintf(w, "%d %s\n", http.StatusUnauthorized, http.StatusText(http.StatusUnauthorized)) } -// CheckAuth extends BasicAuth.CheckAuth to emit a log entry for unauthorised requests -func (a *LoggedBasicAuth) CheckAuth(r *http.Request) string { - username := a.BasicAuth.CheckAuth(r) - if username == "" { - user, _, _ := parseAuthorization(r) - fs.Infof(r.URL.Path, "%s: Unauthorized request from %s", r.RemoteAddr, user) - } - return username -} - -// NewLoggedBasicAuthenticator instantiates a new instance of LoggedBasicAuthenticator -func NewLoggedBasicAuthenticator(realm string, secrets goauth.SecretProvider) *LoggedBasicAuth { - return &LoggedBasicAuth{BasicAuth: goauth.BasicAuth{Realm: realm, Secrets: secrets}} -} - -// Helper to generate required interface for middleware -func basicAuth(authenticator *LoggedBasicAuth) func(next http.Handler) http.Handler { +// basicAuth returns middleware which authenticates with basic auth, +// using check to see whether the user and password are valid. +func basicAuth(realm string, check func(user, pass string) bool) Middleware { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - username := authenticator.CheckAuth(r) - if username == "" { - authenticator.RequireAuth(w, r) + user, pass, ok := parseAuthorization(r) + if !ok || !check(user, pass) { + fs.Infof(r.URL.Path, "%s: Unauthorized request from %s", r.RemoteAddr, user) + requireBasicAuth(w, realm) return } - ctx := context.WithValue(r.Context(), ctxKeyUser, username) + ctx := context.WithValue(r.Context(), ctxKeyUser, user) next.ServeHTTP(w, r.WithContext(ctx)) }) } @@ -94,23 +85,17 @@ func MiddlewareAuthCertificateUser() Middleware { // MiddlewareAuthHtpasswd instantiates middleware that authenticates against the passed htpasswd file func MiddlewareAuthHtpasswd(path, realm string) Middleware { fs.Infof(nil, "Using %q as htpasswd storage", path) - secretProvider := goauth.HtpasswdFileProvider(path) - authenticator := NewLoggedBasicAuthenticator(realm, secretProvider) - return basicAuth(authenticator) + h := &htpasswdFile{path: path} + return basicAuth(realm, h.check) } // MiddlewareAuthBasic instantiates middleware that authenticates for a single user func MiddlewareAuthBasic(user, pass, realm, salt string) Middleware { fs.Infof(nil, "Using --user %s --pass XXXX as authenticated user", user) - pass = string(goauth.MD5Crypt([]byte(pass), []byte(salt), []byte("$1$"))) - secretProvider := func(u, r string) string { - if user == u { - return pass - } - return "" - } - authenticator := NewLoggedBasicAuthenticator(realm, secretProvider) - return basicAuth(authenticator) + pass = md5Crypt(pass, salt, "$1$") + return basicAuth(realm, func(u, p string) bool { + return u == user && subtle.ConstantTimeCompare([]byte(md5Crypt(p, salt, "$1$")), []byte(pass)) == 1 + }) } // MiddlewareAuthCustom instantiates middleware that authenticates using a custom function @@ -133,7 +118,7 @@ func MiddlewareAuthCustom(fn CustomAuthFn, realm string, userFromContext bool) M value, err := fn(r, user, pass) if err != nil { fs.Infof(r.URL.Path, "%s: Auth failed from %s: %v", r.RemoteAddr, user, err) - goauth.NewBasicAuthenticator(realm, func(user, realm string) string { return "" }).RequireAuth(w, r) //Reuse BasicAuth error reporting + requireBasicAuth(w, realm) return } diff --git a/lib/http/testdata/htpasswd-golden.tsv b/lib/http/testdata/htpasswd-golden.tsv new file mode 100644 index 000000000..2922463ea --- /dev/null +++ b/lib/http/testdata/htpasswd-golden.tsv @@ -0,0 +1,1080 @@ +htpasswd-m $apr1$blb8URY5$cONuH3Xl1j.J7mj0U0pSs1 true +htpasswd-m $apr1$blb8URY5$cONuH3Xl1j.J7mj0U0pSs1 x false +htpasswd-m $apr1$blb8URY5$cONuH3Xl1j.J7mj0U0pSs1 wrong false +htpasswd-B4 $2y$04$yXOfKo29lpshpdrXlh45lumUay6wBegnDCt3sPnLwnQmhw4DYW0VC true +htpasswd-B4 $2y$04$yXOfKo29lpshpdrXlh45lumUay6wBegnDCt3sPnLwnQmhw4DYW0VC x false +htpasswd-B4 $2y$04$yXOfKo29lpshpdrXlh45lumUay6wBegnDCt3sPnLwnQmhw4DYW0VC wrong false +htpasswd-s {SHA}2jmj7l5rSw0yVb/vlWAYkK/YBwk= true +htpasswd-s {SHA}2jmj7l5rSw0yVb/vlWAYkK/YBwk= x false +htpasswd-s {SHA}2jmj7l5rSw0yVb/vlWAYkK/YBwk= wrong false +htpasswd-d 5pxYo6sHyEEOc false +htpasswd-d 5pxYo6sHyEEOc x false +htpasswd-d 5pxYo6sHyEEOc wrong false +htpasswd-p false +htpasswd-p x false +htpasswd-p wrong false +openssl-1 $1$7TlS2pif$nJ0Er74hHxhFtyMWPRqbe1 true +openssl-1 $1$7TlS2pif$nJ0Er74hHxhFtyMWPRqbe1 x false +openssl-1 $1$7TlS2pif$nJ0Er74hHxhFtyMWPRqbe1 wrong false +openssl-apr1 $apr1$Lom3sUN.$NEY5LJN7VEhIOh0rhIn4s1 true +openssl-apr1 $apr1$Lom3sUN.$NEY5LJN7VEhIOh0rhIn4s1 x false +openssl-apr1 $apr1$Lom3sUN.$NEY5LJN7VEhIOh0rhIn4s1 wrong false +openssl-1-shortsalt $1$ab$rn6aQS/o7141mj179E/zA. true +openssl-1-shortsalt $1$ab$rn6aQS/o7141mj179E/zA. x false +openssl-1-shortsalt $1$ab$rn6aQS/o7141mj179E/zA. wrong false +openssl-apr1-emptysalt $apr1$$J/S5FGXXjRRxbhIznTb/E1 true +openssl-apr1-emptysalt $apr1$$J/S5FGXXjRRxbhIznTb/E1 x false +openssl-apr1-emptysalt $apr1$$J/S5FGXXjRRxbhIznTb/E1 wrong false +openssl-5 false +openssl-5 x false +openssl-5 wrong false +openssl-6 false +openssl-6 x false +openssl-6 wrong false +python-2a $2a$04$qW5PlVyNafqMCFBhLjn0W.AcsHx3D0L.d5OOV8Dyo98NJIwWQ8lpe true +python-2a $2a$04$qW5PlVyNafqMCFBhLjn0W.AcsHx3D0L.d5OOV8Dyo98NJIwWQ8lpe x false +python-2a $2a$04$qW5PlVyNafqMCFBhLjn0W.AcsHx3D0L.d5OOV8Dyo98NJIwWQ8lpe wrong false +python-2b $2b$04$Oox1mSFxmYaxDCxn33fcDOi0KrhETUtSPvFIdfFB32Sf9Ip7Gdini true +python-2b $2b$04$Oox1mSFxmYaxDCxn33fcDOi0KrhETUtSPvFIdfFB32Sf9Ip7Gdini x false +python-2b $2b$04$Oox1mSFxmYaxDCxn33fcDOi0KrhETUtSPvFIdfFB32Sf9Ip7Gdini wrong false +bcrypt-2x $2x$04$DJy0tjWObWOeF9SunGbjBecZNu.1BQqtMEBs0evUzqdEqLAyc0Nh2 true +bcrypt-2x $2x$04$DJy0tjWObWOeF9SunGbjBecZNu.1BQqtMEBs0evUzqdEqLAyc0Nh2 x false +bcrypt-2x $2x$04$DJy0tjWObWOeF9SunGbjBecZNu.1BQqtMEBs0evUzqdEqLAyc0Nh2 wrong false +bcrypt-2 $2$04$DJy0tjWObWOeF9SunGbjBecZNu.1BQqtMEBs0evUzqdEqLAyc0Nh2 false +bcrypt-2 $2$04$DJy0tjWObWOeF9SunGbjBecZNu.1BQqtMEBs0evUzqdEqLAyc0Nh2 x false +bcrypt-2 $2$04$DJy0tjWObWOeF9SunGbjBecZNu.1BQqtMEBs0evUzqdEqLAyc0Nh2 wrong false +htpasswd-m $apr1$vYSVh5Au$ca13fiOoIupaWG05L9TzN. a true +htpasswd-m $apr1$vYSVh5Au$ca13fiOoIupaWG05L9TzN. ax false +htpasswd-m $apr1$vYSVh5Au$ca13fiOoIupaWG05L9TzN. false +htpasswd-m $apr1$vYSVh5Au$ca13fiOoIupaWG05L9TzN. wrong false +htpasswd-m $apr1$vYSVh5Au$ca13fiOoIupaWG05L9TzN. A false +htpasswd-B4 $2y$04$nC4yv9CRIhkecRZ1dN8H1uTT2vdx39cnJ5fcoXyAbN8jGLgPPG8zi a true +htpasswd-B4 $2y$04$nC4yv9CRIhkecRZ1dN8H1uTT2vdx39cnJ5fcoXyAbN8jGLgPPG8zi ax false +htpasswd-B4 $2y$04$nC4yv9CRIhkecRZ1dN8H1uTT2vdx39cnJ5fcoXyAbN8jGLgPPG8zi false +htpasswd-B4 $2y$04$nC4yv9CRIhkecRZ1dN8H1uTT2vdx39cnJ5fcoXyAbN8jGLgPPG8zi wrong false +htpasswd-B4 $2y$04$nC4yv9CRIhkecRZ1dN8H1uTT2vdx39cnJ5fcoXyAbN8jGLgPPG8zi A false +htpasswd-s {SHA}hvfkN/qlp/zhXR3cuerq6jd2Z7g= a true +htpasswd-s {SHA}hvfkN/qlp/zhXR3cuerq6jd2Z7g= ax false +htpasswd-s {SHA}hvfkN/qlp/zhXR3cuerq6jd2Z7g= false +htpasswd-s {SHA}hvfkN/qlp/zhXR3cuerq6jd2Z7g= wrong false +htpasswd-s {SHA}hvfkN/qlp/zhXR3cuerq6jd2Z7g= A false +htpasswd-d yjxEWv7zE/jdk a false +htpasswd-d yjxEWv7zE/jdk ax false +htpasswd-d yjxEWv7zE/jdk false +htpasswd-d yjxEWv7zE/jdk wrong false +htpasswd-d yjxEWv7zE/jdk A false +htpasswd-p a a false +htpasswd-p a ax false +htpasswd-p a false +htpasswd-p a wrong false +htpasswd-p a A false +openssl-1 $1$tbJTlyc3$4waooEe/sECMpHF.prCtm1 a true +openssl-1 $1$tbJTlyc3$4waooEe/sECMpHF.prCtm1 ax false +openssl-1 $1$tbJTlyc3$4waooEe/sECMpHF.prCtm1 false +openssl-1 $1$tbJTlyc3$4waooEe/sECMpHF.prCtm1 wrong false +openssl-1 $1$tbJTlyc3$4waooEe/sECMpHF.prCtm1 A false +openssl-apr1 $apr1$f8tfopsl$bmMsY6tXra6vfHAcxO5391 a true +openssl-apr1 $apr1$f8tfopsl$bmMsY6tXra6vfHAcxO5391 ax false +openssl-apr1 $apr1$f8tfopsl$bmMsY6tXra6vfHAcxO5391 false +openssl-apr1 $apr1$f8tfopsl$bmMsY6tXra6vfHAcxO5391 wrong false +openssl-apr1 $apr1$f8tfopsl$bmMsY6tXra6vfHAcxO5391 A false +openssl-1-shortsalt $1$ab$NM4FR4Dl/CzoTSJTd3YJ3. a true +openssl-1-shortsalt $1$ab$NM4FR4Dl/CzoTSJTd3YJ3. ax false +openssl-1-shortsalt $1$ab$NM4FR4Dl/CzoTSJTd3YJ3. false +openssl-1-shortsalt $1$ab$NM4FR4Dl/CzoTSJTd3YJ3. wrong false +openssl-1-shortsalt $1$ab$NM4FR4Dl/CzoTSJTd3YJ3. A false +openssl-apr1-emptysalt $apr1$$ny0TwGBt5/BPT4.mbWBKk. a true +openssl-apr1-emptysalt $apr1$$ny0TwGBt5/BPT4.mbWBKk. ax false +openssl-apr1-emptysalt $apr1$$ny0TwGBt5/BPT4.mbWBKk. false +openssl-apr1-emptysalt $apr1$$ny0TwGBt5/BPT4.mbWBKk. wrong false +openssl-apr1-emptysalt $apr1$$ny0TwGBt5/BPT4.mbWBKk. A false +openssl-5 $5$zULwIMBeqn4kkosz$Ut75HTjZYT3gh.CVVugJLjaOhKQwXJuSe5X2lmSNZ70 a false +openssl-5 $5$zULwIMBeqn4kkosz$Ut75HTjZYT3gh.CVVugJLjaOhKQwXJuSe5X2lmSNZ70 ax false +openssl-5 $5$zULwIMBeqn4kkosz$Ut75HTjZYT3gh.CVVugJLjaOhKQwXJuSe5X2lmSNZ70 false +openssl-5 $5$zULwIMBeqn4kkosz$Ut75HTjZYT3gh.CVVugJLjaOhKQwXJuSe5X2lmSNZ70 wrong false +openssl-5 $5$zULwIMBeqn4kkosz$Ut75HTjZYT3gh.CVVugJLjaOhKQwXJuSe5X2lmSNZ70 A false +openssl-6 $6$tHRsHpkr/tmNaSGS$u7oZik3t3n7b5ClQeQD0Q0Tdrek7EHbXwy7aM3xtBlwuhHbmIGnGt1e1UO8dyVQWT1DIQlDmGnlT7xnkEz9fF0 a false +openssl-6 $6$tHRsHpkr/tmNaSGS$u7oZik3t3n7b5ClQeQD0Q0Tdrek7EHbXwy7aM3xtBlwuhHbmIGnGt1e1UO8dyVQWT1DIQlDmGnlT7xnkEz9fF0 ax false +openssl-6 $6$tHRsHpkr/tmNaSGS$u7oZik3t3n7b5ClQeQD0Q0Tdrek7EHbXwy7aM3xtBlwuhHbmIGnGt1e1UO8dyVQWT1DIQlDmGnlT7xnkEz9fF0 false +openssl-6 $6$tHRsHpkr/tmNaSGS$u7oZik3t3n7b5ClQeQD0Q0Tdrek7EHbXwy7aM3xtBlwuhHbmIGnGt1e1UO8dyVQWT1DIQlDmGnlT7xnkEz9fF0 wrong false +openssl-6 $6$tHRsHpkr/tmNaSGS$u7oZik3t3n7b5ClQeQD0Q0Tdrek7EHbXwy7aM3xtBlwuhHbmIGnGt1e1UO8dyVQWT1DIQlDmGnlT7xnkEz9fF0 A false +mkpasswd-md5 $1$MEvnMMGX$0vJPv.fK/39aetW4qCR/71 a true +mkpasswd-md5 $1$MEvnMMGX$0vJPv.fK/39aetW4qCR/71 ax false +mkpasswd-md5 $1$MEvnMMGX$0vJPv.fK/39aetW4qCR/71 false +mkpasswd-md5 $1$MEvnMMGX$0vJPv.fK/39aetW4qCR/71 wrong false +mkpasswd-md5 $1$MEvnMMGX$0vJPv.fK/39aetW4qCR/71 A false +python-2a $2a$04$2H8XCsiYS0k5UqJzwS859.4kJh1zmsPTe/XKGwr1cqeyi6dVT21l6 a true +python-2a $2a$04$2H8XCsiYS0k5UqJzwS859.4kJh1zmsPTe/XKGwr1cqeyi6dVT21l6 ax false +python-2a $2a$04$2H8XCsiYS0k5UqJzwS859.4kJh1zmsPTe/XKGwr1cqeyi6dVT21l6 false +python-2a $2a$04$2H8XCsiYS0k5UqJzwS859.4kJh1zmsPTe/XKGwr1cqeyi6dVT21l6 wrong false +python-2a $2a$04$2H8XCsiYS0k5UqJzwS859.4kJh1zmsPTe/XKGwr1cqeyi6dVT21l6 A false +python-2b $2b$04$SMGlBzbwJwbNOQE6yr1V7ur7z8dwILVNI1e7Sd1wZVKZonXwrQKIG a true +python-2b $2b$04$SMGlBzbwJwbNOQE6yr1V7ur7z8dwILVNI1e7Sd1wZVKZonXwrQKIG ax false +python-2b $2b$04$SMGlBzbwJwbNOQE6yr1V7ur7z8dwILVNI1e7Sd1wZVKZonXwrQKIG false +python-2b $2b$04$SMGlBzbwJwbNOQE6yr1V7ur7z8dwILVNI1e7Sd1wZVKZonXwrQKIG wrong false +python-2b $2b$04$SMGlBzbwJwbNOQE6yr1V7ur7z8dwILVNI1e7Sd1wZVKZonXwrQKIG A false +bcrypt-2x $2x$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq a true +bcrypt-2x $2x$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq ax false +bcrypt-2x $2x$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq false +bcrypt-2x $2x$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq wrong false +bcrypt-2x $2x$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq A false +bcrypt-2 $2$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq a false +bcrypt-2 $2$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq ax false +bcrypt-2 $2$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq false +bcrypt-2 $2$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq wrong false +bcrypt-2 $2$04$tyowHNukOaSIKirfz4/wFekksbmug3zBFAZYHfBvhM5.YddSeOReq A false +htpasswd-m $apr1$CwwcWcVS$GGwL.UZZtlTWo16EXo7mQ0 password true +htpasswd-m $apr1$CwwcWcVS$GGwL.UZZtlTWo16EXo7mQ0 passwordx false +htpasswd-m $apr1$CwwcWcVS$GGwL.UZZtlTWo16EXo7mQ0 false +htpasswd-m $apr1$CwwcWcVS$GGwL.UZZtlTWo16EXo7mQ0 wrong false +htpasswd-m $apr1$CwwcWcVS$GGwL.UZZtlTWo16EXo7mQ0 PASSWORD false +htpasswd-B4 $2y$04$gDTacRouQ0z1BUV/bea0UOLnr0scNii70IkWfKSaAPAWJZ5dK/YOm password true +htpasswd-B4 $2y$04$gDTacRouQ0z1BUV/bea0UOLnr0scNii70IkWfKSaAPAWJZ5dK/YOm passwordx false +htpasswd-B4 $2y$04$gDTacRouQ0z1BUV/bea0UOLnr0scNii70IkWfKSaAPAWJZ5dK/YOm false +htpasswd-B4 $2y$04$gDTacRouQ0z1BUV/bea0UOLnr0scNii70IkWfKSaAPAWJZ5dK/YOm wrong false +htpasswd-B4 $2y$04$gDTacRouQ0z1BUV/bea0UOLnr0scNii70IkWfKSaAPAWJZ5dK/YOm PASSWORD false +htpasswd-s {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= password true +htpasswd-s {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= passwordx false +htpasswd-s {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= false +htpasswd-s {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= wrong false +htpasswd-s {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= PASSWORD false +htpasswd-d VuBlIF6Fdzsxw password false +htpasswd-d VuBlIF6Fdzsxw passwordx false +htpasswd-d VuBlIF6Fdzsxw false +htpasswd-d VuBlIF6Fdzsxw wrong false +htpasswd-d VuBlIF6Fdzsxw PASSWORD false +htpasswd-p password password false +htpasswd-p password passwordx false +htpasswd-p password false +htpasswd-p password wrong false +htpasswd-p password PASSWORD false +openssl-1 $1$Mhj0o/OG$ZZX5YRGPHoJj48EU7yOcl. password true +openssl-1 $1$Mhj0o/OG$ZZX5YRGPHoJj48EU7yOcl. passwordx false +openssl-1 $1$Mhj0o/OG$ZZX5YRGPHoJj48EU7yOcl. false +openssl-1 $1$Mhj0o/OG$ZZX5YRGPHoJj48EU7yOcl. wrong false +openssl-1 $1$Mhj0o/OG$ZZX5YRGPHoJj48EU7yOcl. PASSWORD false +openssl-apr1 $apr1$tcJ5LT8O$yuACEhxH0tcpHVsopd/.P1 password true +openssl-apr1 $apr1$tcJ5LT8O$yuACEhxH0tcpHVsopd/.P1 passwordx false +openssl-apr1 $apr1$tcJ5LT8O$yuACEhxH0tcpHVsopd/.P1 false +openssl-apr1 $apr1$tcJ5LT8O$yuACEhxH0tcpHVsopd/.P1 wrong false +openssl-apr1 $apr1$tcJ5LT8O$yuACEhxH0tcpHVsopd/.P1 PASSWORD false +openssl-1-shortsalt $1$ab$oKsM6dtDD2L1bKowOBX.7. password true +openssl-1-shortsalt $1$ab$oKsM6dtDD2L1bKowOBX.7. passwordx false +openssl-1-shortsalt $1$ab$oKsM6dtDD2L1bKowOBX.7. false +openssl-1-shortsalt $1$ab$oKsM6dtDD2L1bKowOBX.7. wrong false +openssl-1-shortsalt $1$ab$oKsM6dtDD2L1bKowOBX.7. PASSWORD false +openssl-apr1-emptysalt $apr1$$qjtLUZpoiD4RwXIYf4qVb0 password true +openssl-apr1-emptysalt $apr1$$qjtLUZpoiD4RwXIYf4qVb0 passwordx false +openssl-apr1-emptysalt $apr1$$qjtLUZpoiD4RwXIYf4qVb0 false +openssl-apr1-emptysalt $apr1$$qjtLUZpoiD4RwXIYf4qVb0 wrong false +openssl-apr1-emptysalt $apr1$$qjtLUZpoiD4RwXIYf4qVb0 PASSWORD false +openssl-5 $5$KVyVyRPcXKu8npAc$W3gDx7.V6NDEq.ioOS75mVn4J3TGEYWFWUeTRc8E.T7 password false +openssl-5 $5$KVyVyRPcXKu8npAc$W3gDx7.V6NDEq.ioOS75mVn4J3TGEYWFWUeTRc8E.T7 passwordx false +openssl-5 $5$KVyVyRPcXKu8npAc$W3gDx7.V6NDEq.ioOS75mVn4J3TGEYWFWUeTRc8E.T7 false +openssl-5 $5$KVyVyRPcXKu8npAc$W3gDx7.V6NDEq.ioOS75mVn4J3TGEYWFWUeTRc8E.T7 wrong false +openssl-5 $5$KVyVyRPcXKu8npAc$W3gDx7.V6NDEq.ioOS75mVn4J3TGEYWFWUeTRc8E.T7 PASSWORD false +openssl-6 $6$8uNC22J7573Y.WGN$FNsV1oaG10WLBMqXZwJbdui1uL48Yu7fLQ7u.oZAWTYhT8sPNvCa8UN7rKV89YDcnWxJoUukszEKz.9Shns5u. password false +openssl-6 $6$8uNC22J7573Y.WGN$FNsV1oaG10WLBMqXZwJbdui1uL48Yu7fLQ7u.oZAWTYhT8sPNvCa8UN7rKV89YDcnWxJoUukszEKz.9Shns5u. passwordx false +openssl-6 $6$8uNC22J7573Y.WGN$FNsV1oaG10WLBMqXZwJbdui1uL48Yu7fLQ7u.oZAWTYhT8sPNvCa8UN7rKV89YDcnWxJoUukszEKz.9Shns5u. false +openssl-6 $6$8uNC22J7573Y.WGN$FNsV1oaG10WLBMqXZwJbdui1uL48Yu7fLQ7u.oZAWTYhT8sPNvCa8UN7rKV89YDcnWxJoUukszEKz.9Shns5u. wrong false +openssl-6 $6$8uNC22J7573Y.WGN$FNsV1oaG10WLBMqXZwJbdui1uL48Yu7fLQ7u.oZAWTYhT8sPNvCa8UN7rKV89YDcnWxJoUukszEKz.9Shns5u. PASSWORD false +mkpasswd-md5 $1$9f.2ajQR$RpgXF9/i4.uIWHMhfSviw. password true +mkpasswd-md5 $1$9f.2ajQR$RpgXF9/i4.uIWHMhfSviw. passwordx false +mkpasswd-md5 $1$9f.2ajQR$RpgXF9/i4.uIWHMhfSviw. false +mkpasswd-md5 $1$9f.2ajQR$RpgXF9/i4.uIWHMhfSviw. wrong false +mkpasswd-md5 $1$9f.2ajQR$RpgXF9/i4.uIWHMhfSviw. PASSWORD false +python-2a $2a$04$yCgT6PzoTyNh5Z6ftXxN8.0KTjQjQx4lVWbqmpaKNoflMn5VK7lWS password true +python-2a $2a$04$yCgT6PzoTyNh5Z6ftXxN8.0KTjQjQx4lVWbqmpaKNoflMn5VK7lWS passwordx false +python-2a $2a$04$yCgT6PzoTyNh5Z6ftXxN8.0KTjQjQx4lVWbqmpaKNoflMn5VK7lWS false +python-2a $2a$04$yCgT6PzoTyNh5Z6ftXxN8.0KTjQjQx4lVWbqmpaKNoflMn5VK7lWS wrong false +python-2a $2a$04$yCgT6PzoTyNh5Z6ftXxN8.0KTjQjQx4lVWbqmpaKNoflMn5VK7lWS PASSWORD false +python-2b $2b$04$o75I1qiUN65Gv1xI1if0I.F8grx/B2V9b/AGgvZ2zrCg5tv49YB1K password true +python-2b $2b$04$o75I1qiUN65Gv1xI1if0I.F8grx/B2V9b/AGgvZ2zrCg5tv49YB1K passwordx false +python-2b $2b$04$o75I1qiUN65Gv1xI1if0I.F8grx/B2V9b/AGgvZ2zrCg5tv49YB1K false +python-2b $2b$04$o75I1qiUN65Gv1xI1if0I.F8grx/B2V9b/AGgvZ2zrCg5tv49YB1K wrong false +python-2b $2b$04$o75I1qiUN65Gv1xI1if0I.F8grx/B2V9b/AGgvZ2zrCg5tv49YB1K PASSWORD false +bcrypt-2x $2x$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. password true +bcrypt-2x $2x$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. passwordx false +bcrypt-2x $2x$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. false +bcrypt-2x $2x$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. wrong false +bcrypt-2x $2x$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. PASSWORD false +bcrypt-2 $2$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. password false +bcrypt-2 $2$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. passwordx false +bcrypt-2 $2$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. false +bcrypt-2 $2$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. wrong false +bcrypt-2 $2$04$BPBb38JpaCs9lwP3BhEda.t/cWcoMLOSrk4W49c70p6.A4eawMfC. PASSWORD false +htpasswd-m $apr1$g31pHEWN$vg7XGZZshsBmyrzXi.xc6. md5 true +htpasswd-m $apr1$g31pHEWN$vg7XGZZshsBmyrzXi.xc6. md5x false +htpasswd-m $apr1$g31pHEWN$vg7XGZZshsBmyrzXi.xc6. false +htpasswd-m $apr1$g31pHEWN$vg7XGZZshsBmyrzXi.xc6. wrong false +htpasswd-m $apr1$g31pHEWN$vg7XGZZshsBmyrzXi.xc6. MD5 false +htpasswd-B4 $2y$04$B4W6boDmmJRsoumNh0ImvOVK.oK6PjGJDLXM8zJ6DgxftC4jAr0u2 md5 true +htpasswd-B4 $2y$04$B4W6boDmmJRsoumNh0ImvOVK.oK6PjGJDLXM8zJ6DgxftC4jAr0u2 md5x false +htpasswd-B4 $2y$04$B4W6boDmmJRsoumNh0ImvOVK.oK6PjGJDLXM8zJ6DgxftC4jAr0u2 false +htpasswd-B4 $2y$04$B4W6boDmmJRsoumNh0ImvOVK.oK6PjGJDLXM8zJ6DgxftC4jAr0u2 wrong false +htpasswd-B4 $2y$04$B4W6boDmmJRsoumNh0ImvOVK.oK6PjGJDLXM8zJ6DgxftC4jAr0u2 MD5 false +htpasswd-s {SHA}weqU9+UkZ50M80q3sLKKvkG6cys= md5 true +htpasswd-s {SHA}weqU9+UkZ50M80q3sLKKvkG6cys= md5x false +htpasswd-s {SHA}weqU9+UkZ50M80q3sLKKvkG6cys= false +htpasswd-s {SHA}weqU9+UkZ50M80q3sLKKvkG6cys= wrong false +htpasswd-s {SHA}weqU9+UkZ50M80q3sLKKvkG6cys= MD5 false +htpasswd-d Ta.SIyEdQoZpk md5 false +htpasswd-d Ta.SIyEdQoZpk md5x false +htpasswd-d Ta.SIyEdQoZpk false +htpasswd-d Ta.SIyEdQoZpk wrong false +htpasswd-d Ta.SIyEdQoZpk MD5 false +htpasswd-p md5 md5 false +htpasswd-p md5 md5x false +htpasswd-p md5 false +htpasswd-p md5 wrong false +htpasswd-p md5 MD5 false +openssl-1 $1$XPmlQnmq$Ae7wZj8qoInpy2kUWye6E. md5 true +openssl-1 $1$XPmlQnmq$Ae7wZj8qoInpy2kUWye6E. md5x false +openssl-1 $1$XPmlQnmq$Ae7wZj8qoInpy2kUWye6E. false +openssl-1 $1$XPmlQnmq$Ae7wZj8qoInpy2kUWye6E. wrong false +openssl-1 $1$XPmlQnmq$Ae7wZj8qoInpy2kUWye6E. MD5 false +openssl-apr1 $apr1$TAtAz26U$LlP94.bZzYbia1XfQLMvF/ md5 true +openssl-apr1 $apr1$TAtAz26U$LlP94.bZzYbia1XfQLMvF/ md5x false +openssl-apr1 $apr1$TAtAz26U$LlP94.bZzYbia1XfQLMvF/ false +openssl-apr1 $apr1$TAtAz26U$LlP94.bZzYbia1XfQLMvF/ wrong false +openssl-apr1 $apr1$TAtAz26U$LlP94.bZzYbia1XfQLMvF/ MD5 false +openssl-1-shortsalt $1$ab$SnVuC3LZjmxvC78v4hz0Z0 md5 true +openssl-1-shortsalt $1$ab$SnVuC3LZjmxvC78v4hz0Z0 md5x false +openssl-1-shortsalt $1$ab$SnVuC3LZjmxvC78v4hz0Z0 false +openssl-1-shortsalt $1$ab$SnVuC3LZjmxvC78v4hz0Z0 wrong false +openssl-1-shortsalt $1$ab$SnVuC3LZjmxvC78v4hz0Z0 MD5 false +openssl-apr1-emptysalt $apr1$$jgYrqNrfULK9sP/aaaoue0 md5 true +openssl-apr1-emptysalt $apr1$$jgYrqNrfULK9sP/aaaoue0 md5x false +openssl-apr1-emptysalt $apr1$$jgYrqNrfULK9sP/aaaoue0 false +openssl-apr1-emptysalt $apr1$$jgYrqNrfULK9sP/aaaoue0 wrong false +openssl-apr1-emptysalt $apr1$$jgYrqNrfULK9sP/aaaoue0 MD5 false +openssl-5 $5$C88zhC/6kXPVmr2w$7O41ncyUwI97zsKD91MQbUptpEvCs6LCG1deQagGDe6 md5 false +openssl-5 $5$C88zhC/6kXPVmr2w$7O41ncyUwI97zsKD91MQbUptpEvCs6LCG1deQagGDe6 md5x false +openssl-5 $5$C88zhC/6kXPVmr2w$7O41ncyUwI97zsKD91MQbUptpEvCs6LCG1deQagGDe6 false +openssl-5 $5$C88zhC/6kXPVmr2w$7O41ncyUwI97zsKD91MQbUptpEvCs6LCG1deQagGDe6 wrong false +openssl-5 $5$C88zhC/6kXPVmr2w$7O41ncyUwI97zsKD91MQbUptpEvCs6LCG1deQagGDe6 MD5 false +openssl-6 $6$hp9HeKj21yYVFvCe$huM3znCj/LsmlWmpRxj0Vjce0LO..YFPeGfB2/SfVACGsDtYgImwU4gDAAcpSftEv66QFuH4R2UGGAFZtaVIe. md5 false +openssl-6 $6$hp9HeKj21yYVFvCe$huM3znCj/LsmlWmpRxj0Vjce0LO..YFPeGfB2/SfVACGsDtYgImwU4gDAAcpSftEv66QFuH4R2UGGAFZtaVIe. md5x false +openssl-6 $6$hp9HeKj21yYVFvCe$huM3znCj/LsmlWmpRxj0Vjce0LO..YFPeGfB2/SfVACGsDtYgImwU4gDAAcpSftEv66QFuH4R2UGGAFZtaVIe. false +openssl-6 $6$hp9HeKj21yYVFvCe$huM3znCj/LsmlWmpRxj0Vjce0LO..YFPeGfB2/SfVACGsDtYgImwU4gDAAcpSftEv66QFuH4R2UGGAFZtaVIe. wrong false +openssl-6 $6$hp9HeKj21yYVFvCe$huM3znCj/LsmlWmpRxj0Vjce0LO..YFPeGfB2/SfVACGsDtYgImwU4gDAAcpSftEv66QFuH4R2UGGAFZtaVIe. MD5 false +mkpasswd-md5 $1$en6WEMIM$HF.MmEKUTHbHXA4RhK4ol0 md5 true +mkpasswd-md5 $1$en6WEMIM$HF.MmEKUTHbHXA4RhK4ol0 md5x false +mkpasswd-md5 $1$en6WEMIM$HF.MmEKUTHbHXA4RhK4ol0 false +mkpasswd-md5 $1$en6WEMIM$HF.MmEKUTHbHXA4RhK4ol0 wrong false +mkpasswd-md5 $1$en6WEMIM$HF.MmEKUTHbHXA4RhK4ol0 MD5 false +python-2a $2a$04$U9JBc4vUuefTbpGopMq6yOZWPMF9gdSOkQAnTIqcKcf37Hm..mK3. md5 true +python-2a $2a$04$U9JBc4vUuefTbpGopMq6yOZWPMF9gdSOkQAnTIqcKcf37Hm..mK3. md5x false +python-2a $2a$04$U9JBc4vUuefTbpGopMq6yOZWPMF9gdSOkQAnTIqcKcf37Hm..mK3. false +python-2a $2a$04$U9JBc4vUuefTbpGopMq6yOZWPMF9gdSOkQAnTIqcKcf37Hm..mK3. wrong false +python-2a $2a$04$U9JBc4vUuefTbpGopMq6yOZWPMF9gdSOkQAnTIqcKcf37Hm..mK3. MD5 false +python-2b $2b$04$InhOAqPhYKzTv7HL7nOwDugKGO/gOt.4W64qRNeTUjGRqkLbTf67O md5 true +python-2b $2b$04$InhOAqPhYKzTv7HL7nOwDugKGO/gOt.4W64qRNeTUjGRqkLbTf67O md5x false +python-2b $2b$04$InhOAqPhYKzTv7HL7nOwDugKGO/gOt.4W64qRNeTUjGRqkLbTf67O false +python-2b $2b$04$InhOAqPhYKzTv7HL7nOwDugKGO/gOt.4W64qRNeTUjGRqkLbTf67O wrong false +python-2b $2b$04$InhOAqPhYKzTv7HL7nOwDugKGO/gOt.4W64qRNeTUjGRqkLbTf67O MD5 false +bcrypt-2x $2x$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 md5 true +bcrypt-2x $2x$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 md5x false +bcrypt-2x $2x$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 false +bcrypt-2x $2x$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 wrong false +bcrypt-2x $2x$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 MD5 false +bcrypt-2 $2$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 md5 false +bcrypt-2 $2$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 md5x false +bcrypt-2 $2$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 false +bcrypt-2 $2$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 wrong false +bcrypt-2 $2$04$VUGKzToEcJTrJmrumZ4V.uqjiBPFBgquQUbH4xsN.lBEDEZLkug16 MD5 false +htpasswd-m $apr1$0YPFzcUB$/.cvG0ZEvxgTCnE9CDkNe0 exactly16chars!! true +htpasswd-m $apr1$0YPFzcUB$/.cvG0ZEvxgTCnE9CDkNe0 exactly16chars!!x false +htpasswd-m $apr1$0YPFzcUB$/.cvG0ZEvxgTCnE9CDkNe0 false +htpasswd-m $apr1$0YPFzcUB$/.cvG0ZEvxgTCnE9CDkNe0 wrong false +htpasswd-m $apr1$0YPFzcUB$/.cvG0ZEvxgTCnE9CDkNe0 EXACTLY16CHARS!! false +htpasswd-B4 $2y$04$uxdbX.euF.ue5p.9cmZYBO6ojlHMjpjnXdJqXC.arLryV.xz28Vk6 exactly16chars!! true +htpasswd-B4 $2y$04$uxdbX.euF.ue5p.9cmZYBO6ojlHMjpjnXdJqXC.arLryV.xz28Vk6 exactly16chars!!x false +htpasswd-B4 $2y$04$uxdbX.euF.ue5p.9cmZYBO6ojlHMjpjnXdJqXC.arLryV.xz28Vk6 false +htpasswd-B4 $2y$04$uxdbX.euF.ue5p.9cmZYBO6ojlHMjpjnXdJqXC.arLryV.xz28Vk6 wrong false +htpasswd-B4 $2y$04$uxdbX.euF.ue5p.9cmZYBO6ojlHMjpjnXdJqXC.arLryV.xz28Vk6 EXACTLY16CHARS!! false +htpasswd-s {SHA}DtinMVJ6h7i5Cihng1qaYyOQRBQ= exactly16chars!! true +htpasswd-s {SHA}DtinMVJ6h7i5Cihng1qaYyOQRBQ= exactly16chars!!x false +htpasswd-s {SHA}DtinMVJ6h7i5Cihng1qaYyOQRBQ= false +htpasswd-s {SHA}DtinMVJ6h7i5Cihng1qaYyOQRBQ= wrong false +htpasswd-s {SHA}DtinMVJ6h7i5Cihng1qaYyOQRBQ= EXACTLY16CHARS!! false +htpasswd-d PjavGyPCvrAgk exactly16chars!! false +htpasswd-d PjavGyPCvrAgk exactly16chars!!x false +htpasswd-d PjavGyPCvrAgk false +htpasswd-d PjavGyPCvrAgk wrong false +htpasswd-d PjavGyPCvrAgk EXACTLY16CHARS!! false +htpasswd-p exactly16chars!! exactly16chars!! false +htpasswd-p exactly16chars!! exactly16chars!!x false +htpasswd-p exactly16chars!! false +htpasswd-p exactly16chars!! wrong false +htpasswd-p exactly16chars!! EXACTLY16CHARS!! false +openssl-1 $1$h/c56FCH$vJr51g3rNPGEN5KkXSsKi. exactly16chars!! true +openssl-1 $1$h/c56FCH$vJr51g3rNPGEN5KkXSsKi. exactly16chars!!x false +openssl-1 $1$h/c56FCH$vJr51g3rNPGEN5KkXSsKi. false +openssl-1 $1$h/c56FCH$vJr51g3rNPGEN5KkXSsKi. wrong false +openssl-1 $1$h/c56FCH$vJr51g3rNPGEN5KkXSsKi. EXACTLY16CHARS!! false +openssl-apr1 $apr1$KA6dMtb7$TmsG/ymTixWV2FtpDSJUX1 exactly16chars!! true +openssl-apr1 $apr1$KA6dMtb7$TmsG/ymTixWV2FtpDSJUX1 exactly16chars!!x false +openssl-apr1 $apr1$KA6dMtb7$TmsG/ymTixWV2FtpDSJUX1 false +openssl-apr1 $apr1$KA6dMtb7$TmsG/ymTixWV2FtpDSJUX1 wrong false +openssl-apr1 $apr1$KA6dMtb7$TmsG/ymTixWV2FtpDSJUX1 EXACTLY16CHARS!! false +openssl-1-shortsalt $1$ab$xwqbB8gL9n.2vL6nAsJtm1 exactly16chars!! true +openssl-1-shortsalt $1$ab$xwqbB8gL9n.2vL6nAsJtm1 exactly16chars!!x false +openssl-1-shortsalt $1$ab$xwqbB8gL9n.2vL6nAsJtm1 false +openssl-1-shortsalt $1$ab$xwqbB8gL9n.2vL6nAsJtm1 wrong false +openssl-1-shortsalt $1$ab$xwqbB8gL9n.2vL6nAsJtm1 EXACTLY16CHARS!! false +openssl-apr1-emptysalt $apr1$$EEyytFCbBBP4TlaEnys5u0 exactly16chars!! true +openssl-apr1-emptysalt $apr1$$EEyytFCbBBP4TlaEnys5u0 exactly16chars!!x false +openssl-apr1-emptysalt $apr1$$EEyytFCbBBP4TlaEnys5u0 false +openssl-apr1-emptysalt $apr1$$EEyytFCbBBP4TlaEnys5u0 wrong false +openssl-apr1-emptysalt $apr1$$EEyytFCbBBP4TlaEnys5u0 EXACTLY16CHARS!! false +openssl-5 $5$ZjJKiXZxfs/6VuBU$7sO9rpjvPjy1JSIsAAYk4lJ3WLh19JP51sTxchvjZE9 exactly16chars!! false +openssl-5 $5$ZjJKiXZxfs/6VuBU$7sO9rpjvPjy1JSIsAAYk4lJ3WLh19JP51sTxchvjZE9 exactly16chars!!x false +openssl-5 $5$ZjJKiXZxfs/6VuBU$7sO9rpjvPjy1JSIsAAYk4lJ3WLh19JP51sTxchvjZE9 false +openssl-5 $5$ZjJKiXZxfs/6VuBU$7sO9rpjvPjy1JSIsAAYk4lJ3WLh19JP51sTxchvjZE9 wrong false +openssl-5 $5$ZjJKiXZxfs/6VuBU$7sO9rpjvPjy1JSIsAAYk4lJ3WLh19JP51sTxchvjZE9 EXACTLY16CHARS!! false +openssl-6 $6$Z5yddgOSz.lGjejV$.BJvVc2UQpeDmKOBC54HuNdykLsiscQBdw9l0t/n7drbwBkP8OYxxs2/KKK3QNdqtWllobsTTWxVgXJmYP1Gf/ exactly16chars!! false +openssl-6 $6$Z5yddgOSz.lGjejV$.BJvVc2UQpeDmKOBC54HuNdykLsiscQBdw9l0t/n7drbwBkP8OYxxs2/KKK3QNdqtWllobsTTWxVgXJmYP1Gf/ exactly16chars!!x false +openssl-6 $6$Z5yddgOSz.lGjejV$.BJvVc2UQpeDmKOBC54HuNdykLsiscQBdw9l0t/n7drbwBkP8OYxxs2/KKK3QNdqtWllobsTTWxVgXJmYP1Gf/ false +openssl-6 $6$Z5yddgOSz.lGjejV$.BJvVc2UQpeDmKOBC54HuNdykLsiscQBdw9l0t/n7drbwBkP8OYxxs2/KKK3QNdqtWllobsTTWxVgXJmYP1Gf/ wrong false +openssl-6 $6$Z5yddgOSz.lGjejV$.BJvVc2UQpeDmKOBC54HuNdykLsiscQBdw9l0t/n7drbwBkP8OYxxs2/KKK3QNdqtWllobsTTWxVgXJmYP1Gf/ EXACTLY16CHARS!! false +mkpasswd-md5 $1$HByxixpO$iqdc8x5Dv2MxULv595vqi. exactly16chars!! true +mkpasswd-md5 $1$HByxixpO$iqdc8x5Dv2MxULv595vqi. exactly16chars!!x false +mkpasswd-md5 $1$HByxixpO$iqdc8x5Dv2MxULv595vqi. false +mkpasswd-md5 $1$HByxixpO$iqdc8x5Dv2MxULv595vqi. wrong false +mkpasswd-md5 $1$HByxixpO$iqdc8x5Dv2MxULv595vqi. EXACTLY16CHARS!! false +python-2a $2a$04$flhO0PB96mLQ7339n72XxO5gWkCQ26uZrmh5hUTeaonh8E6Y7M7yK exactly16chars!! true +python-2a $2a$04$flhO0PB96mLQ7339n72XxO5gWkCQ26uZrmh5hUTeaonh8E6Y7M7yK exactly16chars!!x false +python-2a $2a$04$flhO0PB96mLQ7339n72XxO5gWkCQ26uZrmh5hUTeaonh8E6Y7M7yK false +python-2a $2a$04$flhO0PB96mLQ7339n72XxO5gWkCQ26uZrmh5hUTeaonh8E6Y7M7yK wrong false +python-2a $2a$04$flhO0PB96mLQ7339n72XxO5gWkCQ26uZrmh5hUTeaonh8E6Y7M7yK EXACTLY16CHARS!! false +python-2b $2b$04$ZqdQ9f0pzD9.lNZeEhUOSOKiab6oLUFuN.hACsremi/sTsLfcFF/G exactly16chars!! true +python-2b $2b$04$ZqdQ9f0pzD9.lNZeEhUOSOKiab6oLUFuN.hACsremi/sTsLfcFF/G exactly16chars!!x false +python-2b $2b$04$ZqdQ9f0pzD9.lNZeEhUOSOKiab6oLUFuN.hACsremi/sTsLfcFF/G false +python-2b $2b$04$ZqdQ9f0pzD9.lNZeEhUOSOKiab6oLUFuN.hACsremi/sTsLfcFF/G wrong false +python-2b $2b$04$ZqdQ9f0pzD9.lNZeEhUOSOKiab6oLUFuN.hACsremi/sTsLfcFF/G EXACTLY16CHARS!! false +bcrypt-2x $2x$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu exactly16chars!! true +bcrypt-2x $2x$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu exactly16chars!!x false +bcrypt-2x $2x$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu false +bcrypt-2x $2x$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu wrong false +bcrypt-2x $2x$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu EXACTLY16CHARS!! false +bcrypt-2 $2$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu exactly16chars!! false +bcrypt-2 $2$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu exactly16chars!!x false +bcrypt-2 $2$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu false +bcrypt-2 $2$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu wrong false +bcrypt-2 $2$04$IwPnh6mD8HwlgyTTsVpT5.uZOtS8b5MJ5En.olqc.0EDmK/P/2ySu EXACTLY16CHARS!! false +htpasswd-m $apr1$WAlf51ne$23JJAGXUy4cSlZ33vd3AK1 seventeen_chars!! true +htpasswd-m $apr1$WAlf51ne$23JJAGXUy4cSlZ33vd3AK1 seventeen_chars!!x false +htpasswd-m $apr1$WAlf51ne$23JJAGXUy4cSlZ33vd3AK1 false +htpasswd-m $apr1$WAlf51ne$23JJAGXUy4cSlZ33vd3AK1 wrong false +htpasswd-m $apr1$WAlf51ne$23JJAGXUy4cSlZ33vd3AK1 SEVENTEEN_CHARS!! false +htpasswd-B4 $2y$04$ggW.sSDsi.VEyLGf4ajr/u/MyYeFrFwFn2FFIErg/F3EosYCURsY6 seventeen_chars!! true +htpasswd-B4 $2y$04$ggW.sSDsi.VEyLGf4ajr/u/MyYeFrFwFn2FFIErg/F3EosYCURsY6 seventeen_chars!!x false +htpasswd-B4 $2y$04$ggW.sSDsi.VEyLGf4ajr/u/MyYeFrFwFn2FFIErg/F3EosYCURsY6 false +htpasswd-B4 $2y$04$ggW.sSDsi.VEyLGf4ajr/u/MyYeFrFwFn2FFIErg/F3EosYCURsY6 wrong false +htpasswd-B4 $2y$04$ggW.sSDsi.VEyLGf4ajr/u/MyYeFrFwFn2FFIErg/F3EosYCURsY6 SEVENTEEN_CHARS!! false +htpasswd-s {SHA}O9xqrukEz+xPlWp9oUbQ6Dfa5Zw= seventeen_chars!! true +htpasswd-s {SHA}O9xqrukEz+xPlWp9oUbQ6Dfa5Zw= seventeen_chars!!x false +htpasswd-s {SHA}O9xqrukEz+xPlWp9oUbQ6Dfa5Zw= false +htpasswd-s {SHA}O9xqrukEz+xPlWp9oUbQ6Dfa5Zw= wrong false +htpasswd-s {SHA}O9xqrukEz+xPlWp9oUbQ6Dfa5Zw= SEVENTEEN_CHARS!! false +htpasswd-d BQOJWEtgiMYRY seventeen_chars!! false +htpasswd-d BQOJWEtgiMYRY seventeen_chars!!x false +htpasswd-d BQOJWEtgiMYRY false +htpasswd-d BQOJWEtgiMYRY wrong false +htpasswd-d BQOJWEtgiMYRY SEVENTEEN_CHARS!! false +htpasswd-p seventeen_chars!! seventeen_chars!! false +htpasswd-p seventeen_chars!! seventeen_chars!!x false +htpasswd-p seventeen_chars!! false +htpasswd-p seventeen_chars!! wrong false +htpasswd-p seventeen_chars!! SEVENTEEN_CHARS!! false +openssl-1 $1$6jDnfHC/$cdOhYE4oNRPuU28TXCQvV0 seventeen_chars!! true +openssl-1 $1$6jDnfHC/$cdOhYE4oNRPuU28TXCQvV0 seventeen_chars!!x false +openssl-1 $1$6jDnfHC/$cdOhYE4oNRPuU28TXCQvV0 false +openssl-1 $1$6jDnfHC/$cdOhYE4oNRPuU28TXCQvV0 wrong false +openssl-1 $1$6jDnfHC/$cdOhYE4oNRPuU28TXCQvV0 SEVENTEEN_CHARS!! false +openssl-apr1 $apr1$EFPaGo0E$vRBkEOn4KE2dkBvHb.Gmt/ seventeen_chars!! true +openssl-apr1 $apr1$EFPaGo0E$vRBkEOn4KE2dkBvHb.Gmt/ seventeen_chars!!x false +openssl-apr1 $apr1$EFPaGo0E$vRBkEOn4KE2dkBvHb.Gmt/ false +openssl-apr1 $apr1$EFPaGo0E$vRBkEOn4KE2dkBvHb.Gmt/ wrong false +openssl-apr1 $apr1$EFPaGo0E$vRBkEOn4KE2dkBvHb.Gmt/ SEVENTEEN_CHARS!! false +openssl-1-shortsalt $1$ab$Zgx47PI3TIJFi0FrUfAaw0 seventeen_chars!! true +openssl-1-shortsalt $1$ab$Zgx47PI3TIJFi0FrUfAaw0 seventeen_chars!!x false +openssl-1-shortsalt $1$ab$Zgx47PI3TIJFi0FrUfAaw0 false +openssl-1-shortsalt $1$ab$Zgx47PI3TIJFi0FrUfAaw0 wrong false +openssl-1-shortsalt $1$ab$Zgx47PI3TIJFi0FrUfAaw0 SEVENTEEN_CHARS!! false +openssl-apr1-emptysalt $apr1$$2JwCrdEFBsDwozev6Up460 seventeen_chars!! true +openssl-apr1-emptysalt $apr1$$2JwCrdEFBsDwozev6Up460 seventeen_chars!!x false +openssl-apr1-emptysalt $apr1$$2JwCrdEFBsDwozev6Up460 false +openssl-apr1-emptysalt $apr1$$2JwCrdEFBsDwozev6Up460 wrong false +openssl-apr1-emptysalt $apr1$$2JwCrdEFBsDwozev6Up460 SEVENTEEN_CHARS!! false +openssl-5 $5$PAulfVw0MvuRpMnH$AGACzO22JsNi1tApzP83dVo0v/xXQd0adm2l7xJXof0 seventeen_chars!! false +openssl-5 $5$PAulfVw0MvuRpMnH$AGACzO22JsNi1tApzP83dVo0v/xXQd0adm2l7xJXof0 seventeen_chars!!x false +openssl-5 $5$PAulfVw0MvuRpMnH$AGACzO22JsNi1tApzP83dVo0v/xXQd0adm2l7xJXof0 false +openssl-5 $5$PAulfVw0MvuRpMnH$AGACzO22JsNi1tApzP83dVo0v/xXQd0adm2l7xJXof0 wrong false +openssl-5 $5$PAulfVw0MvuRpMnH$AGACzO22JsNi1tApzP83dVo0v/xXQd0adm2l7xJXof0 SEVENTEEN_CHARS!! false +openssl-6 $6$Sl2.cVecQX0U5a1H$i7mnAH8bu7ZILksuchK23HZEvjAKUfBESk5WnLZJG9nMxxP5zLdFgHBtzTsXD2R1IJEFa48aV.oWVHkSYaUoK0 seventeen_chars!! false +openssl-6 $6$Sl2.cVecQX0U5a1H$i7mnAH8bu7ZILksuchK23HZEvjAKUfBESk5WnLZJG9nMxxP5zLdFgHBtzTsXD2R1IJEFa48aV.oWVHkSYaUoK0 seventeen_chars!!x false +openssl-6 $6$Sl2.cVecQX0U5a1H$i7mnAH8bu7ZILksuchK23HZEvjAKUfBESk5WnLZJG9nMxxP5zLdFgHBtzTsXD2R1IJEFa48aV.oWVHkSYaUoK0 false +openssl-6 $6$Sl2.cVecQX0U5a1H$i7mnAH8bu7ZILksuchK23HZEvjAKUfBESk5WnLZJG9nMxxP5zLdFgHBtzTsXD2R1IJEFa48aV.oWVHkSYaUoK0 wrong false +openssl-6 $6$Sl2.cVecQX0U5a1H$i7mnAH8bu7ZILksuchK23HZEvjAKUfBESk5WnLZJG9nMxxP5zLdFgHBtzTsXD2R1IJEFa48aV.oWVHkSYaUoK0 SEVENTEEN_CHARS!! false +mkpasswd-md5 $1$lVAc8y00$640d.pYIvsO6PYWh2xUsC0 seventeen_chars!! true +mkpasswd-md5 $1$lVAc8y00$640d.pYIvsO6PYWh2xUsC0 seventeen_chars!!x false +mkpasswd-md5 $1$lVAc8y00$640d.pYIvsO6PYWh2xUsC0 false +mkpasswd-md5 $1$lVAc8y00$640d.pYIvsO6PYWh2xUsC0 wrong false +mkpasswd-md5 $1$lVAc8y00$640d.pYIvsO6PYWh2xUsC0 SEVENTEEN_CHARS!! false +python-2a $2a$04$8PUlTjPMscBEL.fNZOZgxOffClm6KZuLbxPqHVj/MGrpvwEqj5OlO seventeen_chars!! true +python-2a $2a$04$8PUlTjPMscBEL.fNZOZgxOffClm6KZuLbxPqHVj/MGrpvwEqj5OlO seventeen_chars!!x false +python-2a $2a$04$8PUlTjPMscBEL.fNZOZgxOffClm6KZuLbxPqHVj/MGrpvwEqj5OlO false +python-2a $2a$04$8PUlTjPMscBEL.fNZOZgxOffClm6KZuLbxPqHVj/MGrpvwEqj5OlO wrong false +python-2a $2a$04$8PUlTjPMscBEL.fNZOZgxOffClm6KZuLbxPqHVj/MGrpvwEqj5OlO SEVENTEEN_CHARS!! false +python-2b $2b$04$BPENBPQ7OHIz1Q7Y8x89neWCGlsNkMLVhOZLjh2KfKycl8qaT3vDu seventeen_chars!! true +python-2b $2b$04$BPENBPQ7OHIz1Q7Y8x89neWCGlsNkMLVhOZLjh2KfKycl8qaT3vDu seventeen_chars!!x false +python-2b $2b$04$BPENBPQ7OHIz1Q7Y8x89neWCGlsNkMLVhOZLjh2KfKycl8qaT3vDu false +python-2b $2b$04$BPENBPQ7OHIz1Q7Y8x89neWCGlsNkMLVhOZLjh2KfKycl8qaT3vDu wrong false +python-2b $2b$04$BPENBPQ7OHIz1Q7Y8x89neWCGlsNkMLVhOZLjh2KfKycl8qaT3vDu SEVENTEEN_CHARS!! false +bcrypt-2x $2x$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 seventeen_chars!! true +bcrypt-2x $2x$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 seventeen_chars!!x false +bcrypt-2x $2x$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 false +bcrypt-2x $2x$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 wrong false +bcrypt-2x $2x$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 SEVENTEEN_CHARS!! false +bcrypt-2 $2$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 seventeen_chars!! false +bcrypt-2 $2$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 seventeen_chars!!x false +bcrypt-2 $2$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 false +bcrypt-2 $2$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 wrong false +bcrypt-2 $2$04$ZYzwj4LuFdaPguJIGNY7JOlh10VZHgR0489z9R6pYZjCA/n/vYNc6 SEVENTEEN_CHARS!! false +htpasswd-m $apr1$B9Njxqwp$6c1NpvDtJI8A3spBVcR691 thirty-three-characters-long-pass true +htpasswd-m $apr1$B9Njxqwp$6c1NpvDtJI8A3spBVcR691 thirty-three-characters-long-passx false +htpasswd-m $apr1$B9Njxqwp$6c1NpvDtJI8A3spBVcR691 false +htpasswd-m $apr1$B9Njxqwp$6c1NpvDtJI8A3spBVcR691 wrong false +htpasswd-m $apr1$B9Njxqwp$6c1NpvDtJI8A3spBVcR691 THIRTY-THREE-CHARACTERS-LONG-PASS false +htpasswd-B4 $2y$04$8v.SqEHsJcuf6m9ULl5wJuuMLArpBx5iSGwCxHeoFeVbr2kUYZBCm thirty-three-characters-long-pass true +htpasswd-B4 $2y$04$8v.SqEHsJcuf6m9ULl5wJuuMLArpBx5iSGwCxHeoFeVbr2kUYZBCm thirty-three-characters-long-passx false +htpasswd-B4 $2y$04$8v.SqEHsJcuf6m9ULl5wJuuMLArpBx5iSGwCxHeoFeVbr2kUYZBCm false +htpasswd-B4 $2y$04$8v.SqEHsJcuf6m9ULl5wJuuMLArpBx5iSGwCxHeoFeVbr2kUYZBCm wrong false +htpasswd-B4 $2y$04$8v.SqEHsJcuf6m9ULl5wJuuMLArpBx5iSGwCxHeoFeVbr2kUYZBCm THIRTY-THREE-CHARACTERS-LONG-PASS false +htpasswd-s {SHA}EUaIfzN5WYrcEWn2S3iyikXLEGY= thirty-three-characters-long-pass true +htpasswd-s {SHA}EUaIfzN5WYrcEWn2S3iyikXLEGY= thirty-three-characters-long-passx false +htpasswd-s {SHA}EUaIfzN5WYrcEWn2S3iyikXLEGY= false +htpasswd-s {SHA}EUaIfzN5WYrcEWn2S3iyikXLEGY= wrong false +htpasswd-s {SHA}EUaIfzN5WYrcEWn2S3iyikXLEGY= THIRTY-THREE-CHARACTERS-LONG-PASS false +htpasswd-d 7iwqjMKqazjp. thirty-three-characters-long-pass false +htpasswd-d 7iwqjMKqazjp. thirty-three-characters-long-passx false +htpasswd-d 7iwqjMKqazjp. false +htpasswd-d 7iwqjMKqazjp. wrong false +htpasswd-d 7iwqjMKqazjp. THIRTY-THREE-CHARACTERS-LONG-PASS false +htpasswd-p thirty-three-characters-long-pass thirty-three-characters-long-pass false +htpasswd-p thirty-three-characters-long-pass thirty-three-characters-long-passx false +htpasswd-p thirty-three-characters-long-pass false +htpasswd-p thirty-three-characters-long-pass wrong false +htpasswd-p thirty-three-characters-long-pass THIRTY-THREE-CHARACTERS-LONG-PASS false +openssl-1 $1$FAp5F8ud$onvp7pRcH/vY239RLIcAU0 thirty-three-characters-long-pass true +openssl-1 $1$FAp5F8ud$onvp7pRcH/vY239RLIcAU0 thirty-three-characters-long-passx false +openssl-1 $1$FAp5F8ud$onvp7pRcH/vY239RLIcAU0 false +openssl-1 $1$FAp5F8ud$onvp7pRcH/vY239RLIcAU0 wrong false +openssl-1 $1$FAp5F8ud$onvp7pRcH/vY239RLIcAU0 THIRTY-THREE-CHARACTERS-LONG-PASS false +openssl-apr1 $apr1$xam1S9Vh$FFhSvjWtV1J1KWtuOb7.3. thirty-three-characters-long-pass true +openssl-apr1 $apr1$xam1S9Vh$FFhSvjWtV1J1KWtuOb7.3. thirty-three-characters-long-passx false +openssl-apr1 $apr1$xam1S9Vh$FFhSvjWtV1J1KWtuOb7.3. false +openssl-apr1 $apr1$xam1S9Vh$FFhSvjWtV1J1KWtuOb7.3. wrong false +openssl-apr1 $apr1$xam1S9Vh$FFhSvjWtV1J1KWtuOb7.3. THIRTY-THREE-CHARACTERS-LONG-PASS false +openssl-1-shortsalt $1$ab$ZhkBHv6wmgHoF2LykuTMe0 thirty-three-characters-long-pass true +openssl-1-shortsalt $1$ab$ZhkBHv6wmgHoF2LykuTMe0 thirty-three-characters-long-passx false +openssl-1-shortsalt $1$ab$ZhkBHv6wmgHoF2LykuTMe0 false +openssl-1-shortsalt $1$ab$ZhkBHv6wmgHoF2LykuTMe0 wrong false +openssl-1-shortsalt $1$ab$ZhkBHv6wmgHoF2LykuTMe0 THIRTY-THREE-CHARACTERS-LONG-PASS false +openssl-apr1-emptysalt $apr1$$dddZ.xx5hydOn8rs45Omg. thirty-three-characters-long-pass true +openssl-apr1-emptysalt $apr1$$dddZ.xx5hydOn8rs45Omg. thirty-three-characters-long-passx false +openssl-apr1-emptysalt $apr1$$dddZ.xx5hydOn8rs45Omg. false +openssl-apr1-emptysalt $apr1$$dddZ.xx5hydOn8rs45Omg. wrong false +openssl-apr1-emptysalt $apr1$$dddZ.xx5hydOn8rs45Omg. THIRTY-THREE-CHARACTERS-LONG-PASS false +openssl-5 $5$jT9wcz1AUGpwVdJH$oCc1yhwri0v7KSeIfXPo3IADypwIt4avJ3iSXwrIbV3 thirty-three-characters-long-pass false +openssl-5 $5$jT9wcz1AUGpwVdJH$oCc1yhwri0v7KSeIfXPo3IADypwIt4avJ3iSXwrIbV3 thirty-three-characters-long-passx false +openssl-5 $5$jT9wcz1AUGpwVdJH$oCc1yhwri0v7KSeIfXPo3IADypwIt4avJ3iSXwrIbV3 false +openssl-5 $5$jT9wcz1AUGpwVdJH$oCc1yhwri0v7KSeIfXPo3IADypwIt4avJ3iSXwrIbV3 wrong false +openssl-5 $5$jT9wcz1AUGpwVdJH$oCc1yhwri0v7KSeIfXPo3IADypwIt4avJ3iSXwrIbV3 THIRTY-THREE-CHARACTERS-LONG-PASS false +openssl-6 $6$0KFLi5Zq38yDrT7L$bGuISdHuGi3gWuqHtQs49aQhmIF0WQpv6SU/caiLbUCzVZKLjMalvthtlvRardGuOjKHc/FMWzSbcM4QNL4.e1 thirty-three-characters-long-pass false +openssl-6 $6$0KFLi5Zq38yDrT7L$bGuISdHuGi3gWuqHtQs49aQhmIF0WQpv6SU/caiLbUCzVZKLjMalvthtlvRardGuOjKHc/FMWzSbcM4QNL4.e1 thirty-three-characters-long-passx false +openssl-6 $6$0KFLi5Zq38yDrT7L$bGuISdHuGi3gWuqHtQs49aQhmIF0WQpv6SU/caiLbUCzVZKLjMalvthtlvRardGuOjKHc/FMWzSbcM4QNL4.e1 false +openssl-6 $6$0KFLi5Zq38yDrT7L$bGuISdHuGi3gWuqHtQs49aQhmIF0WQpv6SU/caiLbUCzVZKLjMalvthtlvRardGuOjKHc/FMWzSbcM4QNL4.e1 wrong false +openssl-6 $6$0KFLi5Zq38yDrT7L$bGuISdHuGi3gWuqHtQs49aQhmIF0WQpv6SU/caiLbUCzVZKLjMalvthtlvRardGuOjKHc/FMWzSbcM4QNL4.e1 THIRTY-THREE-CHARACTERS-LONG-PASS false +mkpasswd-md5 $1$9tbYFYfZ$LoAP16CwThMtWrEpszrST1 thirty-three-characters-long-pass true +mkpasswd-md5 $1$9tbYFYfZ$LoAP16CwThMtWrEpszrST1 thirty-three-characters-long-passx false +mkpasswd-md5 $1$9tbYFYfZ$LoAP16CwThMtWrEpszrST1 false +mkpasswd-md5 $1$9tbYFYfZ$LoAP16CwThMtWrEpszrST1 wrong false +mkpasswd-md5 $1$9tbYFYfZ$LoAP16CwThMtWrEpszrST1 THIRTY-THREE-CHARACTERS-LONG-PASS false +python-2a $2a$04$R5FbNE6LbN9enIrq8ZdxS.NN5BN6ell7wD.YJB/yIqtT4amhqj1sq thirty-three-characters-long-pass true +python-2a $2a$04$R5FbNE6LbN9enIrq8ZdxS.NN5BN6ell7wD.YJB/yIqtT4amhqj1sq thirty-three-characters-long-passx false +python-2a $2a$04$R5FbNE6LbN9enIrq8ZdxS.NN5BN6ell7wD.YJB/yIqtT4amhqj1sq false +python-2a $2a$04$R5FbNE6LbN9enIrq8ZdxS.NN5BN6ell7wD.YJB/yIqtT4amhqj1sq wrong false +python-2a $2a$04$R5FbNE6LbN9enIrq8ZdxS.NN5BN6ell7wD.YJB/yIqtT4amhqj1sq THIRTY-THREE-CHARACTERS-LONG-PASS false +python-2b $2b$04$8f0ouMLvXssF.glVjgAn0ugiSWI/w4b26iNiRSLRgdSRMJfMiXnum thirty-three-characters-long-pass true +python-2b $2b$04$8f0ouMLvXssF.glVjgAn0ugiSWI/w4b26iNiRSLRgdSRMJfMiXnum thirty-three-characters-long-passx false +python-2b $2b$04$8f0ouMLvXssF.glVjgAn0ugiSWI/w4b26iNiRSLRgdSRMJfMiXnum false +python-2b $2b$04$8f0ouMLvXssF.glVjgAn0ugiSWI/w4b26iNiRSLRgdSRMJfMiXnum wrong false +python-2b $2b$04$8f0ouMLvXssF.glVjgAn0ugiSWI/w4b26iNiRSLRgdSRMJfMiXnum THIRTY-THREE-CHARACTERS-LONG-PASS false +bcrypt-2x $2x$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C thirty-three-characters-long-pass true +bcrypt-2x $2x$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C thirty-three-characters-long-passx false +bcrypt-2x $2x$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C false +bcrypt-2x $2x$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C wrong false +bcrypt-2x $2x$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C THIRTY-THREE-CHARACTERS-LONG-PASS false +bcrypt-2 $2$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C thirty-three-characters-long-pass false +bcrypt-2 $2$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C thirty-three-characters-long-passx false +bcrypt-2 $2$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C false +bcrypt-2 $2$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C wrong false +bcrypt-2 $2$04$OpMQVtwtLlVhARwQVY3GE.M.aMmrZlva5YsqGKGqoL/xEij8tS1/C THIRTY-THREE-CHARACTERS-LONG-PASS false +htpasswd-m $apr1$TIqd236D$/VgomlpLRRLc9FR2p54Mi/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +htpasswd-m $apr1$TIqd236D$/VgomlpLRRLc9FR2p54Mi/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-m $apr1$TIqd236D$/VgomlpLRRLc9FR2p54Mi/ false +htpasswd-m $apr1$TIqd236D$/VgomlpLRRLc9FR2p54Mi/ wrong false +htpasswd-m $apr1$TIqd236D$/VgomlpLRRLc9FR2p54Mi/ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +htpasswd-B4 $2y$04$BPHV6LVhPYSHCYv5h061u.Dt1G079510FZS4R1V7srdhg6JPLAPLO xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +htpasswd-B4 $2y$04$BPHV6LVhPYSHCYv5h061u.Dt1G079510FZS4R1V7srdhg6JPLAPLO xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +htpasswd-B4 $2y$04$BPHV6LVhPYSHCYv5h061u.Dt1G079510FZS4R1V7srdhg6JPLAPLO false +htpasswd-B4 $2y$04$BPHV6LVhPYSHCYv5h061u.Dt1G079510FZS4R1V7srdhg6JPLAPLO wrong false +htpasswd-B4 $2y$04$BPHV6LVhPYSHCYv5h061u.Dt1G079510FZS4R1V7srdhg6JPLAPLO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +htpasswd-s {SHA}mhYxdXId8MC8tCysqx+LZq6VXc8= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +htpasswd-s {SHA}mhYxdXId8MC8tCysqx+LZq6VXc8= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-s {SHA}mhYxdXId8MC8tCysqx+LZq6VXc8= false +htpasswd-s {SHA}mhYxdXId8MC8tCysqx+LZq6VXc8= wrong false +htpasswd-s {SHA}mhYxdXId8MC8tCysqx+LZq6VXc8= XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +htpasswd-d h0zfXFGPjttJ6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-d h0zfXFGPjttJ6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-d h0zfXFGPjttJ6 false +htpasswd-d h0zfXFGPjttJ6 wrong false +htpasswd-d h0zfXFGPjttJ6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +htpasswd-p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +htpasswd-p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx wrong false +htpasswd-p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +openssl-1 $1$FB7GkAmT$MLI6r9wMRXNos26DrUjIa0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +openssl-1 $1$FB7GkAmT$MLI6r9wMRXNos26DrUjIa0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-1 $1$FB7GkAmT$MLI6r9wMRXNos26DrUjIa0 false +openssl-1 $1$FB7GkAmT$MLI6r9wMRXNos26DrUjIa0 wrong false +openssl-1 $1$FB7GkAmT$MLI6r9wMRXNos26DrUjIa0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +openssl-apr1 $apr1$RPs/zjyV$Iu2r6YDTcnD.VDOvQE90C. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +openssl-apr1 $apr1$RPs/zjyV$Iu2r6YDTcnD.VDOvQE90C. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-apr1 $apr1$RPs/zjyV$Iu2r6YDTcnD.VDOvQE90C. false +openssl-apr1 $apr1$RPs/zjyV$Iu2r6YDTcnD.VDOvQE90C. wrong false +openssl-apr1 $apr1$RPs/zjyV$Iu2r6YDTcnD.VDOvQE90C. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +openssl-1-shortsalt $1$ab$sGk3avZ55QGAtnG67.eqQ0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +openssl-1-shortsalt $1$ab$sGk3avZ55QGAtnG67.eqQ0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-1-shortsalt $1$ab$sGk3avZ55QGAtnG67.eqQ0 false +openssl-1-shortsalt $1$ab$sGk3avZ55QGAtnG67.eqQ0 wrong false +openssl-1-shortsalt $1$ab$sGk3avZ55QGAtnG67.eqQ0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +openssl-apr1-emptysalt $apr1$$3hRagA2eL9OtRD/HuHwz7. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +openssl-apr1-emptysalt $apr1$$3hRagA2eL9OtRD/HuHwz7. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-apr1-emptysalt $apr1$$3hRagA2eL9OtRD/HuHwz7. false +openssl-apr1-emptysalt $apr1$$3hRagA2eL9OtRD/HuHwz7. wrong false +openssl-apr1-emptysalt $apr1$$3hRagA2eL9OtRD/HuHwz7. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +openssl-5 $5$eNVMDOrXabvcKxYr$RbsaH.Nz8YV0nb3/AnCpVCkpsZBUQfisiLMWr3vxDj0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-5 $5$eNVMDOrXabvcKxYr$RbsaH.Nz8YV0nb3/AnCpVCkpsZBUQfisiLMWr3vxDj0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-5 $5$eNVMDOrXabvcKxYr$RbsaH.Nz8YV0nb3/AnCpVCkpsZBUQfisiLMWr3vxDj0 false +openssl-5 $5$eNVMDOrXabvcKxYr$RbsaH.Nz8YV0nb3/AnCpVCkpsZBUQfisiLMWr3vxDj0 wrong false +openssl-5 $5$eNVMDOrXabvcKxYr$RbsaH.Nz8YV0nb3/AnCpVCkpsZBUQfisiLMWr3vxDj0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +openssl-6 $6$D4CQBiQAbt9E.gOs$4G9jDHdgt.3W9TJO7Hlrp.kyNLphzP3jln1QVj7UNpca5Cicdi2ZfVoeGAGBC7GS44eMzsDc.iddlbMjgSWi10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-6 $6$D4CQBiQAbt9E.gOs$4G9jDHdgt.3W9TJO7Hlrp.kyNLphzP3jln1QVj7UNpca5Cicdi2ZfVoeGAGBC7GS44eMzsDc.iddlbMjgSWi10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +openssl-6 $6$D4CQBiQAbt9E.gOs$4G9jDHdgt.3W9TJO7Hlrp.kyNLphzP3jln1QVj7UNpca5Cicdi2ZfVoeGAGBC7GS44eMzsDc.iddlbMjgSWi10 false +openssl-6 $6$D4CQBiQAbt9E.gOs$4G9jDHdgt.3W9TJO7Hlrp.kyNLphzP3jln1QVj7UNpca5Cicdi2ZfVoeGAGBC7GS44eMzsDc.iddlbMjgSWi10 wrong false +openssl-6 $6$D4CQBiQAbt9E.gOs$4G9jDHdgt.3W9TJO7Hlrp.kyNLphzP3jln1QVj7UNpca5Cicdi2ZfVoeGAGBC7GS44eMzsDc.iddlbMjgSWi10 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +mkpasswd-md5 $1$mnAUFhzH$c6AuXeRNatduHi0EtqzdR/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +mkpasswd-md5 $1$mnAUFhzH$c6AuXeRNatduHi0EtqzdR/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +mkpasswd-md5 $1$mnAUFhzH$c6AuXeRNatduHi0EtqzdR/ false +mkpasswd-md5 $1$mnAUFhzH$c6AuXeRNatduHi0EtqzdR/ wrong false +mkpasswd-md5 $1$mnAUFhzH$c6AuXeRNatduHi0EtqzdR/ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +python-2a $2a$04$NwYlaK8Fwhm30PCvS4tAreAjKTUj2nBQ4IAovWjJUfqJCZ5MVf34y xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +python-2a $2a$04$NwYlaK8Fwhm30PCvS4tAreAjKTUj2nBQ4IAovWjJUfqJCZ5MVf34y xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +python-2a $2a$04$NwYlaK8Fwhm30PCvS4tAreAjKTUj2nBQ4IAovWjJUfqJCZ5MVf34y false +python-2a $2a$04$NwYlaK8Fwhm30PCvS4tAreAjKTUj2nBQ4IAovWjJUfqJCZ5MVf34y wrong false +python-2a $2a$04$NwYlaK8Fwhm30PCvS4tAreAjKTUj2nBQ4IAovWjJUfqJCZ5MVf34y XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +python-2b $2b$04$6lXA2bPj.9XY5dJCSqi6cu5FDVn1Bv4ZXflQ5QZlA5P69X2GtN2T. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +python-2b $2b$04$6lXA2bPj.9XY5dJCSqi6cu5FDVn1Bv4ZXflQ5QZlA5P69X2GtN2T. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +python-2b $2b$04$6lXA2bPj.9XY5dJCSqi6cu5FDVn1Bv4ZXflQ5QZlA5P69X2GtN2T. false +python-2b $2b$04$6lXA2bPj.9XY5dJCSqi6cu5FDVn1Bv4ZXflQ5QZlA5P69X2GtN2T. wrong false +python-2b $2b$04$6lXA2bPj.9XY5dJCSqi6cu5FDVn1Bv4ZXflQ5QZlA5P69X2GtN2T. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +bcrypt-2x $2x$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +bcrypt-2x $2x$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true +bcrypt-2x $2x$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u false +bcrypt-2x $2x$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u wrong false +bcrypt-2x $2x$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +bcrypt-2 $2$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +bcrypt-2 $2$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx false +bcrypt-2 $2$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u false +bcrypt-2 $2$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u wrong false +bcrypt-2 $2$04$SO7MqC5XrFUibHjN.AioB..j1uhbOV37W5qoPCnHtmWG6L3ijwu1u XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX false +htpasswd-m $apr1$eQGejTh0$Uhe7Gs7SGeVbTfKE44pUL1 pässwörd true +htpasswd-m $apr1$eQGejTh0$Uhe7Gs7SGeVbTfKE44pUL1 pässwördx false +htpasswd-m $apr1$eQGejTh0$Uhe7Gs7SGeVbTfKE44pUL1 false +htpasswd-m $apr1$eQGejTh0$Uhe7Gs7SGeVbTfKE44pUL1 wrong false +htpasswd-m $apr1$eQGejTh0$Uhe7Gs7SGeVbTfKE44pUL1 PÄSSWÖRD false +htpasswd-B4 $2y$04$EDLHExqIIZyiGvA/8XtimehFfJa2gWlKASNdO9RiDD7peWJQWRXTG pässwörd true +htpasswd-B4 $2y$04$EDLHExqIIZyiGvA/8XtimehFfJa2gWlKASNdO9RiDD7peWJQWRXTG pässwördx false +htpasswd-B4 $2y$04$EDLHExqIIZyiGvA/8XtimehFfJa2gWlKASNdO9RiDD7peWJQWRXTG false +htpasswd-B4 $2y$04$EDLHExqIIZyiGvA/8XtimehFfJa2gWlKASNdO9RiDD7peWJQWRXTG wrong false +htpasswd-B4 $2y$04$EDLHExqIIZyiGvA/8XtimehFfJa2gWlKASNdO9RiDD7peWJQWRXTG PÄSSWÖRD false +htpasswd-s {SHA}9Rfd8dMqES/xrVXGbRsSyzjn6Pc= pässwörd true +htpasswd-s {SHA}9Rfd8dMqES/xrVXGbRsSyzjn6Pc= pässwördx false +htpasswd-s {SHA}9Rfd8dMqES/xrVXGbRsSyzjn6Pc= false +htpasswd-s {SHA}9Rfd8dMqES/xrVXGbRsSyzjn6Pc= wrong false +htpasswd-s {SHA}9Rfd8dMqES/xrVXGbRsSyzjn6Pc= PÄSSWÖRD false +htpasswd-d .c.rvJoChHA8M pässwörd false +htpasswd-d .c.rvJoChHA8M pässwördx false +htpasswd-d .c.rvJoChHA8M false +htpasswd-d .c.rvJoChHA8M wrong false +htpasswd-d .c.rvJoChHA8M PÄSSWÖRD false +htpasswd-p pässwörd pässwörd false +htpasswd-p pässwörd pässwördx false +htpasswd-p pässwörd false +htpasswd-p pässwörd wrong false +htpasswd-p pässwörd PÄSSWÖRD false +openssl-1 $1$Y2fJp/nm$vNWWqtlA5yVZOzjG53qnj/ pässwörd true +openssl-1 $1$Y2fJp/nm$vNWWqtlA5yVZOzjG53qnj/ pässwördx false +openssl-1 $1$Y2fJp/nm$vNWWqtlA5yVZOzjG53qnj/ false +openssl-1 $1$Y2fJp/nm$vNWWqtlA5yVZOzjG53qnj/ wrong false +openssl-1 $1$Y2fJp/nm$vNWWqtlA5yVZOzjG53qnj/ PÄSSWÖRD false +openssl-apr1 $apr1$NFF1K5FB$zfKMQtdgpoBxmK2.fyXcj/ pässwörd true +openssl-apr1 $apr1$NFF1K5FB$zfKMQtdgpoBxmK2.fyXcj/ pässwördx false +openssl-apr1 $apr1$NFF1K5FB$zfKMQtdgpoBxmK2.fyXcj/ false +openssl-apr1 $apr1$NFF1K5FB$zfKMQtdgpoBxmK2.fyXcj/ wrong false +openssl-apr1 $apr1$NFF1K5FB$zfKMQtdgpoBxmK2.fyXcj/ PÄSSWÖRD false +openssl-1-shortsalt $1$ab$bRZzLnQPD1ql12pSoshc71 pässwörd true +openssl-1-shortsalt $1$ab$bRZzLnQPD1ql12pSoshc71 pässwördx false +openssl-1-shortsalt $1$ab$bRZzLnQPD1ql12pSoshc71 false +openssl-1-shortsalt $1$ab$bRZzLnQPD1ql12pSoshc71 wrong false +openssl-1-shortsalt $1$ab$bRZzLnQPD1ql12pSoshc71 PÄSSWÖRD false +openssl-apr1-emptysalt $apr1$$ycHGa2z6sIUlKWOepjI49. pässwörd true +openssl-apr1-emptysalt $apr1$$ycHGa2z6sIUlKWOepjI49. pässwördx false +openssl-apr1-emptysalt $apr1$$ycHGa2z6sIUlKWOepjI49. false +openssl-apr1-emptysalt $apr1$$ycHGa2z6sIUlKWOepjI49. wrong false +openssl-apr1-emptysalt $apr1$$ycHGa2z6sIUlKWOepjI49. PÄSSWÖRD false +openssl-5 $5$tDKs3CdWOktwIS/V$H.O.QqpDepwSMzJrVbtWxHPgrenFWjNGIc4xKqNRiYA pässwörd false +openssl-5 $5$tDKs3CdWOktwIS/V$H.O.QqpDepwSMzJrVbtWxHPgrenFWjNGIc4xKqNRiYA pässwördx false +openssl-5 $5$tDKs3CdWOktwIS/V$H.O.QqpDepwSMzJrVbtWxHPgrenFWjNGIc4xKqNRiYA false +openssl-5 $5$tDKs3CdWOktwIS/V$H.O.QqpDepwSMzJrVbtWxHPgrenFWjNGIc4xKqNRiYA wrong false +openssl-5 $5$tDKs3CdWOktwIS/V$H.O.QqpDepwSMzJrVbtWxHPgrenFWjNGIc4xKqNRiYA PÄSSWÖRD false +openssl-6 $6$OKiSavF0QELRNvq1$cyIu/jgoZy99Td21MVVHbfubvvxQP4HLFexNRqDWSq4Vmvx7KEcfZP.h6TAhtfcpL.X4plHhbVQW0fAeSgP.d. pässwörd false +openssl-6 $6$OKiSavF0QELRNvq1$cyIu/jgoZy99Td21MVVHbfubvvxQP4HLFexNRqDWSq4Vmvx7KEcfZP.h6TAhtfcpL.X4plHhbVQW0fAeSgP.d. pässwördx false +openssl-6 $6$OKiSavF0QELRNvq1$cyIu/jgoZy99Td21MVVHbfubvvxQP4HLFexNRqDWSq4Vmvx7KEcfZP.h6TAhtfcpL.X4plHhbVQW0fAeSgP.d. false +openssl-6 $6$OKiSavF0QELRNvq1$cyIu/jgoZy99Td21MVVHbfubvvxQP4HLFexNRqDWSq4Vmvx7KEcfZP.h6TAhtfcpL.X4plHhbVQW0fAeSgP.d. wrong false +openssl-6 $6$OKiSavF0QELRNvq1$cyIu/jgoZy99Td21MVVHbfubvvxQP4HLFexNRqDWSq4Vmvx7KEcfZP.h6TAhtfcpL.X4plHhbVQW0fAeSgP.d. PÄSSWÖRD false +mkpasswd-md5 $1$XTzMwBNM$nPfZDe0QHJYwHdSDUJCjA0 pässwörd true +mkpasswd-md5 $1$XTzMwBNM$nPfZDe0QHJYwHdSDUJCjA0 pässwördx false +mkpasswd-md5 $1$XTzMwBNM$nPfZDe0QHJYwHdSDUJCjA0 false +mkpasswd-md5 $1$XTzMwBNM$nPfZDe0QHJYwHdSDUJCjA0 wrong false +mkpasswd-md5 $1$XTzMwBNM$nPfZDe0QHJYwHdSDUJCjA0 PÄSSWÖRD false +python-2a $2a$04$h9Jxz7PXQgWqAh5C6DoW6u3SL6soJ0Wn4ANUFK2uEJ6PFRv3u7FP. pässwörd true +python-2a $2a$04$h9Jxz7PXQgWqAh5C6DoW6u3SL6soJ0Wn4ANUFK2uEJ6PFRv3u7FP. pässwördx false +python-2a $2a$04$h9Jxz7PXQgWqAh5C6DoW6u3SL6soJ0Wn4ANUFK2uEJ6PFRv3u7FP. false +python-2a $2a$04$h9Jxz7PXQgWqAh5C6DoW6u3SL6soJ0Wn4ANUFK2uEJ6PFRv3u7FP. wrong false +python-2a $2a$04$h9Jxz7PXQgWqAh5C6DoW6u3SL6soJ0Wn4ANUFK2uEJ6PFRv3u7FP. PÄSSWÖRD false +python-2b $2b$04$mfVtGgIeMro5/juboew/7.yMALJ4xp1GFuQgH26uoCINnUYEAO8jy pässwörd true +python-2b $2b$04$mfVtGgIeMro5/juboew/7.yMALJ4xp1GFuQgH26uoCINnUYEAO8jy pässwördx false +python-2b $2b$04$mfVtGgIeMro5/juboew/7.yMALJ4xp1GFuQgH26uoCINnUYEAO8jy false +python-2b $2b$04$mfVtGgIeMro5/juboew/7.yMALJ4xp1GFuQgH26uoCINnUYEAO8jy wrong false +python-2b $2b$04$mfVtGgIeMro5/juboew/7.yMALJ4xp1GFuQgH26uoCINnUYEAO8jy PÄSSWÖRD false +bcrypt-2x $2x$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u pässwörd true +bcrypt-2x $2x$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u pässwördx false +bcrypt-2x $2x$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u false +bcrypt-2x $2x$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u wrong false +bcrypt-2x $2x$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u PÄSSWÖRD false +bcrypt-2 $2$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u pässwörd false +bcrypt-2 $2$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u pässwördx false +bcrypt-2 $2$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u false +bcrypt-2 $2$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u wrong false +bcrypt-2 $2$04$R.RgdruJMEwZyrCriikwiuragD/bfwEWOeAT8Yf1bTQjuB5xA11.u PÄSSWÖRD false +htpasswd-m $apr1$MDownvmp$zFy7LCUaO1xoEgBJn32UR1 has:colon true +htpasswd-m $apr1$MDownvmp$zFy7LCUaO1xoEgBJn32UR1 has:colonx false +htpasswd-m $apr1$MDownvmp$zFy7LCUaO1xoEgBJn32UR1 false +htpasswd-m $apr1$MDownvmp$zFy7LCUaO1xoEgBJn32UR1 wrong false +htpasswd-m $apr1$MDownvmp$zFy7LCUaO1xoEgBJn32UR1 HAS:COLON false +htpasswd-B4 $2y$04$GhWb2vO68X0lBRPhcmiph.Kcg5CyQqGZPrIizjKpWT26sntMc5I5a has:colon true +htpasswd-B4 $2y$04$GhWb2vO68X0lBRPhcmiph.Kcg5CyQqGZPrIizjKpWT26sntMc5I5a has:colonx false +htpasswd-B4 $2y$04$GhWb2vO68X0lBRPhcmiph.Kcg5CyQqGZPrIizjKpWT26sntMc5I5a false +htpasswd-B4 $2y$04$GhWb2vO68X0lBRPhcmiph.Kcg5CyQqGZPrIizjKpWT26sntMc5I5a wrong false +htpasswd-B4 $2y$04$GhWb2vO68X0lBRPhcmiph.Kcg5CyQqGZPrIizjKpWT26sntMc5I5a HAS:COLON false +htpasswd-s {SHA}SlAx1qVR3y5qrxDLDgeyNfkOt88= has:colon true +htpasswd-s {SHA}SlAx1qVR3y5qrxDLDgeyNfkOt88= has:colonx false +htpasswd-s {SHA}SlAx1qVR3y5qrxDLDgeyNfkOt88= false +htpasswd-s {SHA}SlAx1qVR3y5qrxDLDgeyNfkOt88= wrong false +htpasswd-s {SHA}SlAx1qVR3y5qrxDLDgeyNfkOt88= HAS:COLON false +htpasswd-d P39M.GDrSEI0Y has:colon false +htpasswd-d P39M.GDrSEI0Y has:colonx false +htpasswd-d P39M.GDrSEI0Y false +htpasswd-d P39M.GDrSEI0Y wrong false +htpasswd-d P39M.GDrSEI0Y HAS:COLON false +htpasswd-p has:colon has:colon false +htpasswd-p has:colon has:colonx false +htpasswd-p has:colon false +htpasswd-p has:colon wrong false +htpasswd-p has:colon HAS:COLON false +openssl-1 $1$ZmdjCi/j$xP2zXbO5DHvt5xQcNnl8I/ has:colon true +openssl-1 $1$ZmdjCi/j$xP2zXbO5DHvt5xQcNnl8I/ has:colonx false +openssl-1 $1$ZmdjCi/j$xP2zXbO5DHvt5xQcNnl8I/ false +openssl-1 $1$ZmdjCi/j$xP2zXbO5DHvt5xQcNnl8I/ wrong false +openssl-1 $1$ZmdjCi/j$xP2zXbO5DHvt5xQcNnl8I/ HAS:COLON false +openssl-apr1 $apr1$eDShmlQo$KP8CZFvjBVqqbYTw0byIO. has:colon true +openssl-apr1 $apr1$eDShmlQo$KP8CZFvjBVqqbYTw0byIO. has:colonx false +openssl-apr1 $apr1$eDShmlQo$KP8CZFvjBVqqbYTw0byIO. false +openssl-apr1 $apr1$eDShmlQo$KP8CZFvjBVqqbYTw0byIO. wrong false +openssl-apr1 $apr1$eDShmlQo$KP8CZFvjBVqqbYTw0byIO. HAS:COLON false +openssl-1-shortsalt $1$ab$Erva2OfEkpYzo7VJCvcS31 has:colon true +openssl-1-shortsalt $1$ab$Erva2OfEkpYzo7VJCvcS31 has:colonx false +openssl-1-shortsalt $1$ab$Erva2OfEkpYzo7VJCvcS31 false +openssl-1-shortsalt $1$ab$Erva2OfEkpYzo7VJCvcS31 wrong false +openssl-1-shortsalt $1$ab$Erva2OfEkpYzo7VJCvcS31 HAS:COLON false +openssl-apr1-emptysalt $apr1$$kqN8qhHbGH33zDknyMT6j0 has:colon true +openssl-apr1-emptysalt $apr1$$kqN8qhHbGH33zDknyMT6j0 has:colonx false +openssl-apr1-emptysalt $apr1$$kqN8qhHbGH33zDknyMT6j0 false +openssl-apr1-emptysalt $apr1$$kqN8qhHbGH33zDknyMT6j0 wrong false +openssl-apr1-emptysalt $apr1$$kqN8qhHbGH33zDknyMT6j0 HAS:COLON false +openssl-5 $5$zJwhKr956KkkNXr4$wT6eK1YEkoVgTXuHLVU5E.1wbRVKJqPc3SKj5vsW.D6 has:colon false +openssl-5 $5$zJwhKr956KkkNXr4$wT6eK1YEkoVgTXuHLVU5E.1wbRVKJqPc3SKj5vsW.D6 has:colonx false +openssl-5 $5$zJwhKr956KkkNXr4$wT6eK1YEkoVgTXuHLVU5E.1wbRVKJqPc3SKj5vsW.D6 false +openssl-5 $5$zJwhKr956KkkNXr4$wT6eK1YEkoVgTXuHLVU5E.1wbRVKJqPc3SKj5vsW.D6 wrong false +openssl-5 $5$zJwhKr956KkkNXr4$wT6eK1YEkoVgTXuHLVU5E.1wbRVKJqPc3SKj5vsW.D6 HAS:COLON false +openssl-6 $6$7lvXrHGaMzbyHF2z$QSgoRYcnsipZSi.gApX3cj7.QuV4dYgZHhj3buVaqA2bvL9QEQTVGLL1.NkPgN4LMaLPiMqK4NfdjoxvZtr3g. has:colon false +openssl-6 $6$7lvXrHGaMzbyHF2z$QSgoRYcnsipZSi.gApX3cj7.QuV4dYgZHhj3buVaqA2bvL9QEQTVGLL1.NkPgN4LMaLPiMqK4NfdjoxvZtr3g. has:colonx false +openssl-6 $6$7lvXrHGaMzbyHF2z$QSgoRYcnsipZSi.gApX3cj7.QuV4dYgZHhj3buVaqA2bvL9QEQTVGLL1.NkPgN4LMaLPiMqK4NfdjoxvZtr3g. false +openssl-6 $6$7lvXrHGaMzbyHF2z$QSgoRYcnsipZSi.gApX3cj7.QuV4dYgZHhj3buVaqA2bvL9QEQTVGLL1.NkPgN4LMaLPiMqK4NfdjoxvZtr3g. wrong false +openssl-6 $6$7lvXrHGaMzbyHF2z$QSgoRYcnsipZSi.gApX3cj7.QuV4dYgZHhj3buVaqA2bvL9QEQTVGLL1.NkPgN4LMaLPiMqK4NfdjoxvZtr3g. HAS:COLON false +mkpasswd-md5 $1$/2xNxxAF$2FfsMFHpvA0CkqZjW3gne0 has:colon true +mkpasswd-md5 $1$/2xNxxAF$2FfsMFHpvA0CkqZjW3gne0 has:colonx false +mkpasswd-md5 $1$/2xNxxAF$2FfsMFHpvA0CkqZjW3gne0 false +mkpasswd-md5 $1$/2xNxxAF$2FfsMFHpvA0CkqZjW3gne0 wrong false +mkpasswd-md5 $1$/2xNxxAF$2FfsMFHpvA0CkqZjW3gne0 HAS:COLON false +python-2a $2a$04$h94JMScvEHenSrf78Uz1cOjIkTyLg64tGos4Z6QdAPUHxEvAGrT.K has:colon true +python-2a $2a$04$h94JMScvEHenSrf78Uz1cOjIkTyLg64tGos4Z6QdAPUHxEvAGrT.K has:colonx false +python-2a $2a$04$h94JMScvEHenSrf78Uz1cOjIkTyLg64tGos4Z6QdAPUHxEvAGrT.K false +python-2a $2a$04$h94JMScvEHenSrf78Uz1cOjIkTyLg64tGos4Z6QdAPUHxEvAGrT.K wrong false +python-2a $2a$04$h94JMScvEHenSrf78Uz1cOjIkTyLg64tGos4Z6QdAPUHxEvAGrT.K HAS:COLON false +python-2b $2b$04$vL1oF7wW/3gY5/cn/y7hY.v9dSUzkhwlxD9uuChU3YUVPZUWr1fN. has:colon true +python-2b $2b$04$vL1oF7wW/3gY5/cn/y7hY.v9dSUzkhwlxD9uuChU3YUVPZUWr1fN. has:colonx false +python-2b $2b$04$vL1oF7wW/3gY5/cn/y7hY.v9dSUzkhwlxD9uuChU3YUVPZUWr1fN. false +python-2b $2b$04$vL1oF7wW/3gY5/cn/y7hY.v9dSUzkhwlxD9uuChU3YUVPZUWr1fN. wrong false +python-2b $2b$04$vL1oF7wW/3gY5/cn/y7hY.v9dSUzkhwlxD9uuChU3YUVPZUWr1fN. HAS:COLON false +bcrypt-2x $2x$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa has:colon true +bcrypt-2x $2x$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa has:colonx false +bcrypt-2x $2x$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa false +bcrypt-2x $2x$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa wrong false +bcrypt-2x $2x$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa HAS:COLON false +bcrypt-2 $2$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa has:colon false +bcrypt-2 $2$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa has:colonx false +bcrypt-2 $2$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa false +bcrypt-2 $2$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa wrong false +bcrypt-2 $2$04$eVZEUayVTjyIOJBaDZlZLuK9WK2..LCUxHXgTvDIdMbpBQjYgJnYa HAS:COLON false +htpasswd-m $apr1$jBLjktpa$k6PW6MznvwbryOp.RIfnX. has space true +htpasswd-m $apr1$jBLjktpa$k6PW6MznvwbryOp.RIfnX. has spacex false +htpasswd-m $apr1$jBLjktpa$k6PW6MznvwbryOp.RIfnX. false +htpasswd-m $apr1$jBLjktpa$k6PW6MznvwbryOp.RIfnX. wrong false +htpasswd-m $apr1$jBLjktpa$k6PW6MznvwbryOp.RIfnX. HAS SPACE false +htpasswd-B4 $2y$04$ZCshx0JNJ7NnWytV9vWZ9.JsiC67qMMl6EUKEMYnPjyQpMGLds.fW has space true +htpasswd-B4 $2y$04$ZCshx0JNJ7NnWytV9vWZ9.JsiC67qMMl6EUKEMYnPjyQpMGLds.fW has spacex false +htpasswd-B4 $2y$04$ZCshx0JNJ7NnWytV9vWZ9.JsiC67qMMl6EUKEMYnPjyQpMGLds.fW false +htpasswd-B4 $2y$04$ZCshx0JNJ7NnWytV9vWZ9.JsiC67qMMl6EUKEMYnPjyQpMGLds.fW wrong false +htpasswd-B4 $2y$04$ZCshx0JNJ7NnWytV9vWZ9.JsiC67qMMl6EUKEMYnPjyQpMGLds.fW HAS SPACE false +htpasswd-s {SHA}5CsrmMvuebenh71d972mSiiQY+0= has space true +htpasswd-s {SHA}5CsrmMvuebenh71d972mSiiQY+0= has spacex false +htpasswd-s {SHA}5CsrmMvuebenh71d972mSiiQY+0= false +htpasswd-s {SHA}5CsrmMvuebenh71d972mSiiQY+0= wrong false +htpasswd-s {SHA}5CsrmMvuebenh71d972mSiiQY+0= HAS SPACE false +htpasswd-d 0G1cjctjTUPOI has space false +htpasswd-d 0G1cjctjTUPOI has spacex false +htpasswd-d 0G1cjctjTUPOI false +htpasswd-d 0G1cjctjTUPOI wrong false +htpasswd-d 0G1cjctjTUPOI HAS SPACE false +htpasswd-p has space has space false +htpasswd-p has space has spacex false +htpasswd-p has space false +htpasswd-p has space wrong false +htpasswd-p has space HAS SPACE false +openssl-1 $1$HvTZsxXW$SVDGtt.7Ncrx/6hpKiKCl1 has space true +openssl-1 $1$HvTZsxXW$SVDGtt.7Ncrx/6hpKiKCl1 has spacex false +openssl-1 $1$HvTZsxXW$SVDGtt.7Ncrx/6hpKiKCl1 false +openssl-1 $1$HvTZsxXW$SVDGtt.7Ncrx/6hpKiKCl1 wrong false +openssl-1 $1$HvTZsxXW$SVDGtt.7Ncrx/6hpKiKCl1 HAS SPACE false +openssl-apr1 $apr1$3LMH9gn.$V6IqmIAW8S6hTkhQFgcHF. has space true +openssl-apr1 $apr1$3LMH9gn.$V6IqmIAW8S6hTkhQFgcHF. has spacex false +openssl-apr1 $apr1$3LMH9gn.$V6IqmIAW8S6hTkhQFgcHF. false +openssl-apr1 $apr1$3LMH9gn.$V6IqmIAW8S6hTkhQFgcHF. wrong false +openssl-apr1 $apr1$3LMH9gn.$V6IqmIAW8S6hTkhQFgcHF. HAS SPACE false +openssl-1-shortsalt $1$ab$tPQLDlEo0lV6hH/urFhDi/ has space true +openssl-1-shortsalt $1$ab$tPQLDlEo0lV6hH/urFhDi/ has spacex false +openssl-1-shortsalt $1$ab$tPQLDlEo0lV6hH/urFhDi/ false +openssl-1-shortsalt $1$ab$tPQLDlEo0lV6hH/urFhDi/ wrong false +openssl-1-shortsalt $1$ab$tPQLDlEo0lV6hH/urFhDi/ HAS SPACE false +openssl-apr1-emptysalt $apr1$$Kp/pJ51DAnlE4ulOl7bZL/ has space true +openssl-apr1-emptysalt $apr1$$Kp/pJ51DAnlE4ulOl7bZL/ has spacex false +openssl-apr1-emptysalt $apr1$$Kp/pJ51DAnlE4ulOl7bZL/ false +openssl-apr1-emptysalt $apr1$$Kp/pJ51DAnlE4ulOl7bZL/ wrong false +openssl-apr1-emptysalt $apr1$$Kp/pJ51DAnlE4ulOl7bZL/ HAS SPACE false +openssl-5 $5$.1.BpMO6ySgdLGNG$Cqpc.jMOAa879d8zsUtCLLWSblgdtTZPIQhLgbISvzA has space false +openssl-5 $5$.1.BpMO6ySgdLGNG$Cqpc.jMOAa879d8zsUtCLLWSblgdtTZPIQhLgbISvzA has spacex false +openssl-5 $5$.1.BpMO6ySgdLGNG$Cqpc.jMOAa879d8zsUtCLLWSblgdtTZPIQhLgbISvzA false +openssl-5 $5$.1.BpMO6ySgdLGNG$Cqpc.jMOAa879d8zsUtCLLWSblgdtTZPIQhLgbISvzA wrong false +openssl-5 $5$.1.BpMO6ySgdLGNG$Cqpc.jMOAa879d8zsUtCLLWSblgdtTZPIQhLgbISvzA HAS SPACE false +openssl-6 $6$a8lwqRhCSmDQpn06$WVdzMnc5p757OVvYNI.SseYPXmcIdwnFAGG7PBEq/5LHvai.AnuRQOxcY38.opLp/l.6J99MxECu6yyUqtGyv/ has space false +openssl-6 $6$a8lwqRhCSmDQpn06$WVdzMnc5p757OVvYNI.SseYPXmcIdwnFAGG7PBEq/5LHvai.AnuRQOxcY38.opLp/l.6J99MxECu6yyUqtGyv/ has spacex false +openssl-6 $6$a8lwqRhCSmDQpn06$WVdzMnc5p757OVvYNI.SseYPXmcIdwnFAGG7PBEq/5LHvai.AnuRQOxcY38.opLp/l.6J99MxECu6yyUqtGyv/ false +openssl-6 $6$a8lwqRhCSmDQpn06$WVdzMnc5p757OVvYNI.SseYPXmcIdwnFAGG7PBEq/5LHvai.AnuRQOxcY38.opLp/l.6J99MxECu6yyUqtGyv/ wrong false +openssl-6 $6$a8lwqRhCSmDQpn06$WVdzMnc5p757OVvYNI.SseYPXmcIdwnFAGG7PBEq/5LHvai.AnuRQOxcY38.opLp/l.6J99MxECu6yyUqtGyv/ HAS SPACE false +mkpasswd-md5 $1$OcEYEwOm$d2la.UXfeCrk0jmlYulwQ1 has space true +mkpasswd-md5 $1$OcEYEwOm$d2la.UXfeCrk0jmlYulwQ1 has spacex false +mkpasswd-md5 $1$OcEYEwOm$d2la.UXfeCrk0jmlYulwQ1 false +mkpasswd-md5 $1$OcEYEwOm$d2la.UXfeCrk0jmlYulwQ1 wrong false +mkpasswd-md5 $1$OcEYEwOm$d2la.UXfeCrk0jmlYulwQ1 HAS SPACE false +python-2a $2a$04$8VDK.Hko5bXpDfj04lg6L.vY/2K8NT.OgtC5ToWyTyM090Ld6oZoC has space true +python-2a $2a$04$8VDK.Hko5bXpDfj04lg6L.vY/2K8NT.OgtC5ToWyTyM090Ld6oZoC has spacex false +python-2a $2a$04$8VDK.Hko5bXpDfj04lg6L.vY/2K8NT.OgtC5ToWyTyM090Ld6oZoC false +python-2a $2a$04$8VDK.Hko5bXpDfj04lg6L.vY/2K8NT.OgtC5ToWyTyM090Ld6oZoC wrong false +python-2a $2a$04$8VDK.Hko5bXpDfj04lg6L.vY/2K8NT.OgtC5ToWyTyM090Ld6oZoC HAS SPACE false +python-2b $2b$04$7RqPRV8O9GLGN6/jssXwOOcIhjZu8XrOxFQ1Su7OSkKSgMquGWFKe has space true +python-2b $2b$04$7RqPRV8O9GLGN6/jssXwOOcIhjZu8XrOxFQ1Su7OSkKSgMquGWFKe has spacex false +python-2b $2b$04$7RqPRV8O9GLGN6/jssXwOOcIhjZu8XrOxFQ1Su7OSkKSgMquGWFKe false +python-2b $2b$04$7RqPRV8O9GLGN6/jssXwOOcIhjZu8XrOxFQ1Su7OSkKSgMquGWFKe wrong false +python-2b $2b$04$7RqPRV8O9GLGN6/jssXwOOcIhjZu8XrOxFQ1Su7OSkKSgMquGWFKe HAS SPACE false +bcrypt-2x $2x$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy has space true +bcrypt-2x $2x$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy has spacex false +bcrypt-2x $2x$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy false +bcrypt-2x $2x$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy wrong false +bcrypt-2x $2x$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy HAS SPACE false +bcrypt-2 $2$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy has space false +bcrypt-2 $2$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy has spacex false +bcrypt-2 $2$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy false +bcrypt-2 $2$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy wrong false +bcrypt-2 $2$04$aePaLEMscPxtO6IdOoeLQuoNSvOZf.Ur4s.Gv0jcQm61FLclSzZUy HAS SPACE false +htpasswd-m $apr1$yD1T0BsZ$yewxyRip4RevxZ.HKiGTa. 日本語パスワード true +htpasswd-m $apr1$yD1T0BsZ$yewxyRip4RevxZ.HKiGTa. 日本語パスワードx false +htpasswd-m $apr1$yD1T0BsZ$yewxyRip4RevxZ.HKiGTa. false +htpasswd-m $apr1$yD1T0BsZ$yewxyRip4RevxZ.HKiGTa. wrong false +htpasswd-B4 $2y$04$BT6opthqk/86zQGiGD3mgeg0OtblCPBJV8nTK0j2knxx0H/PbPJKu 日本語パスワード true +htpasswd-B4 $2y$04$BT6opthqk/86zQGiGD3mgeg0OtblCPBJV8nTK0j2knxx0H/PbPJKu 日本語パスワードx false +htpasswd-B4 $2y$04$BT6opthqk/86zQGiGD3mgeg0OtblCPBJV8nTK0j2knxx0H/PbPJKu false +htpasswd-B4 $2y$04$BT6opthqk/86zQGiGD3mgeg0OtblCPBJV8nTK0j2knxx0H/PbPJKu wrong false +htpasswd-s {SHA}QKiq4IB0zVBYAVFybAvwEv7ny4g= 日本語パスワード true +htpasswd-s {SHA}QKiq4IB0zVBYAVFybAvwEv7ny4g= 日本語パスワードx false +htpasswd-s {SHA}QKiq4IB0zVBYAVFybAvwEv7ny4g= false +htpasswd-s {SHA}QKiq4IB0zVBYAVFybAvwEv7ny4g= wrong false +htpasswd-d /WEcecJqH9olk 日本語パスワード false +htpasswd-d /WEcecJqH9olk 日本語パスワードx false +htpasswd-d /WEcecJqH9olk false +htpasswd-d /WEcecJqH9olk wrong false +htpasswd-p 日本語パスワード 日本語パスワード false +htpasswd-p 日本語パスワード 日本語パスワードx false +htpasswd-p 日本語パスワード false +htpasswd-p 日本語パスワード wrong false +openssl-1 $1$edpraGE1$iRBekZAgO63Gj3n5PNl9q0 日本語パスワード true +openssl-1 $1$edpraGE1$iRBekZAgO63Gj3n5PNl9q0 日本語パスワードx false +openssl-1 $1$edpraGE1$iRBekZAgO63Gj3n5PNl9q0 false +openssl-1 $1$edpraGE1$iRBekZAgO63Gj3n5PNl9q0 wrong false +openssl-apr1 $apr1$4xXcuP2W$e1a2goZwuaQY2ig6Yjnww/ 日本語パスワード true +openssl-apr1 $apr1$4xXcuP2W$e1a2goZwuaQY2ig6Yjnww/ 日本語パスワードx false +openssl-apr1 $apr1$4xXcuP2W$e1a2goZwuaQY2ig6Yjnww/ false +openssl-apr1 $apr1$4xXcuP2W$e1a2goZwuaQY2ig6Yjnww/ wrong false +openssl-1-shortsalt $1$ab$WSlSZbnQWkCciZFeV4oWT. 日本語パスワード true +openssl-1-shortsalt $1$ab$WSlSZbnQWkCciZFeV4oWT. 日本語パスワードx false +openssl-1-shortsalt $1$ab$WSlSZbnQWkCciZFeV4oWT. false +openssl-1-shortsalt $1$ab$WSlSZbnQWkCciZFeV4oWT. wrong false +openssl-apr1-emptysalt $apr1$$Nnb54Npz2zhHR0yg/XE/o/ 日本語パスワード true +openssl-apr1-emptysalt $apr1$$Nnb54Npz2zhHR0yg/XE/o/ 日本語パスワードx false +openssl-apr1-emptysalt $apr1$$Nnb54Npz2zhHR0yg/XE/o/ false +openssl-apr1-emptysalt $apr1$$Nnb54Npz2zhHR0yg/XE/o/ wrong false +openssl-5 $5$8FBRj34ia3Bztv3E$tBMiilkrpErSrqqIyE/y3NXbpIn0ppGSTxWow7WjSc3 日本語パスワード false +openssl-5 $5$8FBRj34ia3Bztv3E$tBMiilkrpErSrqqIyE/y3NXbpIn0ppGSTxWow7WjSc3 日本語パスワードx false +openssl-5 $5$8FBRj34ia3Bztv3E$tBMiilkrpErSrqqIyE/y3NXbpIn0ppGSTxWow7WjSc3 false +openssl-5 $5$8FBRj34ia3Bztv3E$tBMiilkrpErSrqqIyE/y3NXbpIn0ppGSTxWow7WjSc3 wrong false +openssl-6 $6$9WHGqMePcXwBAjLM$x0BGMrB8.LhjfJqFn6CGZWCuxJpxOjFOybwTMFe8dUxRnBLDXacK/2JEaT253PZkLykZbnSSor4llPeciatkN. 日本語パスワード false +openssl-6 $6$9WHGqMePcXwBAjLM$x0BGMrB8.LhjfJqFn6CGZWCuxJpxOjFOybwTMFe8dUxRnBLDXacK/2JEaT253PZkLykZbnSSor4llPeciatkN. 日本語パスワードx false +openssl-6 $6$9WHGqMePcXwBAjLM$x0BGMrB8.LhjfJqFn6CGZWCuxJpxOjFOybwTMFe8dUxRnBLDXacK/2JEaT253PZkLykZbnSSor4llPeciatkN. false +openssl-6 $6$9WHGqMePcXwBAjLM$x0BGMrB8.LhjfJqFn6CGZWCuxJpxOjFOybwTMFe8dUxRnBLDXacK/2JEaT253PZkLykZbnSSor4llPeciatkN. wrong false +mkpasswd-md5 $1$/HGDdQEe$UryBn/l55Vl7XigYDA2NS0 日本語パスワード true +mkpasswd-md5 $1$/HGDdQEe$UryBn/l55Vl7XigYDA2NS0 日本語パスワードx false +mkpasswd-md5 $1$/HGDdQEe$UryBn/l55Vl7XigYDA2NS0 false +mkpasswd-md5 $1$/HGDdQEe$UryBn/l55Vl7XigYDA2NS0 wrong false +python-2a $2a$04$7UJQrbKKlOxKKF4w3tr/JO70KzKTOh0jCfdhRHZNdnjy3FX4RXM76 日本語パスワード true +python-2a $2a$04$7UJQrbKKlOxKKF4w3tr/JO70KzKTOh0jCfdhRHZNdnjy3FX4RXM76 日本語パスワードx false +python-2a $2a$04$7UJQrbKKlOxKKF4w3tr/JO70KzKTOh0jCfdhRHZNdnjy3FX4RXM76 false +python-2a $2a$04$7UJQrbKKlOxKKF4w3tr/JO70KzKTOh0jCfdhRHZNdnjy3FX4RXM76 wrong false +python-2b $2b$04$cY86ZHUy6NE4jzIxCTuzwOGOc.Bw1LOX6712usC0PQrIlh7sYRqSm 日本語パスワード true +python-2b $2b$04$cY86ZHUy6NE4jzIxCTuzwOGOc.Bw1LOX6712usC0PQrIlh7sYRqSm 日本語パスワードx false +python-2b $2b$04$cY86ZHUy6NE4jzIxCTuzwOGOc.Bw1LOX6712usC0PQrIlh7sYRqSm false +python-2b $2b$04$cY86ZHUy6NE4jzIxCTuzwOGOc.Bw1LOX6712usC0PQrIlh7sYRqSm wrong false +bcrypt-2x $2x$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum 日本語パスワード true +bcrypt-2x $2x$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum 日本語パスワードx false +bcrypt-2x $2x$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum false +bcrypt-2x $2x$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum wrong false +bcrypt-2 $2$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum 日本語パスワード false +bcrypt-2 $2$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum 日本語パスワードx false +bcrypt-2 $2$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum false +bcrypt-2 $2$04$1EQOQXQ1h1FdWG.3KJnsU.UW8PBB7iY1C/JHsEHfhbm6Do0kTXNum wrong false +htpasswd-m $apr1$6ul9eESz$C5/AN9YsYeOohWtXevkl10 dol$lar true +htpasswd-m $apr1$6ul9eESz$C5/AN9YsYeOohWtXevkl10 dol$larx false +htpasswd-m $apr1$6ul9eESz$C5/AN9YsYeOohWtXevkl10 false +htpasswd-m $apr1$6ul9eESz$C5/AN9YsYeOohWtXevkl10 wrong false +htpasswd-m $apr1$6ul9eESz$C5/AN9YsYeOohWtXevkl10 DOL$LAR false +htpasswd-B4 $2y$04$6GRfN7yC8ZYF7jDKXQqMLO7Mg.BxR1dRiZRLXo3u5vXQmZurcO5Q6 dol$lar true +htpasswd-B4 $2y$04$6GRfN7yC8ZYF7jDKXQqMLO7Mg.BxR1dRiZRLXo3u5vXQmZurcO5Q6 dol$larx false +htpasswd-B4 $2y$04$6GRfN7yC8ZYF7jDKXQqMLO7Mg.BxR1dRiZRLXo3u5vXQmZurcO5Q6 false +htpasswd-B4 $2y$04$6GRfN7yC8ZYF7jDKXQqMLO7Mg.BxR1dRiZRLXo3u5vXQmZurcO5Q6 wrong false +htpasswd-B4 $2y$04$6GRfN7yC8ZYF7jDKXQqMLO7Mg.BxR1dRiZRLXo3u5vXQmZurcO5Q6 DOL$LAR false +htpasswd-s {SHA}+dlg916KqIxwfDedI+GvoMvBVIg= dol$lar true +htpasswd-s {SHA}+dlg916KqIxwfDedI+GvoMvBVIg= dol$larx false +htpasswd-s {SHA}+dlg916KqIxwfDedI+GvoMvBVIg= false +htpasswd-s {SHA}+dlg916KqIxwfDedI+GvoMvBVIg= wrong false +htpasswd-s {SHA}+dlg916KqIxwfDedI+GvoMvBVIg= DOL$LAR false +htpasswd-d n1nh9KwurMFl2 dol$lar false +htpasswd-d n1nh9KwurMFl2 dol$larx false +htpasswd-d n1nh9KwurMFl2 false +htpasswd-d n1nh9KwurMFl2 wrong false +htpasswd-d n1nh9KwurMFl2 DOL$LAR false +htpasswd-p dol$lar dol$lar false +htpasswd-p dol$lar dol$larx false +htpasswd-p dol$lar false +htpasswd-p dol$lar wrong false +htpasswd-p dol$lar DOL$LAR false +openssl-1 $1$gMv8j3rl$nWlKKzqAtSXcalTFUO0z8/ dol$lar true +openssl-1 $1$gMv8j3rl$nWlKKzqAtSXcalTFUO0z8/ dol$larx false +openssl-1 $1$gMv8j3rl$nWlKKzqAtSXcalTFUO0z8/ false +openssl-1 $1$gMv8j3rl$nWlKKzqAtSXcalTFUO0z8/ wrong false +openssl-1 $1$gMv8j3rl$nWlKKzqAtSXcalTFUO0z8/ DOL$LAR false +openssl-apr1 $apr1$YdEGDjdH$mK6ACZbm7Lb7jycTLJD1c1 dol$lar true +openssl-apr1 $apr1$YdEGDjdH$mK6ACZbm7Lb7jycTLJD1c1 dol$larx false +openssl-apr1 $apr1$YdEGDjdH$mK6ACZbm7Lb7jycTLJD1c1 false +openssl-apr1 $apr1$YdEGDjdH$mK6ACZbm7Lb7jycTLJD1c1 wrong false +openssl-apr1 $apr1$YdEGDjdH$mK6ACZbm7Lb7jycTLJD1c1 DOL$LAR false +openssl-1-shortsalt $1$ab$gemMl4n7P3SycewViLz9A. dol$lar true +openssl-1-shortsalt $1$ab$gemMl4n7P3SycewViLz9A. dol$larx false +openssl-1-shortsalt $1$ab$gemMl4n7P3SycewViLz9A. false +openssl-1-shortsalt $1$ab$gemMl4n7P3SycewViLz9A. wrong false +openssl-1-shortsalt $1$ab$gemMl4n7P3SycewViLz9A. DOL$LAR false +openssl-apr1-emptysalt $apr1$$UzgxxPXIZSIiewpAJH3oG/ dol$lar true +openssl-apr1-emptysalt $apr1$$UzgxxPXIZSIiewpAJH3oG/ dol$larx false +openssl-apr1-emptysalt $apr1$$UzgxxPXIZSIiewpAJH3oG/ false +openssl-apr1-emptysalt $apr1$$UzgxxPXIZSIiewpAJH3oG/ wrong false +openssl-apr1-emptysalt $apr1$$UzgxxPXIZSIiewpAJH3oG/ DOL$LAR false +openssl-5 $5$0lOiX.Qhir1kaVAh$04u4Xj9SUpO6SNMD6zp4NEb0fSLVQ7/fVoQg2Ezfw.. dol$lar false +openssl-5 $5$0lOiX.Qhir1kaVAh$04u4Xj9SUpO6SNMD6zp4NEb0fSLVQ7/fVoQg2Ezfw.. dol$larx false +openssl-5 $5$0lOiX.Qhir1kaVAh$04u4Xj9SUpO6SNMD6zp4NEb0fSLVQ7/fVoQg2Ezfw.. false +openssl-5 $5$0lOiX.Qhir1kaVAh$04u4Xj9SUpO6SNMD6zp4NEb0fSLVQ7/fVoQg2Ezfw.. wrong false +openssl-5 $5$0lOiX.Qhir1kaVAh$04u4Xj9SUpO6SNMD6zp4NEb0fSLVQ7/fVoQg2Ezfw.. DOL$LAR false +openssl-6 $6$HQkr8N2lg19uDBU/$9RqTYtBldanIMeLJLCcFlItUQqnPu5FKOJseTvYdEwNPI/pG8.3CRGqnU/mQJkOhLq0qtioliisKyyhYlm72N/ dol$lar false +openssl-6 $6$HQkr8N2lg19uDBU/$9RqTYtBldanIMeLJLCcFlItUQqnPu5FKOJseTvYdEwNPI/pG8.3CRGqnU/mQJkOhLq0qtioliisKyyhYlm72N/ dol$larx false +openssl-6 $6$HQkr8N2lg19uDBU/$9RqTYtBldanIMeLJLCcFlItUQqnPu5FKOJseTvYdEwNPI/pG8.3CRGqnU/mQJkOhLq0qtioliisKyyhYlm72N/ false +openssl-6 $6$HQkr8N2lg19uDBU/$9RqTYtBldanIMeLJLCcFlItUQqnPu5FKOJseTvYdEwNPI/pG8.3CRGqnU/mQJkOhLq0qtioliisKyyhYlm72N/ wrong false +openssl-6 $6$HQkr8N2lg19uDBU/$9RqTYtBldanIMeLJLCcFlItUQqnPu5FKOJseTvYdEwNPI/pG8.3CRGqnU/mQJkOhLq0qtioliisKyyhYlm72N/ DOL$LAR false +mkpasswd-md5 $1$olvjfkVq$3mXo.SA9YJNpYpwzpsFR9. dol$lar true +mkpasswd-md5 $1$olvjfkVq$3mXo.SA9YJNpYpwzpsFR9. dol$larx false +mkpasswd-md5 $1$olvjfkVq$3mXo.SA9YJNpYpwzpsFR9. false +mkpasswd-md5 $1$olvjfkVq$3mXo.SA9YJNpYpwzpsFR9. wrong false +mkpasswd-md5 $1$olvjfkVq$3mXo.SA9YJNpYpwzpsFR9. DOL$LAR false +python-2a $2a$04$QAx7OjUlTiCb.24/zNxHdOW2Z1WauhR9asjDrPDTuOfnZh2U0sNRm dol$lar true +python-2a $2a$04$QAx7OjUlTiCb.24/zNxHdOW2Z1WauhR9asjDrPDTuOfnZh2U0sNRm dol$larx false +python-2a $2a$04$QAx7OjUlTiCb.24/zNxHdOW2Z1WauhR9asjDrPDTuOfnZh2U0sNRm false +python-2a $2a$04$QAx7OjUlTiCb.24/zNxHdOW2Z1WauhR9asjDrPDTuOfnZh2U0sNRm wrong false +python-2a $2a$04$QAx7OjUlTiCb.24/zNxHdOW2Z1WauhR9asjDrPDTuOfnZh2U0sNRm DOL$LAR false +python-2b $2b$04$uuB3LkoYJ3cftB31h6rCceT632ULBGA4JtNDrvxXXa45BCbYDWZxy dol$lar true +python-2b $2b$04$uuB3LkoYJ3cftB31h6rCceT632ULBGA4JtNDrvxXXa45BCbYDWZxy dol$larx false +python-2b $2b$04$uuB3LkoYJ3cftB31h6rCceT632ULBGA4JtNDrvxXXa45BCbYDWZxy false +python-2b $2b$04$uuB3LkoYJ3cftB31h6rCceT632ULBGA4JtNDrvxXXa45BCbYDWZxy wrong false +python-2b $2b$04$uuB3LkoYJ3cftB31h6rCceT632ULBGA4JtNDrvxXXa45BCbYDWZxy DOL$LAR false +bcrypt-2x $2x$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq dol$lar true +bcrypt-2x $2x$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq dol$larx false +bcrypt-2x $2x$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq false +bcrypt-2x $2x$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq wrong false +bcrypt-2x $2x$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq DOL$LAR false +bcrypt-2 $2$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq dol$lar false +bcrypt-2 $2$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq dol$larx false +bcrypt-2 $2$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq false +bcrypt-2 $2$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq wrong false +bcrypt-2 $2$04$SuvKRztOfMRj9ely2Nu.fuwdcNgHnfjD8U5rBZPDDIAZYEP.bKCpq DOL$LAR false +htpasswd-m $apr1$EDKGfQJW$S73zMkpdPTm79PKLCmEFq/ #hash true +htpasswd-m $apr1$EDKGfQJW$S73zMkpdPTm79PKLCmEFq/ #hashx false +htpasswd-m $apr1$EDKGfQJW$S73zMkpdPTm79PKLCmEFq/ false +htpasswd-m $apr1$EDKGfQJW$S73zMkpdPTm79PKLCmEFq/ wrong false +htpasswd-m $apr1$EDKGfQJW$S73zMkpdPTm79PKLCmEFq/ #HASH false +htpasswd-B4 $2y$04$3fHy5WPTheJiNqFTrkCQVORgShp.4XdzzlHtMWm1RYfRgWTAh8ZJm #hash true +htpasswd-B4 $2y$04$3fHy5WPTheJiNqFTrkCQVORgShp.4XdzzlHtMWm1RYfRgWTAh8ZJm #hashx false +htpasswd-B4 $2y$04$3fHy5WPTheJiNqFTrkCQVORgShp.4XdzzlHtMWm1RYfRgWTAh8ZJm false +htpasswd-B4 $2y$04$3fHy5WPTheJiNqFTrkCQVORgShp.4XdzzlHtMWm1RYfRgWTAh8ZJm wrong false +htpasswd-B4 $2y$04$3fHy5WPTheJiNqFTrkCQVORgShp.4XdzzlHtMWm1RYfRgWTAh8ZJm #HASH false +htpasswd-s {SHA}xuHzZK1ewIvvgqwFH5qGtMCTq+o= #hash true +htpasswd-s {SHA}xuHzZK1ewIvvgqwFH5qGtMCTq+o= #hashx false +htpasswd-s {SHA}xuHzZK1ewIvvgqwFH5qGtMCTq+o= false +htpasswd-s {SHA}xuHzZK1ewIvvgqwFH5qGtMCTq+o= wrong false +htpasswd-s {SHA}xuHzZK1ewIvvgqwFH5qGtMCTq+o= #HASH false +htpasswd-d SDLkI9NEDL8hE #hash false +htpasswd-d SDLkI9NEDL8hE #hashx false +htpasswd-d SDLkI9NEDL8hE false +htpasswd-d SDLkI9NEDL8hE wrong false +htpasswd-d SDLkI9NEDL8hE #HASH false +htpasswd-p #hash #hash false +htpasswd-p #hash #hashx false +htpasswd-p #hash false +htpasswd-p #hash wrong false +htpasswd-p #hash #HASH false +openssl-1 $1$mwPn.cF9$4W14f.oN0ydHBnAT72G/61 #hash true +openssl-1 $1$mwPn.cF9$4W14f.oN0ydHBnAT72G/61 #hashx false +openssl-1 $1$mwPn.cF9$4W14f.oN0ydHBnAT72G/61 false +openssl-1 $1$mwPn.cF9$4W14f.oN0ydHBnAT72G/61 wrong false +openssl-1 $1$mwPn.cF9$4W14f.oN0ydHBnAT72G/61 #HASH false +openssl-apr1 $apr1$uApNTF8A$49JMF.JgqqUmFtO2p8mxu0 #hash true +openssl-apr1 $apr1$uApNTF8A$49JMF.JgqqUmFtO2p8mxu0 #hashx false +openssl-apr1 $apr1$uApNTF8A$49JMF.JgqqUmFtO2p8mxu0 false +openssl-apr1 $apr1$uApNTF8A$49JMF.JgqqUmFtO2p8mxu0 wrong false +openssl-apr1 $apr1$uApNTF8A$49JMF.JgqqUmFtO2p8mxu0 #HASH false +openssl-1-shortsalt $1$ab$MPZRRe6SSpwQwAMuS2GTR1 #hash true +openssl-1-shortsalt $1$ab$MPZRRe6SSpwQwAMuS2GTR1 #hashx false +openssl-1-shortsalt $1$ab$MPZRRe6SSpwQwAMuS2GTR1 false +openssl-1-shortsalt $1$ab$MPZRRe6SSpwQwAMuS2GTR1 wrong false +openssl-1-shortsalt $1$ab$MPZRRe6SSpwQwAMuS2GTR1 #HASH false +openssl-apr1-emptysalt $apr1$$JejGpegnyETs7TVtKkf6X1 #hash true +openssl-apr1-emptysalt $apr1$$JejGpegnyETs7TVtKkf6X1 #hashx false +openssl-apr1-emptysalt $apr1$$JejGpegnyETs7TVtKkf6X1 false +openssl-apr1-emptysalt $apr1$$JejGpegnyETs7TVtKkf6X1 wrong false +openssl-apr1-emptysalt $apr1$$JejGpegnyETs7TVtKkf6X1 #HASH false +openssl-5 $5$nXScjFTKAU7Ey08s$k0cXq/j3pZwSaOn49tQ0CIC05q2TLxRqoTSFoYhJ/3. #hash false +openssl-5 $5$nXScjFTKAU7Ey08s$k0cXq/j3pZwSaOn49tQ0CIC05q2TLxRqoTSFoYhJ/3. #hashx false +openssl-5 $5$nXScjFTKAU7Ey08s$k0cXq/j3pZwSaOn49tQ0CIC05q2TLxRqoTSFoYhJ/3. false +openssl-5 $5$nXScjFTKAU7Ey08s$k0cXq/j3pZwSaOn49tQ0CIC05q2TLxRqoTSFoYhJ/3. wrong false +openssl-5 $5$nXScjFTKAU7Ey08s$k0cXq/j3pZwSaOn49tQ0CIC05q2TLxRqoTSFoYhJ/3. #HASH false +openssl-6 $6$nIK58rnBtPU02Rmk$623U0vnHU.ZdL4gXXhU8DH/lsadREQ7JAEkqYr4/e5JYrzcPkZzTzCdK8nE3mEE8juvYHrwKpBKveZa2YhHYC1 #hash false +openssl-6 $6$nIK58rnBtPU02Rmk$623U0vnHU.ZdL4gXXhU8DH/lsadREQ7JAEkqYr4/e5JYrzcPkZzTzCdK8nE3mEE8juvYHrwKpBKveZa2YhHYC1 #hashx false +openssl-6 $6$nIK58rnBtPU02Rmk$623U0vnHU.ZdL4gXXhU8DH/lsadREQ7JAEkqYr4/e5JYrzcPkZzTzCdK8nE3mEE8juvYHrwKpBKveZa2YhHYC1 false +openssl-6 $6$nIK58rnBtPU02Rmk$623U0vnHU.ZdL4gXXhU8DH/lsadREQ7JAEkqYr4/e5JYrzcPkZzTzCdK8nE3mEE8juvYHrwKpBKveZa2YhHYC1 wrong false +openssl-6 $6$nIK58rnBtPU02Rmk$623U0vnHU.ZdL4gXXhU8DH/lsadREQ7JAEkqYr4/e5JYrzcPkZzTzCdK8nE3mEE8juvYHrwKpBKveZa2YhHYC1 #HASH false +mkpasswd-md5 $1$6x5Kfnsy$yaljiUeoEyLEwEc1mLi3K0 #hash true +mkpasswd-md5 $1$6x5Kfnsy$yaljiUeoEyLEwEc1mLi3K0 #hashx false +mkpasswd-md5 $1$6x5Kfnsy$yaljiUeoEyLEwEc1mLi3K0 false +mkpasswd-md5 $1$6x5Kfnsy$yaljiUeoEyLEwEc1mLi3K0 wrong false +mkpasswd-md5 $1$6x5Kfnsy$yaljiUeoEyLEwEc1mLi3K0 #HASH false +python-2a $2a$04$mGM4PrfEMg/G7vO7zE8CLutH9jgv8nRIO53/YzrOWFMbf3nKM/Yky #hash true +python-2a $2a$04$mGM4PrfEMg/G7vO7zE8CLutH9jgv8nRIO53/YzrOWFMbf3nKM/Yky #hashx false +python-2a $2a$04$mGM4PrfEMg/G7vO7zE8CLutH9jgv8nRIO53/YzrOWFMbf3nKM/Yky false +python-2a $2a$04$mGM4PrfEMg/G7vO7zE8CLutH9jgv8nRIO53/YzrOWFMbf3nKM/Yky wrong false +python-2a $2a$04$mGM4PrfEMg/G7vO7zE8CLutH9jgv8nRIO53/YzrOWFMbf3nKM/Yky #HASH false +python-2b $2b$04$6s0m.DFz2gnXu/0c/UB7rOwQFC60Ha02N/vH3kniaR1Rpjlim9fmC #hash true +python-2b $2b$04$6s0m.DFz2gnXu/0c/UB7rOwQFC60Ha02N/vH3kniaR1Rpjlim9fmC #hashx false +python-2b $2b$04$6s0m.DFz2gnXu/0c/UB7rOwQFC60Ha02N/vH3kniaR1Rpjlim9fmC false +python-2b $2b$04$6s0m.DFz2gnXu/0c/UB7rOwQFC60Ha02N/vH3kniaR1Rpjlim9fmC wrong false +python-2b $2b$04$6s0m.DFz2gnXu/0c/UB7rOwQFC60Ha02N/vH3kniaR1Rpjlim9fmC #HASH false +bcrypt-2x $2x$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq #hash true +bcrypt-2x $2x$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq #hashx false +bcrypt-2x $2x$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq false +bcrypt-2x $2x$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq wrong false +bcrypt-2x $2x$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq #HASH false +bcrypt-2 $2$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq #hash false +bcrypt-2 $2$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq #hashx false +bcrypt-2 $2$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq false +bcrypt-2 $2$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq wrong false +bcrypt-2 $2$04$O6aMTIOfvxj8dgU0q0dxqOK.iOb5eBHvYLKxviy.zBrEKbOBcbqQq #HASH false +htpasswd-B10 $2y$10$nlT9eq4t81F5AX/aa0A.hu/qXu6yDbULM4PjEExt/a1oviNfDgV7G password true +htpasswd-B10 $2y$10$nlT9eq4t81F5AX/aa0A.hu/qXu6yDbULM4PjEExt/a1oviNfDgV7G passwordx false +htpasswd-B10 $2y$10$nlT9eq4t81F5AX/aa0A.hu/qXu6yDbULM4PjEExt/a1oviNfDgV7G false +htpasswd-B10 $2y$10$nlT9eq4t81F5AX/aa0A.hu/qXu6yDbULM4PjEExt/a1oviNfDgV7G wrong false +htpasswd-B10 $2y$10$nlT9eq4t81F5AX/aa0A.hu/qXu6yDbULM4PjEExt/a1oviNfDgV7G PASSWORD false +goauth-longsalt $1$longersalt12345$BC5v1tO94uAS8XwbdyaRd. password true +goauth-longsalt $1$longersalt12345$BC5v1tO94uAS8XwbdyaRd. passwordx false +goauth-longsalt $1$longersalt12345$BC5v1tO94uAS8XwbdyaRd. false +goauth-longsalt $apr1$longersalt12345$NkuUnbPzYi86Xfg0F1LK6. password true +goauth-longsalt $apr1$longersalt12345$NkuUnbPzYi86Xfg0F1LK6. passwordx false +goauth-longsalt $apr1$longersalt12345$NkuUnbPzYi86Xfg0F1LK6. false diff --git a/lib/http/testdata/make-htpasswd-vectors.sh b/lib/http/testdata/make-htpasswd-vectors.sh new file mode 100755 index 000000000..835619445 --- /dev/null +++ b/lib/http/testdata/make-htpasswd-vectors.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Prints labelsecretpassword lines made by real htpasswd +# tools, used to make htpasswd-golden.tsv which adds variations of the +# password and whether each should be accepted. +pws=("" "a" "password" "md5" "exactly16chars!!" "seventeen_chars!!" "thirty-three-characters-long-pass" "$(printf 'x%.0s' {1..80})" "pässwörd" "has:colon" "has space" "日本語パスワード" 'dol$lar' '#hash') +out() { printf '%s\t%s\t%s\n' "$1" "$2" "$3"; } +for pw in "${pws[@]}"; do + out htpasswd-m "$(htpasswd -nbm u "$pw" | cut -d: -f2-)" "$pw" + out htpasswd-B4 "$(htpasswd -nbB -C 4 u "$pw" | cut -d: -f2-)" "$pw" + out htpasswd-s "$(htpasswd -nbs u "$pw" | cut -d: -f2-)" "$pw" + out htpasswd-d "$(htpasswd -nbd u "$pw" 2>/dev/null | cut -d: -f2-)" "$pw" + out htpasswd-p "$(htpasswd -nbp u "$pw" 2>/dev/null | cut -d: -f2-)" "$pw" + out openssl-1 "$(openssl passwd -1 "$pw")" "$pw" + out openssl-apr1 "$(openssl passwd -apr1 "$pw")" "$pw" + out openssl-1-shortsalt "$(openssl passwd -1 -salt ab "$pw")" "$pw" + out openssl-apr1-emptysalt "$(openssl passwd -apr1 -salt '' "$pw")" "$pw" + out openssl-5 "$(openssl passwd -5 "$pw")" "$pw" + out openssl-6 "$(openssl passwd -6 "$pw")" "$pw" + [ -n "$pw" ] && out mkpasswd-md5 "$(mkpasswd -m md5crypt "$pw")" "$pw" + for p in 2a 2b; do + out python-$p "$(python3 -I -c 'import bcrypt,sys; print(bcrypt.hashpw(sys.argv[1].encode(), bcrypt.gensalt(4, prefix=sys.argv[2].encode())).decode())' "$pw" $p)" "$pw" + done + h=$(python3 -I -c 'import bcrypt,sys; print(bcrypt.hashpw(sys.argv[1].encode(), bcrypt.gensalt(4)).decode())' "$pw") + out bcrypt-2x "\$2x\$${h:4}" "$pw" + out bcrypt-2 "\$2\$${h:4}" "$pw" +done +out htpasswd-B10 "$(htpasswd -nbB -C 10 u password | cut -d: -f2-)" password