{"id":25858797,"url":"https://github.com/quantsareus/pwanalygen_python_word_list_analyzer_generator","last_synced_at":"2026-07-01T15:32:24.839Z","repository":{"id":207386353,"uuid":"719111963","full_name":"quantsareus/pwanalygen_python_word_list_analyzer_generator","owner":"quantsareus","description":"pwanalygen.py is a pw word list sec tool, that includes a sophisticated, data-science based word list analyzer and a compatible word list generator, which also builds the new frequency efficient word list following the analyzed pw construction patterns as a proof-of-concept implementation. ","archived":false,"fork":false,"pushed_at":"2023-11-15T14:24:51.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-06T18:27:15.693Z","etag":null,"topics":["analyzer","approach","data-science","generator","list","offline","pw-break","pw-crack","python","python3","word","wordlist-attack","wordlist-generator","wordlist-processing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quantsareus.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-11-15T13:33:12.000Z","updated_at":"2024-01-05T17:54:17.000Z","dependencies_parsed_at":"2023-11-15T15:20:10.142Z","dependency_job_id":"d8746ea3-3871-4b1f-b8e1-5a34de9ba25a","html_url":"https://github.com/quantsareus/pwanalygen_python_word_list_analyzer_generator","commit_stats":null,"previous_names":["quantsareus/pwanalygen_python_word_list_analyzer_generator"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/quantsareus/pwanalygen_python_word_list_analyzer_generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantsareus%2Fpwanalygen_python_word_list_analyzer_generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantsareus%2Fpwanalygen_python_word_list_analyzer_generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantsareus%2Fpwanalygen_python_word_list_analyzer_generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantsareus%2Fpwanalygen_python_word_list_analyzer_generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quantsareus","download_url":"https://codeload.github.com/quantsareus/pwanalygen_python_word_list_analyzer_generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantsareus%2Fpwanalygen_python_word_list_analyzer_generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35013181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analyzer","approach","data-science","generator","list","offline","pw-break","pw-crack","python","python3","word","wordlist-attack","wordlist-generator","wordlist-processing"],"created_at":"2025-03-01T20:34:32.565Z","updated_at":"2026-07-01T15:32:24.814Z","avatar_url":"https://github.com/quantsareus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nNo install required. Can be executed directly predecessing 'python3  ' or './' in the call.\n\n\nRequirements: \n- Python3 (or higher) \n- numpy\n\n\nusage: pwanalygen.py [-h] [-w WORKDIR] [-i MODE_INTERACTIVE] [--pval PVAL]\n                     [--pval-cpatt PVAL_CPATT] [--pval-let PVAL_LET]\n                     [--pval-num PVAL_NUM] [--pval-spec PVAL_SPEC]\n                     inpwfile outpwfile\n\npwanalygen.py is a pw word list sec tool, that includes a sophisticated, data-\nscience based word list analyzer and a compatible word list generator, which\nalso builds the new frequency efficient word list following the analyzed pw\nconstruction patterns as a proof-of-concept implementation.\n\npositional arguments:\n  inpwfile\n  outpwfile\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -w WORKDIR, --workdir WORKDIR\n  -i MODE_INTERACTIVE, --interactive-mode MODE_INTERACTIVE\n  --pval PVAL\n  --pval-cpatt PVAL_CPATT\n  --pval-let PVAL_LET\n  --pval-num PVAL_NUM\n  --pval-spec PVAL_SPEC\n\nThe program can create A LOT OF NEW PWs based on the analyzed pw construction\npatterns in the original \u003cinpwfile\u003e. It can 'pump up' the original \u003cinpwfile\u003e\nby magnitudes in size, from e.g. 50k pws to e.g. 1M pws, or even more. The\ndata-science and word list based pw break approach is performed in three main\nsteps. In the first step the original pws are split into substrings of lettter\nsymbols, substrings of number symbols and substrings of special symbols. E.g.\nthe pw 'love1982!' gets splitted into 'love', '1982' and '!'. Each original pw\nalso gets transformed into a pw construction pattern, in the example to\n'AAAA1111$', which subsequently gets further aggregated to the condensed pw\nconstruction pattern 'A1$'. (To be interpreted as: A series of letters\nfollowed by a series of numbers followed by a series of special characters.)\nIn the second step the relative cumulated frequencies of the let-, num-, and\nspecial-substrings are computed; also the relative cumulated frequencies of\nthe condensed pw construction patterns. Their high-frequency outcomes below or\nat the critical p-value get selected; the remaining lower frequency outcomes\nare cut off (p-value=0.0 --\u003e select 0% of the outcomes; p-value=1.0 --\u003e select\n100% of the outcomes). In the third step the selected pw element outcomes get\ncombined straight following the selected condensed pw construction patterns\n(called 'cpattprod' inside the program). The final size of the generated\n\u003coutpwfile\u003e is steered by the specified p-value. A high p-value creates a more\nlarge pw list, a low p-value creates a (more) small one (pw list compression\nfunctionality at very low p-values). The more close the p-value gets to 1.0,\nthe more \u003e\u003e over-linear will the generated \u003coutpwfile\u003e increase.\u003c\u003c As far the\n\u003cinpwfile\u003e is not trivial simple structured, high p-vales at some point will\nundenyably result in a 'never' ending pw generation job. Thus, it is highly\nrecommended to start with moderate p-values first (e.g. 0.5) and to switch to\ninteractive mode for higher p-values, in order to find individual p-values by\ncategory, that match the trade-off between the covered pw element outcome\nproportion versus the maximum acceptable generation job time/ maximum\ngenerated file size at best. Therefor view the printouts of the relative\ncumulated frequencies of every pw element category. Finally, sec officers and\nsysadmins can use the generated \u003coutpwfile\u003e to perform a simulated pw try-out\non another unknown pw list, in order to derive a rough estimate of the own pws\nat risk proportion. However, the major information gain of the tool is the\ndeep insight, how pws are structured and how relatively short pws can be\nassembled, that none the less are pretty safe. If there is interest in this\ndirection, further complementary tools for -Cleansing disturbing characters\n'cleansetxtfile.py' -Random sampling mega large (rockyou.txt) pw files\n'samplefile.py' - Simulated pw try-out 'f1prop-in-f2.py' - can be offered.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantsareus%2Fpwanalygen_python_word_list_analyzer_generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquantsareus%2Fpwanalygen_python_word_list_analyzer_generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantsareus%2Fpwanalygen_python_word_list_analyzer_generator/lists"}