From f0cb5dd6d31936740164c00a0ced192b766ead63 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Tue, 27 Oct 2026 18:24:31 +0000 Subject: [PATCH] lib/http: replace github.com/abbot/go-http-auth with built in htpasswd support The go-http-auth library is unmaintained and rclone only used a small part of it, so this replaces it with a small implementation of basic auth and htpasswd file checking supporting the same bcrypt, MD5-crypt ($1$ and $apr1$) and {SHA} formats. It is tested against hashes made by htpasswd, openssl, mkpasswd and Python bcrypt, expecting the same results as go-http-auth gave. A missing or unreadable htpasswd file now logs an error and rejects requests rather than panicking, malformed lines are logged and skipped, and entries in unsupported formats are logged when the file is loaded. --- go.mod | 1 - go.sum | 2 - lib/http/htpasswd.go | 207 ++++ lib/http/htpasswd_test.go | 135 +++ lib/http/middleware.go | 61 +- lib/http/testdata/htpasswd-golden.tsv | 1080 ++++++++++++++++++++ lib/http/testdata/make-htpasswd-vectors.sh | 27 + 7 files changed, 1472 insertions(+), 41 deletions(-) create mode 100644 lib/http/htpasswd.go create mode 100644 lib/http/htpasswd_test.go create mode 100644 lib/http/testdata/htpasswd-golden.tsv create mode 100755 lib/http/testdata/make-htpasswd-vectors.sh 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