{"id":22606323,"url":"https://github.com/mariantaragel/pwcheck","last_synced_at":"2025-09-19T20:35:10.299Z","repository":{"id":88087974,"uuid":"427943396","full_name":"mariantaragel/pwcheck","owner":"mariantaragel","description":"Password strength checker","archived":false,"fork":false,"pushed_at":"2022-05-26T15:35:20.000Z","size":18,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T21:46:41.891Z","etag":null,"topics":["c","project","strings"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mariantaragel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-14T13:58:13.000Z","updated_at":"2022-05-26T15:37:12.000Z","dependencies_parsed_at":"2023-05-18T05:30:21.645Z","dependency_job_id":null,"html_url":"https://github.com/mariantaragel/pwcheck","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mariantaragel/pwcheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariantaragel%2Fpwcheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariantaragel%2Fpwcheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariantaragel%2Fpwcheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariantaragel%2Fpwcheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mariantaragel","download_url":"https://codeload.github.com/mariantaragel/pwcheck/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariantaragel%2Fpwcheck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275998181,"owners_count":25567385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-19T02:00:09.700Z","response_time":108,"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":["c","project","strings"],"created_at":"2024-12-08T14:13:12.718Z","updated_at":"2025-09-19T20:35:10.249Z","avatar_url":"https://github.com/mariantaragel.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Password checker\n\n## Popis projektu\n\nCílem projektu je vytvořit program, který na vstupu dostane sadu hesel a pro každé z nich ověří, jestli heslo splňuje všechna (pevně zadaná) požadovaná pravidla. Ta hesla, která projdou kontrolou, budou vypisována na výstup, ostatní budou zahozena.\n\n## Detailní specifikace\n\nVstupní data (seznam hesel) budou čtena ze standardního vstupu (stdin), výstup (filtrovaný seznam hesel) bude tisknut na standardní výstup (stdout).\n\n### Překlad\n\nProgram překládejte s následujícími argumenty:\n\n```sh\n$ gcc -std=c99 -Wall -Wextra -Werror pwcheck.c -o pwcheck\n``` \n\n### Syntax spuštění\n\nProgram se spouští v následující podobě: (./pwcheck značí umístění a název programu):\n\n\n```sh\n./pwcheck LEVEL PARAM [--stats]\n``` \n\nProgram je spouštěn se dvěma pevně zadanými argumenty LEVEL a PARAM a s jedním volitelným argumentem --stats, případně zadaným na třetí pozici:\n\n\u003cstrong\u003eLEVEL\u003c/strong\u003e - celé číslo v intervalu [1, 4], které určuje požadovanou úroveň bezpečnosti (viz níže)\u003cbr /\u003e\n\u003cstrong\u003ePARAM\u003c/strong\u003e - kladné celé číslo, které určuje dodatečný parametr pravidel (viz níže)\u003cbr /\u003e\n\u003cstrong\u003e--stats\u003c/strong\u003e - pokud je zadané, určuje, zda se na konci programu mají vypsat souhrnné statistiky analyzovaných hesel\n\n### Úrovně bezpečnosti (kontrolovaná pravidla)\n\nJsou definovány celkem 4 úrovně bezpečnosti vyjádřeny pomocí 4 pravidel. Úroveň bezpečnosti určuje, že hesla musí splňovat všechna pravidla na dané a nižší úrovni.\n\nNěkterá pravidla jsou parametrizovatelná celým číslem zadaným pomocí argumentu programu PARAM. V následujícím seznamu je tento parametr označen jako X.\n\nSeznam pravidel:\n\n1. Heslo obsahuje alespoň 1 velké a 1 malé písmeno.\n2. Heslo obsahuje znaky z alespoň X skupin (v případě, že je číslo X větší než 4, myslí se tím všechny skupiny). Uvažované skupiny jsou:\u003cbr /\u003e\n    - malá písmena (a-z)\u003cbr /\u003e\n    - velká písmena (A-Z)\u003cbr /\u003e\n    - čísla (0-9)\u003cbr /\u003e\n    - speciální znaky\u003cbr /\u003e\n3. Heslo neobsahuje sekvenci stejných znaků délky alespoň X.\n4. Heslo neobsahuje dva stejné podřetězce délky alespoň X.\n\n### Statistiky\n\nPokud je zadaný argument programu --stats, program musí na konec výstupu vypsat celkové statistiky ve formátu:\n\n```sh\nStatistika:\nRuznych znaku: NCHARS\nMinimalni delka: MIN\nPrumerna delka: AVG\n``` \n\nNCHARS - počet různých znaků vyskytujících se napříč všemi hesly\u003cbr /\u003e\nMIN - délka nejkratšího hesla (resp. hesel)\u003cbr /\u003e\nAVG - průměrná délka hesla (aritmetický průměr) zaokrouhlená na 1 desetiné místo\n\n## Implementační detaily\n\n### Vstupní data (seznam hesel)\n\nSeznam hesel je programu předán na standardním vstupu (stdin). Každé heslo je zadáno na samostatném řádku a obsahuje pouze ASCII textová data, kromě znaku nového řádku. Maximální délka hesla je 100 znaků, jinak se jedná o nevalidní data. Program musí podporovat neomezený počet hesel na vstupu.\n\n### Výstup programu\n\nProgram na standardní výstup (stdout) vypisuje hesla ze vstupního seznamu, každé na samostatný řádek, která splňují požadovanou úroveň bezpečnosti zadanou jako argument programu LEVEL. Hesla musí být vypsána beze změny a ve stejném pořadí, v jakém se objevila na vstupu.\n\nZa výstupním seznamem hesel pak program volitelně vypisuje statistiku (viz. Statistiky).\n\n### Omezení v projektu\n\nJe zakázané použít následující funkce:\n\n\u003cul\u003e\n    \u003cli\u003evolání funkcí z knihoven string.h a ctype.h - cílem projektu je naučit se implementovat dané funkce ručně\u003c/li\u003e\n    \u003cli\u003evolání z rodiny malloc a free - práce s dynamickou pamětí není v tomto projektu zapotřebí\u003c/li\u003e\n    \u003cli\u003evolání z rodiny fopen, fclose, fscanf, ... - práce se soubory (dočasnými) není v tomto projektu žádoucí\u003c/li\u003e\n    \u003cli\u003evolání funkce exit\u003c/li\u003e\n\u003c/ul\u003e\n\n## Příklady vstupů a výstupů\n\nPomocný soubor se seznamem hesel:\n\n```\n$ cat hesla.txt\n1234567890\nPassword\nHeslo123\nMojevelmidlouhehesloscislem0\nIZP2021:fit@vut.cz\n```\n\nPříklady spuštění:\n\n```\n./pwcheck 1 1 \u003chesla.txt\nPassword\nHeslo123\nMojevelmidlouhehesloscislem0\nIZP2021:fit@vut.cz\n```\n\n```\n./pwcheck 2 3 \u003chesla.txt\nHeslo123\nMojevelmidlouhehesloscislem0\nIZP2021:fit@vut.cz\n```\n\n```\n./pwcheck 3 2 \u003chesla.txt\nHeslo123\nMojevelmidlouhehesloscislem0\nIZP2021:fit@vut.cz\n```\n\n```\n./pwcheck 4 2 \u003chesla.txt\nHeslo123\nIZP2021:fit@vut.cz\n```\n\n```\n./pwcheck 2 4 --stats \u003chesla.txt\nIZP2021:fit@vut.cz\nStatistika:\nRuznych znaku: 36\nMinimalni delka: 8\nPrumerna delka: 14.4\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariantaragel%2Fpwcheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmariantaragel%2Fpwcheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariantaragel%2Fpwcheck/lists"}