Skip to main content

zxcvbn-pl

PyPI CI License: MIT

Polskie słowniki dla zxcvbn (port w Pythonie) — pospolite słowa, imiona i nazwiska.

Polish dictionaries for the Python port of zxcvbn — common words, first names and last names. English below.


🇵🇱 Po polsku

Po co

zxcvbn szacuje, ile prób potrzeba do odgadnięcia hasła, rozpoznając w nim słowa ze słowników, powtórzenia, sekwencje, układy klawiatury i daty. Ma jednak tylko angielskie słowniki — polskie słowo to dla niego losowe litery. Przez to hasła łatwe do zgadnięcia dla każdego, kto ma polską listę słów, dostają najwyższą ocenę:

Hasło zxcvbn zxcvbn + zxcvbn-pl
słoneczko123456 4 2
pomidorowa123456 3 2
Katarzyna1985! 3 2
agnieszka.nowak1 4 3
Wojciechowski77 2 1
ptaszek-na-drzewie 4 4
zielonaherbatazcytryna 4 4

Frazy z kilku słów nadal są oceniane wysoko — tak jak zaleca NIST SP 800-63B. Spada ocena haseł z jednego pospolitego słowa, imienia lub nazwiska z dopiskiem. Efekt jest umiarkowany: słowa spoza ok. 50 tys. najczęstszych (np. kaczuszka2000!!) nadal są dla zxcvbn losowymi literami.

Port zxcvbn w JavaScripcie (zxcvbn-ts) ma pakiety językowe; port w Pythonie — nie. Ten pakiet wypełnia tę lukę danymi z @zxcvbn-ts/language-pl.

Instalacja i użycie

pip install zxcvbn-pl
import zxcvbn_pl
from zxcvbn import zxcvbn

zxcvbn_pl.register()  # raz, np. przy starcie aplikacji; wielokrotne wywołanie nic nie psuje

wynik = zxcvbn("słoneczko123456")
wynik["score"]  # 2
[m.get("dictionary_name") for m in wynik["sequence"]]
# ['pl_common_words', 'passwords']

register() dokłada trzy słowniki do globalnego rejestru zxcvbn (zxcvbn.matching.RANKED_DICTIONARIES), więc działa dla każdego kolejnego wywołania zxcvbn() w procesie:

Nazwa (dictionary_name) Zawartość
pl_common_words ok. 52 tys. najczęstszych słów (napisy filmowe)
pl_first_names imiona z rejestru PESEL (≥ 200 osób)
pl_last_names nazwiska z rejestru PESEL (≥ 200 osób)

Każde słowo z polskimi znakami jest też w wariancie bez nich (żółw → zolw) z tą samą pozycją. Pomijane są wpisy krótsze niż 3 znaki.

Słowniki to indeksy marisa-trie czytane przez mmap (~1 MB na dysku, znikomy narzut RAM).

Uwaga o wątkach

zxcvbn trzyma słowniki — także user_inputs przekazane do zxcvbn() — w globalnym słowniku modułu. register() jest bezpieczne, ale jeśli wywołujesz zxcvbn(..., user_inputs=...) z wielu wątków, owiń wywołanie blokadą (to ograniczenie samego zxcvbn, nie tego pakietu).

Dane i licencje

Kod: MIT. Dane pochodzą z @zxcvbn-ts/language-pl i mają własne licencje — szczegóły w NOTICE.md:

  • pospolite słowa: OPUS OpenSubtitles 2024 — ODC-BY (wymaga podania źródła),
  • imiona i nazwiska: rejestr PESEL, dane.gov.pl — CC0 1.0.

Odbudowa słowników (deterministyczna, z weryfikacją sha512 paczki npm):

uv run python scripts/build_dictionaries.py

English

zxcvbn ships with English dictionaries only, so Polish words look like random letters to it and passwords such as słoneczko123456 or Katarzyna1985! get the top score. zxcvbn-pl adds Polish common words, first names and last names (plus diacritics-free variants) to the Python port of zxcvbn:

import zxcvbn_pl
from zxcvbn import zxcvbn

zxcvbn_pl.register()
zxcvbn("słoneczko123456")["score"]  # 2 instead of 4

register() is idempotent and adds three dictionaries (pl_common_words, pl_first_names, pl_last_names) to zxcvbn's global zxcvbn.matching.RANKED_DICTIONARIES. Multi-word passphrases still score high, in line with NIST SP 800-63B.

The data comes from the @zxcvbn-ts/language-pl npm package: common words from OPUS OpenSubtitles 2024 (ODC-BY), first and last names from the Polish PESEL registry published on dane.gov.pl (CC0 1.0). See NOTICE.md. The code is MIT-licensed.

Metadata

Release files for zxcvbn-pl 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zxcvbn-pl 0.1.0
File Size Uploaded Provenance
zxcvbn_pl-0.1.0.tar.gz 539.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for zxcvbn-pl 0.1.0
File Interpreter ABI Platform
zxcvbn_pl-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / zxcvbn_pl-0.1.0.tar.gz

Download URL zxcvbn_pl-0.1.0.tar.gz
Size 539.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e58d1bab812e143f8247044b9818f4eb4a8bf4eb304f9758429b20f2e3c74dab
BLAKE2b-256 checksum
How to use checksums
3035695307ee680efa34e7e6bbc097a0ce68a27d8fa50654e27ec1fa925eb22e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Release files / zxcvbn_pl-0.1.0-py3-none-any.whl

Download URL zxcvbn_pl-0.1.0-py3-none-any.whl
Size 537.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e56ca168a3c267bcaec961d281bc79e3c5632e26656a30fb56a97080c942206e
BLAKE2b-256 checksum
How to use checksums
0f7c7720edaba8b4c2cb4a0ad8e2492d55ecd926788853e0ad7c71e25d395ec7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.0

Security for zxcvbn-pl 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page