From 728dba60a9cc1f28273985407cdfcb172ffb3fed Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 01:46:33 +0700 Subject: [PATCH 01/13] add min symbol, min num n look for consecutive num --- .gitignore | 1 + safe/__init__.py | 50 +++++++++++++++++++++++++++++++++++++++++------- test.py | 1 - 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 223235a..968b0c1 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ docs/_build cover/ venv/ .tox +Env diff --git a/safe/__init__.py b/safe/__init__.py index c202689..6856a3a 100644 --- a/safe/__init__.py +++ b/safe/__init__.py @@ -28,11 +28,15 @@ UPPER = re.compile(r'[A-Z]') NUMBER = re.compile(r'[0-9]') MARKS = re.compile(r'[^0-9a-zA-Z]') +SYMBOL = re.compile(r"[ !#$%&'()*+,-./[\\\]^_`{|}~"+r'"]') +NUM_ASC = '01234567890' +NUM_DESC = '09876543210' TERRIBLE = 0 SIMPLE = 1 MEDIUM = 2 STRONG = 3 +VERYSTRONG = 4 def _load_words(cache_words=True): @@ -110,7 +114,7 @@ class Strength(object): Here are some common usages of strength:: - >>> strength = Strength(True, 'strong', 'password is perfect') + >>> strength = Strength(True, 3, 'strong', 'password is perfect') >>> bool(strength) True >>> repr(strength) @@ -119,11 +123,13 @@ class Strength(object): 'password is perfect' :param valid: if the password is valid to use + :param level: the level of the password :param strength: the strength level of the password :param message: a message related to the password """ - def __init__(self, valid, strength, message): + def __init__(self, valid, level, strength, message): self.valid = valid + self.level = level self.strength = strength self.message = message @@ -143,7 +149,7 @@ def __bool__(self): return self.valid -def check(raw, length=8, freq=0, min_types=3, level=STRONG, cache_words=True): +def check(raw, length=8, freq=0, min_types=5, min_symbol=3, min_number=3, level=STRONG, cache_words=True): """Check the safety level of the password. :param raw: raw text password. @@ -153,6 +159,7 @@ def check(raw, length=8, freq=0, min_types=3, level=STRONG, cache_words=True): :param level: minimum level to validate a password. """ raw = to_unicode(raw) + print(raw) if level > STRONG: level = STRONG @@ -178,15 +185,44 @@ def check(raw, length=8, freq=0, min_types=3, level=STRONG, cache_words=True): if MARKS.search(raw): types += 1 - + + if len(MARKS.findall(raw)) >= min_symbol: + types += 2 + + if len(NUMBER.findall(raw)) >= min_number: + types += 2 + + print(types) + # Find all the numbe ascending + index = 2 + while index < len(raw): + temp_string = raw[index-2] + raw[index-1] + raw[index] + if NUM_ASC.find(temp_string) != -1: + types -= 1 + break + + index += 1 + + # Find all the numbe descending + index = 2 + while index < len(raw): + temp_string = raw[index-2] + raw[index-1] + raw[index] + if NUM_DESC.find(temp_string) != -1: + types -= 1 + break + + index += 1 + if types < 2: - return Strength(level <= SIMPLE, 'simple', 'password is too simple') + return Strength(level <= SIMPLE, SIMPLE, 'simple', 'password is too simple') if types < min_types: - return Strength(level <= MEDIUM, 'medium', + return Strength(level <= MEDIUM, MEDIUM, 'medium', 'password is good enough, but not strong') - return Strength(True, 'strong', 'password is perfect') + if types > 5: + return Strength(True, VERYSTRONG, 'very strong', 'password is very perfect') + return Strength(True, STRONG, 'strong', 'password is perfect') def safety(raw, length=8, freq=0, min_types=2, level=STRONG): diff --git a/test.py b/test.py index 6b8f6b1..109faa4 100644 --- a/test.py +++ b/test.py @@ -4,7 +4,6 @@ import safe - def test_asdf(): s = safe.check('dfghjkl', length=7) assert not s From 03232cc1539a8e46168bb2c4e13f9e886ffc4430 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 04:34:07 +0700 Subject: [PATCH 02/13] remove print --- safe/__init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/safe/__init__.py b/safe/__init__.py index 6856a3a..40026ca 100644 --- a/safe/__init__.py +++ b/safe/__init__.py @@ -14,7 +14,7 @@ import tempfile from ._compat import to_unicode, pickle -__version__ = '0.4' +__version__ = '0.5' __author__ = 'Hsiaoming Yang ' __all__ = [ @@ -159,7 +159,7 @@ def check(raw, length=8, freq=0, min_types=5, min_symbol=3, min_number=3, level= :param level: minimum level to validate a password. """ raw = to_unicode(raw) - print(raw) + if level > STRONG: level = STRONG @@ -191,8 +191,7 @@ def check(raw, length=8, freq=0, min_types=5, min_symbol=3, min_number=3, level= if len(NUMBER.findall(raw)) >= min_number: types += 2 - - print(types) + # Find all the numbe ascending index = 2 while index < len(raw): From dadd8f05fa4e38bc2661d70876c78ee99fd526f2 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 05:06:12 +0700 Subject: [PATCH 03/13] build --- .gitignore | 2 - Safe.egg-info/PKG-INFO | 100 +++++++++++++++++++++++++++++ Safe.egg-info/SOURCES.txt | 12 ++++ Safe.egg-info/dependency_links.txt | 1 + Safe.egg-info/not-zip-safe | 1 + Safe.egg-info/top_level.txt | 1 + dist/Safe-0.5.tar.gz | Bin 0 -> 57091 bytes 7 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 Safe.egg-info/PKG-INFO create mode 100644 Safe.egg-info/SOURCES.txt create mode 100644 Safe.egg-info/dependency_links.txt create mode 100644 Safe.egg-info/not-zip-safe create mode 100644 Safe.egg-info/top_level.txt create mode 100644 dist/Safe-0.5.tar.gz diff --git a/.gitignore b/.gitignore index 968b0c1..88ee8d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,8 @@ *.pyc *.pyo -*.egg-info __pycache__ build develop-eggs -dist eggs parts .DS_Store diff --git a/Safe.egg-info/PKG-INFO b/Safe.egg-info/PKG-INFO new file mode 100644 index 0000000..81abddf --- /dev/null +++ b/Safe.egg-info/PKG-INFO @@ -0,0 +1,100 @@ +Metadata-Version: 1.1 +Name: Safe +Version: 0.5 +Summary: Is your password safe? +Home-page: https://github.com/lepture/safe +Author: Hsiaoming Yang +Author-email: me@lepture.com +License: BSD +Description: Safe + ==== + + Is your password safe? **Safe** will check the password strength for you. + + .. image:: https://travis-ci.org/lepture/safe.png?branch=master + :target: https://travis-ci.org/lepture/safe + + How it works + ------------ + + **Safe** will check if the password has a simple pattern, for instance: + + 1. password is in the order on your QWERT keyboards. + 2. password is simple alphabet step by step, such as: abcd, 1357 + + **Safe** will check if the password is a common used password. + Many thanks to Mark Burnett for the great work on `10000 Top Passwords `_. + + **Safe** will check if the password has mixed number, alphabet, marks. + + Installation + ------------ + + Install Safe with pip:: + + $ pip install Safe + + If pip is not available, try easy_install:: + + $ easy_install Safe + + Usage + ----- + + It's very simple to check the strength of a password:: + + >>> import safe + >>> safe.check(1) + terrible + >>> safe.check('password') + simple + >>> safe.check('is.safe.password') + medium + >>> safe.check('x*V-92Ba') + strong + >>> strength = safe.check('x*V-92Ba') + >>> bool(strength) + True + >>> repr(strength) + 'strong' + >>> str(strength) + 'password is perfect' + >>> strength.valid + True + >>> strength.strength + 'strong' + >>> strength.message + 'password is perfect' + + + Environ Variables + ----------------- + + 1. **PYTHON_SAFE_WORDS_CACHE**: cache words in this file, default is a tempfile + 2. **PYTHON_SAFE_WORDS_FILE**: words vocabulary file, default is the 10k top passwords + + Other Implementations + --------------------- + + 1. **JavaScript**: `lepture/safe.js `_ + +Platform: any +Classifier: Development Status :: 3 - Alpha +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: MacOS +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: Linux +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: Implementation +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Software Development :: Libraries :: Python Modules diff --git a/Safe.egg-info/SOURCES.txt b/Safe.egg-info/SOURCES.txt new file mode 100644 index 0000000..ecc8a91 --- /dev/null +++ b/Safe.egg-info/SOURCES.txt @@ -0,0 +1,12 @@ +LICENSE +MANIFEST.in +README.rst +setup.py +Safe.egg-info/PKG-INFO +Safe.egg-info/SOURCES.txt +Safe.egg-info/dependency_links.txt +Safe.egg-info/not-zip-safe +Safe.egg-info/top_level.txt +safe/__init__.py +safe/_compat.py +safe/words.dat \ No newline at end of file diff --git a/Safe.egg-info/dependency_links.txt b/Safe.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Safe.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/Safe.egg-info/not-zip-safe b/Safe.egg-info/not-zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Safe.egg-info/not-zip-safe @@ -0,0 +1 @@ + diff --git a/Safe.egg-info/top_level.txt b/Safe.egg-info/top_level.txt new file mode 100644 index 0000000..b7767f6 --- /dev/null +++ b/Safe.egg-info/top_level.txt @@ -0,0 +1 @@ +safe diff --git a/dist/Safe-0.5.tar.gz b/dist/Safe-0.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff91c4895148166d4cf3ff55ce14e890cdbf83e6 GIT binary patch literal 57091 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 UdY+!A=l}Hc-(}>)z5rMP00EX9l>h($ literal 0 HcmV?d00001 From 06eba5f34c2be311b1bab8be99eda282b7b44fbe Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 05:26:38 +0700 Subject: [PATCH 04/13] remove --- Safe.egg-info/PKG-INFO | 100 ----------------------------- Safe.egg-info/SOURCES.txt | 12 ---- Safe.egg-info/dependency_links.txt | 1 - Safe.egg-info/not-zip-safe | 1 - Safe.egg-info/top_level.txt | 1 - dist/Safe-0.5.tar.gz | Bin 57091 -> 0 bytes 6 files changed, 115 deletions(-) delete mode 100644 Safe.egg-info/PKG-INFO delete mode 100644 Safe.egg-info/SOURCES.txt delete mode 100644 Safe.egg-info/dependency_links.txt delete mode 100644 Safe.egg-info/not-zip-safe delete mode 100644 Safe.egg-info/top_level.txt delete mode 100644 dist/Safe-0.5.tar.gz diff --git a/Safe.egg-info/PKG-INFO b/Safe.egg-info/PKG-INFO deleted file mode 100644 index 81abddf..0000000 --- a/Safe.egg-info/PKG-INFO +++ /dev/null @@ -1,100 +0,0 @@ -Metadata-Version: 1.1 -Name: Safe -Version: 0.5 -Summary: Is your password safe? -Home-page: https://github.com/lepture/safe -Author: Hsiaoming Yang -Author-email: me@lepture.com -License: BSD -Description: Safe - ==== - - Is your password safe? **Safe** will check the password strength for you. - - .. image:: https://travis-ci.org/lepture/safe.png?branch=master - :target: https://travis-ci.org/lepture/safe - - How it works - ------------ - - **Safe** will check if the password has a simple pattern, for instance: - - 1. password is in the order on your QWERT keyboards. - 2. password is simple alphabet step by step, such as: abcd, 1357 - - **Safe** will check if the password is a common used password. - Many thanks to Mark Burnett for the great work on `10000 Top Passwords `_. - - **Safe** will check if the password has mixed number, alphabet, marks. - - Installation - ------------ - - Install Safe with pip:: - - $ pip install Safe - - If pip is not available, try easy_install:: - - $ easy_install Safe - - Usage - ----- - - It's very simple to check the strength of a password:: - - >>> import safe - >>> safe.check(1) - terrible - >>> safe.check('password') - simple - >>> safe.check('is.safe.password') - medium - >>> safe.check('x*V-92Ba') - strong - >>> strength = safe.check('x*V-92Ba') - >>> bool(strength) - True - >>> repr(strength) - 'strong' - >>> str(strength) - 'password is perfect' - >>> strength.valid - True - >>> strength.strength - 'strong' - >>> strength.message - 'password is perfect' - - - Environ Variables - ----------------- - - 1. **PYTHON_SAFE_WORDS_CACHE**: cache words in this file, default is a tempfile - 2. **PYTHON_SAFE_WORDS_FILE**: words vocabulary file, default is the 10k top passwords - - Other Implementations - --------------------- - - 1. **JavaScript**: `lepture/safe.js `_ - -Platform: any -Classifier: Development Status :: 3 - Alpha -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: MacOS -Classifier: Operating System :: POSIX -Classifier: Operating System :: POSIX :: Linux -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: Implementation -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Software Development :: Libraries :: Python Modules diff --git a/Safe.egg-info/SOURCES.txt b/Safe.egg-info/SOURCES.txt deleted file mode 100644 index ecc8a91..0000000 --- a/Safe.egg-info/SOURCES.txt +++ /dev/null @@ -1,12 +0,0 @@ -LICENSE -MANIFEST.in -README.rst -setup.py -Safe.egg-info/PKG-INFO -Safe.egg-info/SOURCES.txt -Safe.egg-info/dependency_links.txt -Safe.egg-info/not-zip-safe -Safe.egg-info/top_level.txt -safe/__init__.py -safe/_compat.py -safe/words.dat \ No newline at end of file diff --git a/Safe.egg-info/dependency_links.txt b/Safe.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/Safe.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Safe.egg-info/not-zip-safe b/Safe.egg-info/not-zip-safe deleted file mode 100644 index 8b13789..0000000 --- a/Safe.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Safe.egg-info/top_level.txt b/Safe.egg-info/top_level.txt deleted file mode 100644 index b7767f6..0000000 --- a/Safe.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -safe diff --git a/dist/Safe-0.5.tar.gz b/dist/Safe-0.5.tar.gz deleted file mode 100644 index ff91c4895148166d4cf3ff55ce14e890cdbf83e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57091 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 UdY+!A=l}Hc-(}>)z5rMP00EX9l>h($ From df32c0fdf01b987bf5c6db7e2847f28c8b46740a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 05:27:59 +0700 Subject: [PATCH 05/13] gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 88ee8d5..34fad26 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,11 @@ +@@ -1,10 +1,8 @@ *.pyc *.pyo +*.egg-info __pycache__ build develop-eggs +dist eggs parts .DS_Store @@ -11,4 +14,4 @@ docs/_build cover/ venv/ .tox -Env +Env \ No newline at end of file From 9ba1bcc4a7cff50792533fd87d0a53d76ad02b78 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 06:03:33 +0700 Subject: [PATCH 06/13] defasafe --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index d792134..734b07c 100644 --- a/setup.py +++ b/setup.py @@ -24,12 +24,12 @@ def fread(filename): setup( - name='Safe', + name='defasafe', version=safe.__version__, author=author, author_email=author_email, url='https://github.com/lepture/safe', - packages=["safe"], + packages=["defasafe"], description="Is your password safe?", zip_safe=False, include_package_data=True, From 147c94e8fda73a2d50a19fe753ce983bedeb71fc Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 06:10:47 +0700 Subject: [PATCH 07/13] safe --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 734b07c..d792134 100644 --- a/setup.py +++ b/setup.py @@ -24,12 +24,12 @@ def fread(filename): setup( - name='defasafe', + name='Safe', version=safe.__version__, author=author, author_email=author_email, url='https://github.com/lepture/safe', - packages=["defasafe"], + packages=["safe"], description="Is your password safe?", zip_safe=False, include_package_data=True, From 33a3f0139834d8b8daf331ffdf10a8424501c41b Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 06:24:35 +0700 Subject: [PATCH 08/13] defa_safe --- {safe => defa_safe}/__init__.py | 0 {safe => defa_safe}/_compat.py | 0 {safe => defa_safe}/words.dat | 0 docs/conf.py | 4 ++-- setup.py | 10 +++++----- test.py | 22 +++++++++++----------- 6 files changed, 18 insertions(+), 18 deletions(-) rename {safe => defa_safe}/__init__.py (100%) rename {safe => defa_safe}/_compat.py (100%) rename {safe => defa_safe}/words.dat (100%) diff --git a/safe/__init__.py b/defa_safe/__init__.py similarity index 100% rename from safe/__init__.py rename to defa_safe/__init__.py diff --git a/safe/_compat.py b/defa_safe/_compat.py similarity index 100% rename from safe/_compat.py rename to defa_safe/_compat.py diff --git a/safe/words.dat b/defa_safe/words.dat similarity index 100% rename from safe/words.dat rename to defa_safe/words.dat diff --git a/docs/conf.py b/docs/conf.py index b3e9ca2..ede2e5e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,8 +49,8 @@ # built documents. # # The short X.Y version. -import safe -version = safe.__version__ +import defa_safe +version = defa_safe.__version__ # The full version, including alpha/beta/rc tags. release = version diff --git a/setup.py b/setup.py index d792134..4343b80 100644 --- a/setup.py +++ b/setup.py @@ -13,9 +13,9 @@ from distutils.core import setup from email.utils import parseaddr -import safe +import defa_safe -author, author_email = parseaddr(safe.__author__) +author, author_email = parseaddr(defa_safe.__author__) def fread(filename): @@ -24,12 +24,12 @@ def fread(filename): setup( - name='Safe', - version=safe.__version__, + name='defa_safe', + version=defa_safe.__version__, author=author, author_email=author_email, url='https://github.com/lepture/safe', - packages=["safe"], + packages=["defa_safe"], description="Is your password safe?", zip_safe=False, include_package_data=True, diff --git a/test.py b/test.py index 109faa4..f15911e 100644 --- a/test.py +++ b/test.py @@ -2,64 +2,64 @@ import os import tempfile -import safe +import defa_safe def test_asdf(): - s = safe.check('dfghjkl', length=7) + s = defa_safe.check('dfghjkl', length=7) assert not s assert 'pattern' in str(s) def test_step(): - s = safe.check('abcdefg', length=7) + s = defa_safe.check('abcdefg', length=7) assert not s assert 'pattern' in s.message def test_common(): - s = safe.check('password') + s = defa_safe.check('password') assert not s assert 'common' in s.message def test_short(): - s = safe.check('1') + s = defa_safe.check('1') assert not s assert 'short' in s.message def test_simple(): - s = safe.check('yhnolku', length=6) + s = defa_safe.check('yhnolku', length=6) assert not s assert 'simple' in s.message def test_medium(): - s = safe.check('yhnolkuT', length=7) + s = defa_safe.check('yhnolkuT', length=7) assert not s assert repr(s) == 'medium' def test_strong(): - s = safe.check('yhnolkuT.') + s = defa_safe.check('yhnolkuT.') assert bool(s) assert 'perfect' in s.message def test_no_cache_on_load_words(): cache_file = _clear_cache_file() - words = safe._load_words(cache_words=False) + words = defa_safe._load_words(cache_words=False) assert words assert not os.path.exists(cache_file) def test_no_cache_on_safe_check(): cache_file = _clear_cache_file() - s = safe.check('yhnolkuT.', cache_words=False) + s = defa_safe.check('yhnolkuT.', cache_words=False) assert not os.path.exists(cache_file) def _clear_cache_file(): - filename = 'safe-%s.words.cache' % safe.__version__ + filename = 'safe-%s.words.cache' % defa_safe.__version__ _cache_file = os.environ.get( 'PYTHON_SAFE_WORDS_CACHE', os.path.join(tempfile.gettempdir(), filename), From 05d95693a646e459ad5fd9d7601812637dd9fe5e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 06:30:34 +0700 Subject: [PATCH 09/13] version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4343b80..d6dc8f6 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ def fread(filename): setup( name='defa_safe', - version=defa_safe.__version__, + version= '0.5', author=author, author_email=author_email, url='https://github.com/lepture/safe', From ea9725c28b4dd123a831b928798f92f9b1954a43 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 07:42:49 +0700 Subject: [PATCH 10/13] setup --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index d6dc8f6..34e0eaf 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,6 @@ def fread(filename): url='https://github.com/lepture/safe', packages=["defa_safe"], description="Is your password safe?", - zip_safe=False, include_package_data=True, platforms='any', long_description=fread('README.rst'), From f235d6cacc4034c3ea5e704838c12e1c93c37626 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 28 Jun 2022 08:27:04 +0700 Subject: [PATCH 11/13] change --- docs/conf.py | 4 ++-- {defa_safe => safe}/__init__.py | 0 {defa_safe => safe}/_compat.py | 0 {defa_safe => safe}/words.dat | 0 setup.py | 13 +++++++------ test.py | 22 +++++++++++----------- 6 files changed, 20 insertions(+), 19 deletions(-) rename {defa_safe => safe}/__init__.py (100%) rename {defa_safe => safe}/_compat.py (100%) rename {defa_safe => safe}/words.dat (100%) diff --git a/docs/conf.py b/docs/conf.py index ede2e5e..b3e9ca2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,8 +49,8 @@ # built documents. # # The short X.Y version. -import defa_safe -version = defa_safe.__version__ +import safe +version = safe.__version__ # The full version, including alpha/beta/rc tags. release = version diff --git a/defa_safe/__init__.py b/safe/__init__.py similarity index 100% rename from defa_safe/__init__.py rename to safe/__init__.py diff --git a/defa_safe/_compat.py b/safe/_compat.py similarity index 100% rename from defa_safe/_compat.py rename to safe/_compat.py diff --git a/defa_safe/words.dat b/safe/words.dat similarity index 100% rename from defa_safe/words.dat rename to safe/words.dat diff --git a/setup.py b/setup.py index 34e0eaf..0d88651 100644 --- a/setup.py +++ b/setup.py @@ -13,9 +13,9 @@ from distutils.core import setup from email.utils import parseaddr -import defa_safe +import safe -author, author_email = parseaddr(defa_safe.__author__) +author, author_email = parseaddr(safe.__author__) def fread(filename): @@ -24,13 +24,14 @@ def fread(filename): setup( - name='defa_safe', - version= '0.5', + name='Safe', + version=safe.__version__, author=author, author_email=author_email, url='https://github.com/lepture/safe', - packages=["defa_safe"], + packages=["safe"], description="Is your password safe?", + zip_safe=False, include_package_data=True, platforms='any', long_description=fread('README.rst'), @@ -59,4 +60,4 @@ def fread(filename): 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Software Development :: Libraries :: Python Modules', ] -) +) \ No newline at end of file diff --git a/test.py b/test.py index f15911e..109faa4 100644 --- a/test.py +++ b/test.py @@ -2,64 +2,64 @@ import os import tempfile -import defa_safe +import safe def test_asdf(): - s = defa_safe.check('dfghjkl', length=7) + s = safe.check('dfghjkl', length=7) assert not s assert 'pattern' in str(s) def test_step(): - s = defa_safe.check('abcdefg', length=7) + s = safe.check('abcdefg', length=7) assert not s assert 'pattern' in s.message def test_common(): - s = defa_safe.check('password') + s = safe.check('password') assert not s assert 'common' in s.message def test_short(): - s = defa_safe.check('1') + s = safe.check('1') assert not s assert 'short' in s.message def test_simple(): - s = defa_safe.check('yhnolku', length=6) + s = safe.check('yhnolku', length=6) assert not s assert 'simple' in s.message def test_medium(): - s = defa_safe.check('yhnolkuT', length=7) + s = safe.check('yhnolkuT', length=7) assert not s assert repr(s) == 'medium' def test_strong(): - s = defa_safe.check('yhnolkuT.') + s = safe.check('yhnolkuT.') assert bool(s) assert 'perfect' in s.message def test_no_cache_on_load_words(): cache_file = _clear_cache_file() - words = defa_safe._load_words(cache_words=False) + words = safe._load_words(cache_words=False) assert words assert not os.path.exists(cache_file) def test_no_cache_on_safe_check(): cache_file = _clear_cache_file() - s = defa_safe.check('yhnolkuT.', cache_words=False) + s = safe.check('yhnolkuT.', cache_words=False) assert not os.path.exists(cache_file) def _clear_cache_file(): - filename = 'safe-%s.words.cache' % defa_safe.__version__ + filename = 'safe-%s.words.cache' % safe.__version__ _cache_file = os.environ.get( 'PYTHON_SAFE_WORDS_CACHE', os.path.join(tempfile.gettempdir(), filename), From c460126056bd6b1875c3abf42c972be301478098 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 1 Jul 2022 05:14:10 +0700 Subject: [PATCH 12/13] dict --- safe/__init__.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/safe/__init__.py b/safe/__init__.py index 40026ca..cb3d804 100644 --- a/safe/__init__.py +++ b/safe/__init__.py @@ -127,6 +127,7 @@ class Strength(object): :param strength: the strength level of the password :param message: a message related to the password """ + def __init__(self, valid, level, strength, message): self.valid = valid self.level = level @@ -164,13 +165,13 @@ def check(raw, length=8, freq=0, min_types=5, min_symbol=3, min_number=3, level= level = STRONG if len(raw) < length: - return Strength(False, 'terrible', 'password is too short') + return Strength(False, TERRIBLE, 'terrible', 'password is too short').__dict__ if is_asdf(raw) or is_by_step(raw): - return Strength(False, 'simple', 'password has a pattern') + return Strength(False, SIMPLE, 'simple', 'password has a pattern').__dict__ if is_common_password(raw, freq=freq, cache_words=cache_words): - return Strength(False, 'simple', 'password is too common') + return Strength(False, SIMPLE, 'simple', 'password is too common').__dict__ types = 0 @@ -213,15 +214,15 @@ def check(raw, length=8, freq=0, min_types=5, min_symbol=3, min_number=3, level= index += 1 if types < 2: - return Strength(level <= SIMPLE, SIMPLE, 'simple', 'password is too simple') + return Strength(level <= SIMPLE, SIMPLE, 'simple', 'password is too simple').__dict__ if types < min_types: return Strength(level <= MEDIUM, MEDIUM, 'medium', - 'password is good enough, but not strong') + 'password is good enough, but not strong').__dict__ - if types > 5: - return Strength(True, VERYSTRONG, 'very strong', 'password is very perfect') - return Strength(True, STRONG, 'strong', 'password is perfect') + if types > 6: + return Strength(True, VERYSTRONG, 'very strong', 'password is very perfect').__dict__ + return Strength(True, STRONG, 'strong', 'password is perfect').__dict__ def safety(raw, length=8, freq=0, min_types=2, level=STRONG): From 63c769fb3248abbe56f68c2673c44a369849f059 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 1 Jul 2022 05:28:20 +0700 Subject: [PATCH 13/13] up minimum very strong --- safe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safe/__init__.py b/safe/__init__.py index cb3d804..8073dd0 100644 --- a/safe/__init__.py +++ b/safe/__init__.py @@ -220,7 +220,7 @@ def check(raw, length=8, freq=0, min_types=5, min_symbol=3, min_number=3, level= return Strength(level <= MEDIUM, MEDIUM, 'medium', 'password is good enough, but not strong').__dict__ - if types > 6: + if types > 7: return Strength(True, VERYSTRONG, 'very strong', 'password is very perfect').__dict__ return Strength(True, STRONG, 'strong', 'password is perfect').__dict__