{"id":13843004,"url":"https://github.com/lwangenheim/PW_Spy","last_synced_at":"2025-07-11T17:32:50.399Z","repository":{"id":150921192,"uuid":"189523192","full_name":"lwangenheim/PW_Spy","owner":"lwangenheim","description":null,"archived":false,"fork":false,"pushed_at":"2020-08-09T18:32:30.000Z","size":19,"stargazers_count":27,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-21T14:38:13.714Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/lwangenheim.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":"2019-05-31T03:44:07.000Z","updated_at":"2022-10-18T14:21:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"b38d2ff4-e92a-41d2-9f36-6639256cea45","html_url":"https://github.com/lwangenheim/PW_Spy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lwangenheim/PW_Spy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwangenheim%2FPW_Spy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwangenheim%2FPW_Spy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwangenheim%2FPW_Spy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwangenheim%2FPW_Spy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lwangenheim","download_url":"https://codeload.github.com/lwangenheim/PW_Spy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwangenheim%2FPW_Spy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264862579,"owners_count":23674999,"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":[],"created_at":"2024-08-04T17:01:53.119Z","updated_at":"2025-07-11T17:32:50.393Z","avatar_url":"https://github.com/lwangenheim.png","language":"Python","funding_links":[],"categories":["Python (1887)","Python"],"sub_categories":[],"readme":"```\n  ____ __          __   _____\n |  __ \\ \\        / /  / ____|\n | |__) \\ \\  /\\  / /  | (___  _ __  _   _\n |  ___/ \\ \\/  \\/ /    \\___ \\| '_ \\| | | |\n | |      \\  /\\  /     ____) | |_) | |_| |\n |_|       \\/  \\/     |_____/| .__/ \\__, |\n                             | |     __/ |\n                             |_|    |___/\n```\n# PW_Spy\nThis is a tool to help with analysis after a full password audit. To use it simply call ```./pw_analysis.py``` and provide it with the list of hashes attempted and potfile from your engagement.\nSo far it will strip out the basewords from the plaintext passwords in the potfile and count the occurances of those. It will also look for any re-used hashes in the list of hashes attempted. Finally it will create the most common password masks observed from the plaintext passwords to identify patterns in the passwords you were able to crack from the environment.\n\n## Example\n```./pw_spy.py full_list_of_attempted_hashes.txt engagement_potfile.pot```\n\n## Considerations\nIt would be best to send this into an output file:\n\n```./pw_spy.py full_list_of_attempted_hashes.txt engagement_potfile.pot \u003e analysis.txt```\n\nIf you don't want a specific piece of the analysis for some reason simply comment out the function call at the bottom of the file.\n\nThis assumes you used Hashcat and your full hashlist is stripped with one hash per line. The potfile is a raw potfile from Hashcat.\n\n## TODO\n1. I will be adding more pieces as I get to it, this is more for personal use at this point.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flwangenheim%2FPW_Spy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flwangenheim%2FPW_Spy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flwangenheim%2FPW_Spy/lists"}