{"id":15038820,"url":"https://github.com/t3l3machus/psudohash","last_synced_at":"2025-05-16T05:00:19.531Z","repository":{"id":41658373,"uuid":"508794895","full_name":"t3l3machus/psudohash","owner":"t3l3machus","description":"Generates millions of keyword-based password mutations in seconds.","archived":false,"fork":false,"pushed_at":"2024-08-10T06:35:12.000Z","size":511,"stargazers_count":1279,"open_issues_count":7,"forks_count":166,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-04-08T14:12:27.452Z","etag":null,"topics":["brute-force-attacks","bruteforce","hacking","hacking-tool","hash-cracking","open-source","password-generator","penetration-testing","pentesting","security-tools"],"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/t3l3machus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-06-29T17:56:40.000Z","updated_at":"2025-04-08T06:46:50.000Z","dependencies_parsed_at":"2024-08-10T08:00:56.837Z","dependency_job_id":"74715a37-954d-4627-85bf-e90cd58d2a10","html_url":"https://github.com/t3l3machus/psudohash","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t3l3machus%2Fpsudohash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t3l3machus%2Fpsudohash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t3l3machus%2Fpsudohash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t3l3machus%2Fpsudohash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/t3l3machus","download_url":"https://codeload.github.com/t3l3machus/psudohash/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471028,"owners_count":22076582,"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":["brute-force-attacks","bruteforce","hacking","hacking-tool","hash-cracking","open-source","password-generator","penetration-testing","pentesting","security-tools"],"created_at":"2024-09-24T20:40:21.258Z","updated_at":"2025-05-16T05:00:19.170Z","avatar_url":"https://github.com/t3l3machus.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# psudohash\n[![Python 3.x](https://img.shields.io/badge/python-3.x-yellow.svg)](https://www.python.org/) [![License](https://img.shields.io/badge/license-MIT-red.svg)](https://github.com/t3l3machus/psudohash/blob/main/LICENSE) \n\u003cimg src=\"https://img.shields.io/badge/Maintained%3F-Yes-23a82c\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Developed%20on-kali%20linux-blueviolet\"\u003e  \n\n## Purpose\nPsudohash is a password list generator for orchestrating brute force attacks and cracking hashes. It imitates certain password creation patterns commonly used by humans, like substituting a word's letters with symbols or numbers (leet), using char-case variations, adding a common padding before or after the main passphrase and more. It is keyword-based and highly customizable. 🎥 -\u003e [Video Presentation](https://www.youtube.com/watch?v=oj3zjApOOGc)\n\n## Pentesting Corporate Environments\nSystem administrators and other employees often use a mutated version of the Company's name to set passwords (e.g. Am@z0n_2022). This is commonly the case for network devices (Wi-Fi access points, switches, routers, etc), application or even domain accounts. With the most basic options, psudohash can generate a wordlist with all possible mutations of one or multiple keywords, based on common character substitution patterns (customizable), case variations, strings commonly used as padding and more. Take a look at the following example:  \n\n![image](https://github.com/t3l3machus/psudohash/assets/75489922/4a25ef08-8b21-4798-8b1a-97bdbd2dc2e3)\n\n\n## Customization\n### Leet Character Substitution\nThe script implements the following character substitution schema. You can add/modify character substitution mappings by editing the `transformations` list in `psudohash.py` and following the data structure presented below (default):\n```\ntransformations = [\n\t{'a' : ['@', '4']},\n\t{'b' : '8'},\n\t{'e' : '3'},\n\t{'g' : ['9', '6']},\n\t{'i' : ['1', '!']},\n\t{'o' : '0'},\n\t{'s' : ['$', '5']},\n\t{'t' : '7'}\n]\n```  \n### Common Padding Values\nWhen setting passwords, I believe it's pretty standard to add a sequence of characters before and/or after the main passphrase to make it \"stronger\". For example, one may set a password \"dragon\" and add a value like \"!!!\" or \"!@#\" at the end, resulting in \"dragon!!!\", \"dragon!@#\", etc. Psudohash reads such values from `common_padding_values.txt` and uses them to mutate the provided keywords by appending them before (`-cpb`) or after (`-cpa`) each generated keyword variation. You can modify it as you see fit.\n\n### Year Values\nWhen appending a year value to a mutated keyword, psudohash will do so by utilizing various seperators. by default, it will use the following seperators which you can modify by editing the `year_seperators` list:  \n```\nyear_seperators = ['', '_', '-', '@']\n```\nFor example, if the given keyword is \"amazon\" and option `-y 2023` was used, the output will include \"amazon2023\", \"amazon_2023\", \"amazon-2023\", \"amazon@2023\", \"amazon23\", \"amazon_23\", \"amazon-23\", \"amazon@23\".\n\n## Installation\nNo special requirements. Just clone the repo and make the script executable:\n```\ngit clone https://github.com/t3l3machus/psudohash\ncd ./psudohash\nchmod +x psudohash.py\n```  \n## Usage\n```\n./psudohash.py [-h] -w WORDS [-an LEVEL] [-nl LIMIT] [-y YEARS] [-ap VALUES] [-cpb] [-cpa] [-cpo] [-o FILENAME] [-q]\n```\nThe help dialog [ -h, --help ] includes usage details and examples.\n## Usage Tips\n1. Combining options `--years` and `--append-numbering` with a `--numbering-limit` ≥ last two digits of any year input, will most likely produce duplicate words because of the mutation patterns implemented by the tool. \n2. If you add custom padding values and/or modify the predefined common padding values in the source code, in combination with multiple optional parameters, there is a small chance of duplicate words occurring. psudohash includes word filtering controls but for speed's sake, those are limited.\n\n## Individuals\nWhen it comes to people, i think we all have (more or less) set passwords using a mutation of one or more words that mean something to us e.g., our name or wife/kid/pet/band names, sticking the year we were born at the end or maybe a super secure padding like \"!@#\". Well, guess what?\n\n![usage_example_png](https://raw.github.com/t3l3machus/psudohash/master/Screenshots/multiple-words.png)\n\n\n## Future \nI'm gathering information regarding commonly used password creation patterns to enhance the tool's capabilities.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft3l3machus%2Fpsudohash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ft3l3machus%2Fpsudohash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft3l3machus%2Fpsudohash/lists"}