{"id":28396127,"url":"https://github.com/orange-cyberdefense/graphcat","last_synced_at":"2025-07-02T03:05:24.340Z","repository":{"id":107085231,"uuid":"603055921","full_name":"Orange-Cyberdefense/graphcat","owner":"Orange-Cyberdefense","description":"Generate graphs and charts based on password cracking result","archived":false,"fork":false,"pushed_at":"2023-02-17T14:37:34.000Z","size":267,"stargazers_count":161,"open_issues_count":3,"forks_count":14,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-01T08:12:25.942Z","etag":null,"topics":["cracking","hashcat","matplotlib","password"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Orange-Cyberdefense.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-02-17T14:26:22.000Z","updated_at":"2025-04-26T20:29:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd9487af-a964-49b9-b9cd-267e8626823e","html_url":"https://github.com/Orange-Cyberdefense/graphcat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Orange-Cyberdefense/graphcat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-Cyberdefense%2Fgraphcat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-Cyberdefense%2Fgraphcat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-Cyberdefense%2Fgraphcat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-Cyberdefense%2Fgraphcat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Orange-Cyberdefense","download_url":"https://codeload.github.com/Orange-Cyberdefense/graphcat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-Cyberdefense%2Fgraphcat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263066555,"owners_count":23408387,"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","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":["cracking","hashcat","matplotlib","password"],"created_at":"2025-05-31T21:36:58.414Z","updated_at":"2025-07-02T03:05:24.328Z","avatar_url":"https://github.com/Orange-Cyberdefense.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# graphcat.py\n\nSimple script to generate graphs and charts on hashcat (and john) potfile and ntds.\n\n## Table of Content\n\n- [graphcat.py](#graphcatpy)\n  - [Table of Content](#table-of-content)\n  - [Install](#install)\n  - [Helper](#helper)\n  - [Usage](#usage)\n  - [Format](#formats)\n  - [Charts example](#charts-example)\n\n## Install\n\n```text\ngit clone https://github.com/Orange-Cyberdefense/graphcat\ncd graphcat\npip install .\n```\n\n## Helper\n\n```text\n$ graphcat.py -h\nusage: graphcat.py [-h] -potfile hashcat.potfile -hashfile hashfile.txt [-john] [-format FORMAT] [-export-charts] [-output-dir OUTPUT_DIR] [-debug]\n\nPassword Cracking Graph Reporting\n\noptions:\n  -h, --help            show this help message and exit\n  -potfile hashcat.potfile\n                        Hashcat Potfile\n  -hashfile hashfile.txt\n                        File containing hashes (one per line)\n  -john                 John potfile\n  -format FORMAT        hashfile format (default 3): 1 for hash; 2 for username:hash; 3 for secretsdump (username:uid:lm:ntlm)\n  -export-charts        Output also charts in png\n  -output-dir OUTPUT_DIR\n                        Output directory\n  -debug                Turn DEBUG output ON\n```\n\n## Usage\n\nGraphcat just need a potfile with `-potfile` (default is hashcat, but you can use `-john` to submit a john potfile) and a hashfile with `-hashfile`. The hashfile should be in a specific format from the [3 availables formats](#formats) with `-format` flag. Default is **Secretsdump**.\n\nThe tool will generate a report with multiple password cracking charts. You can get charts in png with the `-export-charts` flag.\n\n```text\n$ graphcat.py -hashfile entreprise.local.ntds -potfile hashcat.pot\n[-] Parsing potfile\n[-] 164 entries in potfile\n[-] Parsing hashfile\n[-] 1600 entries in hashfile\n[-] Generating graphs...\n[-] Generating report...\n[-] Report available at graphcat_1672941324.pdf\n```\n\n### Formats\n\n1: Only Hash\n\n```text\naad3b435b51404eeaad3b435b51404ee\naad3b435b51404eeaad3b435b51404ee\naad3b435b51404eeaad3b435b51404ee\n```\n\n2: Username + Hash\n\n```text\ntest1:aad3b435b51404eeaad3b435b51404ee\ntest2:aad3b435b51404eeaad3b435b51404ee\ntest3:aad3b435b51404eeaad3b435b51404ee\n```\n\n3: Secretsdump\n\n```text\nwaza.local\\test1:4268:aad3b435b51404eeaad3b435b51404ee:aad3b435b51404eeaad3b435b51404ee:::\nwaza.local\\test2:4269:aad3b435b51404eeaad3b435b51404ee:aad3b435b51404eeaad3b435b51404ee:::\nwaza.local\\test3:4270:aad3b435b51404eeaad3b435b51404ee:aad3b435b51404eeaad3b435b51404ee:::\n```\n\nIf a hash occurs more than once in the hash file, it will be counted that many times.\n\nMoreover, if you submit secretsdump with password history (`-history` in secretsdump command), it will analyze similarity in password history\n\n## Charts example\n\n\u003cimg title=\"Cracked\" src=\"./assets/cracked.png\"\u003e\n\u003cimg title=\"Format repartition\" src=\"./assets/format.png\"\u003e\n\u003cimg title=\"Length repartition\" src=\"./assets/length.png\"\u003e\n\u003cimg title=\"Top10 most cracked\" src=\"./assets/most.png\"\u003e\n\u003cimg title=\"Top10 basewords\" src=\"./assets/basewords.png\"\u003e\n\u003cimg title=\"Similarity in password history\" src=\"./assets/history.png\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-cyberdefense%2Fgraphcat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forange-cyberdefense%2Fgraphcat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-cyberdefense%2Fgraphcat/lists"}