All Projects → dwolfhub → Zxcvbn Python

dwolfhub / Zxcvbn Python

Licence: mit
Python implementation of Dropbox's realistic password strength estimator

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Zxcvbn Python

Pwned
An easy, Ruby way to use the Pwned Passwords API.
Stars: ✭ 290 (-38.82%)
Mutual labels:  password
Duplicut
Remove duplicates from MASSIVE wordlist, without sorting it (for dictionary-based password cracking)
Stars: ✭ 352 (-25.74%)
Mutual labels:  password
Topasscodeviewcontroller
A modal passcode input and validation view controller for iOS
Stars: ✭ 373 (-21.31%)
Mutual labels:  password
Fuzzdicts
Web Pentesting Fuzz 字典,一个就够了。
Stars: ✭ 4,013 (+746.62%)
Mutual labels:  password
Bewgor
Bull's Eye Wordlist Generator - Does your password rely on predictable patterns of accessible info?
Stars: ✭ 333 (-29.75%)
Mutual labels:  password
Pick
A secure and easy-to-use CLI password manager for macOS and Linux
Stars: ✭ 359 (-24.26%)
Mutual labels:  password
Csvkeychain
Import/export between Apple Keychain.app and plain CSV file.
Stars: ✭ 281 (-40.72%)
Mutual labels:  password
Gopass
getpasswd for Go
Stars: ✭ 424 (-10.55%)
Mutual labels:  password
Buttercup Core
🎩 The mighty NodeJS password vault
Stars: ✭ 340 (-28.27%)
Mutual labels:  password
Chromepass
Chromepass - Hacking Chrome Saved Passwords
Stars: ✭ 364 (-23.21%)
Mutual labels:  password
Freepass
[DEPRECATED] password manager thing
Stars: ✭ 308 (-35.02%)
Mutual labels:  password
Go Password
A Golang library for generating high-entropy random passwords similar to 1Password or LastPass.
Stars: ✭ 317 (-33.12%)
Mutual labels:  password
K8tools
K8工具合集(内网渗透/提权工具/远程溢出/漏洞利用/扫描工具/密码破解/免杀工具/Exploit/APT/0day/Shellcode/Payload/priviledge/BypassUAC/OverFlow/WebShell/PenTest) Web GetShell Exploit(Struts2/Zimbra/Weblogic/Tomcat/Apache/Jboss/DotNetNuke/zabbix)
Stars: ✭ 4,173 (+780.38%)
Mutual labels:  password
Laravel Welcome Notification
Send a welcome notification to new users
Stars: ✭ 299 (-36.92%)
Mutual labels:  password
Pass Import
A pass extension for importing data from most of the existing password manager.
Stars: ✭ 412 (-13.08%)
Mutual labels:  password
Passwordtextfield
A custom TextField with a switchable icon which shows or hides the password and enforce good password policies
Stars: ✭ 281 (-40.72%)
Mutual labels:  password
Kaonashi
Wordlist, rules and masks from Kaonashi project (RootedCON 2019)
Stars: ✭ 353 (-25.53%)
Mutual labels:  password
Passwordedittext
A custom EditText with a switchable icon which shows or hides the password
Stars: ✭ 430 (-9.28%)
Mutual labels:  password
Hsimp
How Secure is My Password for your own website
Stars: ✭ 423 (-10.76%)
Mutual labels:  password
Passmaker
可以自定义规则的密码字典生成器,支持图形界面 A password-generator that base on the rules that you specified
Stars: ✭ 363 (-23.42%)
Mutual labels:  password

|Build Status|

zxcvbn

A realistic password strength estimator.

This is a Python implementation of the library created by the team at Dropbox. The original library, written for JavaScript, can be found here <https://github.com/dropbox/zxcvbn>__.

While there may be other Python ports available, this one is the most up to date and is recommended by the original developers of zxcvbn at this time.

Features

  • Tested in Python versions 2.7, 3.6-3.9
  • Accepts user data to be added to the dictionaries that are tested against (name, birthdate, etc)
  • Gives a score to the password, from 0 (terrible) to 4 (great)
  • Provides feedback on the password and ways to improve it
  • Returns time estimates on how long it would take to guess the password in different situations

Installation

Install the package using pip: pip install zxcvbn

Usage

Pass a password as the first parameter, and a list of user-provided inputs as the user_inputs parameter (optional).

.. code:: python

from zxcvbn import zxcvbn

results = zxcvbn('JohnSmith123', user_inputs=['John', 'Smith'])

print(results)

Output:

::

{
    'password': 'JohnSmith123',
    'score': 2,
    'guesses': 2567800,
    'guesses_log10': 6.409561194521849,
    'calc_time': datetime.timedelta(0, 0, 5204)
    'feedback': {
        'warning': '',
        'suggestions': [
            'Add another word or two. Uncommon words are better.',
            "Capitalization doesn't help very much"
        ]
    },
    'crack_times_display': {
        'offline_fast_hashing_1e10_per_second': 'less than a second'
        'offline_slow_hashing_1e4_per_second': '4 minutes',
        'online_no_throttling_10_per_second': '3 days',
        'online_throttling_100_per_hour': '3 years',
    },
    'crack_times_seconds': {
        'offline_fast_hashing_1e10_per_second': 0.00025678,
        'offline_slow_hashing_1e4_per_second': 256.78
        'online_no_throttling_10_per_second': 256780.0,
        'online_throttling_100_per_hour': 92440800.0,
    },
    'sequence': [{
        'matched_word': 'john',
        'rank': 2,
        'pattern': 'dictionary',
        'reversed': False,
        'token': 'John',
        'l33t': False,
        'uppercase_variations': 2,
        'i': 0,
        'guesses': 50,
        'l33t_variations': 1,
        'dictionary_name': 'male_names',
        'base_guesses': 2,
        'guesses_log10': 1.6989700043360185,
        'j': 3
    }, {
        'matched_word': 'smith123',
        'rank': 12789,
        'pattern': 'dictionary',
        'reversed': False,
        'token': 'Smith123',
        'l33t': False,
        'uppercase_variations': 2,
        'i': 4,
        'guesses': 25578,
        'l33t_variations': 1,
        'dictionary_name': 'passwords',
        'base_guesses': 12789,
        'guesses_log10': 4.407866583030775,
        'j': 11
    }],
}

Custom Ranked Dictionaries

In order to support more languages or just add password dictionaries of your own, there is a helper function you may use.

.. code:: python

from zxcvbn.matching import add_frequency_lists

add_frequency_lists({
    'my_list': ['foo', 'bar'],
    'another_list': ['baz']
})

These lists will be added to the current ones, but you can also overwrite the current ones if you wish. The lists you add should be in order of how common the word is used with the most common words appearing first.

CLI


You an also use zxcvbn from the command line::

    echo 'password' | zxcvbn --user-input <user-input> | jq

You can also execute the zxcvbn module::

    echo 'password' | python -m zxcvbn --user-input <user-input> | jq


Contribute
----------

- Report an Issue: https://github.com/dwolfhub/zxcvbn-python/issues
- Submit a Pull Request: https://github.com/dwolfhub/zxcvbn-python/pulls

License
-------

The project is licensed under the MIT license.


.. |Build Status| image:: https://travis-ci.org/dwolfhub/zxcvbn-python.svg?branch=master
   :target: https://travis-ci.org/dwolfhub/zxcvbn-python
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].