{ "info": { "author": "Nguyen Thai Duong", "author_email": "duongnt.bk@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# passpwnedcheck Package\n\nThis is a simple wrapper for Pwned Passwords API. It uses k-anonymity to securely check if your password has been leaked without actually sending your password to Pwned Passwords API.\n\n## Install\n\nYou can install passpwnedcheck using pip, just run the following command in the command line\n\n C:\\> pip install passpwnedcheck\n\n## Usage\n\n from passpwnedcheck.pass_checker import PassChecker\n\n pass_checker = PassChecker()\n\n password = 'Password'\n is_leaked, count = pass_checker.is_password_compromised(password)\n\n if is_leaked:\n print('Your password has been leaked')\n else:\n print('Your password has not been leaked (yet)')\n\nAlternatively, you can run pass_checker.py script from command line, make sure to install the package via pip first\n\n C:\\> python pass_checker.py password\n Your password has been compromised xxxxxxx time(s)\n\n## About k-anonymity\n\nWe utilize a mathematical property known as k-Anonymity and applying it to password hashes in the form of range queries. As such, the Pwned Passwords API service never gains enough information about a non-breached password hash to be able to breach it later.\n\nSuppose a user enters the password test into a login form and the service they are logging into is programmed to validate whether their password is in a database of leaked password hashes. Firstly the client will generate a hash (in our example using SHA-1) of a94a8fe5ccb19ba61c4c0873d391e987982fbbd3. The client will then truncate the hash to a predetermined number of characters (for example, 5) resulting in a Hash Prefix of a94a8. This Hash Prefix is then used to query the remote database for all hashes starting with that prefix. The entire hash list is then downloaded and each downloaded hash is then compared to see if any match the locally generated hash. If so, the password is known to have been leaked.\n\nPlease see the following link for more information\n\nhttps://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/\n\n## License\n\nMIT License\n\nhttps://opensource.org/licenses/MIT\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/duongntbk/passpwnedcheck", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "passpwnedcheck", "package_url": "https://pypi.org/project/passpwnedcheck/", "platform": "", "project_url": "https://pypi.org/project/passpwnedcheck/", "project_urls": { "Homepage": "https://github.com/duongntbk/passpwnedcheck" }, "release_url": "https://pypi.org/project/passpwnedcheck/1.0.1/", "requires_dist": [ "requests (>=2.19.1)" ], "requires_python": "", "summary": "Test for pwned password", "version": "1.0.1" }, "last_serial": 4588452, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "dbbf01ef421e35f18aeeaaf1f012ae90", "sha256": "6fac2bf444016b1812ce40ffe329ff233638aacf60f3c839ae3a08a7c366c45d" }, "downloads": -1, "filename": "passpwnedcheck-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dbbf01ef421e35f18aeeaaf1f012ae90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5451, "upload_time": "2018-12-12T02:41:53", "url": "https://files.pythonhosted.org/packages/0b/fd/8f05f5c39da04dec60a7d252747231551ba65526bfdd944676c2a411ebf8/passpwnedcheck-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e2390fe0e4e4253d7049d8c006109f0", "sha256": "9a9469d332772736282c5e38715527c9db65039e6f75d4879b29922528cf7e6f" }, "downloads": -1, "filename": "passpwnedcheck-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2e2390fe0e4e4253d7049d8c006109f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3831, "upload_time": "2018-12-12T02:41:55", "url": "https://files.pythonhosted.org/packages/d6/96/709bc37f3c33246c560d98f420d9883adc3b02cd592864460073875bdb12/passpwnedcheck-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c09d7d71afa259249fb509ee2d79c1dd", "sha256": "20be8ac2405e46cf621672c330d2ed63ebff6c92946f939d04dfe36051092cb8" }, "downloads": -1, "filename": "passpwnedcheck-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c09d7d71afa259249fb509ee2d79c1dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5448, "upload_time": "2018-12-12T02:54:56", "url": "https://files.pythonhosted.org/packages/ab/a0/d4fddd621cf1c203636f73fc2b92c5aa8635305e938b0a10f529c8f92c9a/passpwnedcheck-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7df4fd07be7cc5159ad3c52795e96da", "sha256": "e2cd979258b7ba36176584e5e92aaca3c7f9f13fdaeaf1953622459d94bc8614" }, "downloads": -1, "filename": "passpwnedcheck-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e7df4fd07be7cc5159ad3c52795e96da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3832, "upload_time": "2018-12-12T02:54:57", "url": "https://files.pythonhosted.org/packages/15/7c/98bea5ac83124e94fff8d2003a4781d6e965642c9128408f2bd807681644/passpwnedcheck-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c09d7d71afa259249fb509ee2d79c1dd", "sha256": "20be8ac2405e46cf621672c330d2ed63ebff6c92946f939d04dfe36051092cb8" }, "downloads": -1, "filename": "passpwnedcheck-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c09d7d71afa259249fb509ee2d79c1dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5448, "upload_time": "2018-12-12T02:54:56", "url": "https://files.pythonhosted.org/packages/ab/a0/d4fddd621cf1c203636f73fc2b92c5aa8635305e938b0a10f529c8f92c9a/passpwnedcheck-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7df4fd07be7cc5159ad3c52795e96da", "sha256": "e2cd979258b7ba36176584e5e92aaca3c7f9f13fdaeaf1953622459d94bc8614" }, "downloads": -1, "filename": "passpwnedcheck-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e7df4fd07be7cc5159ad3c52795e96da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3832, "upload_time": "2018-12-12T02:54:57", "url": "https://files.pythonhosted.org/packages/15/7c/98bea5ac83124e94fff8d2003a4781d6e965642c9128408f2bd807681644/passpwnedcheck-1.0.1.tar.gz" } ] }