{"id":13539286,"url":"https://github.com/soxoj/username-generation-guide","last_synced_at":"2026-03-15T02:41:17.321Z","repository":{"id":44964748,"uuid":"435269115","full_name":"soxoj/username-generation-guide","owner":"soxoj","description":"A definitive guide to generating usernames for OSINT purposes","archived":false,"fork":false,"pushed_at":"2024-06-08T17:12:44.000Z","size":286,"stargazers_count":157,"open_issues_count":0,"forks_count":10,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-19T23:59:24.462Z","etag":null,"topics":["generator","generators","guide","osint","pentesting","permutations","permutations-and-combinations","socmint","transformations","username-checker","username-generator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soxoj.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,"publiccode":null,"codemeta":null}},"created_at":"2021-12-05T20:16:58.000Z","updated_at":"2025-01-19T20:17:28.000Z","dependencies_parsed_at":"2024-01-16T15:41:21.807Z","dependency_job_id":"b55becae-e763-497f-b640-a9f51dc3dbf6","html_url":"https://github.com/soxoj/username-generation-guide","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soxoj%2Fusername-generation-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soxoj%2Fusername-generation-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soxoj%2Fusername-generation-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soxoj%2Fusername-generation-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soxoj","download_url":"https://codeload.github.com/soxoj/username-generation-guide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235600043,"owners_count":19016195,"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":["generator","generators","guide","osint","pentesting","permutations","permutations-and-combinations","socmint","transformations","username-checker","username-generator"],"created_at":"2024-08-01T09:01:22.887Z","updated_at":"2025-10-07T07:30:37.444Z","avatar_url":"https://github.com/soxoj.png","language":"Python","readme":"# OSINT Username generation guide\n\nA definitive guide to generating usernames for OSINT/SOCMINT/Pentesting purposes.\n\n![Logo](./pictures/logo.png)\n\n## Table of Contents\n- [Start](#start)\n- [Combining Primary Info](#combining-primary-info)\n  - [Addition of Personal Information](#addition-of-personal-information)\n- [Primary Info Mining](#primary-info-mining)\n- [Username Transformations](#username-transformations)\n  - [Addition of Mail Domain](#addition-of-mail-domain)\n- [Covered SOWEL Techniques](#covered-sowel-techniques)\n- [Other](#other)\n  \n## Start\n\nLet's identify your goals.\n\nIf I understand correctly, **you have some information about people**, and you want to **get a list of usernames** (nicknames, just names), that may be used to search for those people.\n\nAm I right? So, you're in the right place.\n\nBelow, you can find information on how to gather clues for a new search based on the data you already have, as well as how to automate the process and which tools to use.\n\n### What do you have?\n\nIf you only have some information as a first name, a last name, a birthday (and, maybe some extra info), you should take a look at the section [“Combining primary info\"](#combining-primary-info).\n\nDo you need extra help to extend the number of likely usernames? For learning methods to get variants of first names and so on, check section [“Primary info mining”](#primary-info-mining).\n\nIf you have a username and want to guess similar usernames, jump to the [“Username transformations”](#username-transformations) section.\n\n**Important!** Clone this repository with `git` or [download it](https://github.com/soxoj/username-generation-guide/archive/refs/heads/main.zip) to use the Python scripts mentioned below.\n\n## Combining primary info\n\nUsernames/logins commonly consist of a combination of a first name, a last name, and, a little less often, a middle name (patronymic). Only the first letters can be left, and some characters can separate parts (`_`, `.` and so on).\n\nOf course, there can be many such combinations, so automation tools are needed. A good example is a very useful interactive [Google spreadsheet](https://docs.google.com/spreadsheets/d/17URMtNmXfEZEW9oUL_taLpGaqTDcMkA79J8TRw4xnz8/edit#gid=0) for email permutations from Rob Ousbey, from Distilled.net.\n\n\u003cimg width=\"1130\" alt=\"image\" src=\"https://user-images.githubusercontent.com/31013580/154574939-a3838274-bbc3-448f-9ee6-b734c86ed116.png\"\u003e\n\nHere is an example of Email Permutator usage for `rob ousbey`:\n\n```sh\nrob@distilled.net\nousbey@distilled.net\nrobousbey@distilled.net\nrob.ousbey@distilled.net\nrousbey@distilled.net\n...\n```\n\nA very useful service [NAMINT](https://seintpl.github.io/NAMINT/) offers various links for combinations of first, last and middle name (nickname):\n- search engines (including photo search with Yandex)\n- possible login patterns\n- most popular social platforms search and supposed profile links\n- Gravatars for logins at common email providers (great feature 🔥)\n\n\u003cimg width=\"1211\" alt=\"image\" src=\"https://user-images.githubusercontent.com/31013580/154574758-0af0f9a2-89ad-4cfe-b21e-4c1bedac2557.png\"\u003e\n\n\nAlso, you can find it convenient to use [Email Permutator](http://metricsparrow.com/toolkit/email-permutator/) from Metric Sparrow Toolkit or [analyzeid permutator](https://analyzeid.com/email-permutator/) with batch processing support.\n\nFor fans of a console, there are some specialized tools:\n\n- Script [python-email-permutator](https://github.com/Satys/python-email-permutator) based on spreadsheet mentioned above.\n\n- [Logins generator](https://github.com/c0rv4x/logins-generator) supporting flexible ways to combine first, last and middle names.\n\n- [emailGuesser](https://github.com/WhiteHatInspector/emailGuesser) is a customizable permutator with the support of checks if an address is valid in Skype and in breach databases. \n\nLooking ahead, I will tell you that from lists of names you can [quickly make](#addition-of-mail-domain) a list of emails.\n\n### Addition of personal information\n\nIf you have any other additional information, you can significantly expand the number of candidates for usernames. It can be a year of birth, city, country, profession, and... literally anything.\n\nWhat can be used in this case?\n\n- My own script based on ProtOSINT combination methods:\n\n```sh\n$ python3 generate_by_real_info.py\nFirst name: john\nLast name: smith\nYear of birth: 1980\nUsername (optional):\nZip code (optional):\njohnsmith1980\nsmith\njohnsmith80\njsmith1980\nsmithjohn\n...\n```\n\n- Great alias generator mode of [OSRFramebork](https://github.com/i3visio/osrframework):\n\n```sh\n$ osrf alias_generator\nInsert a name:                     john\nInsert the first surname:          smith\nInsert the second surname:\nInsert a year (e. g.: birthyear):  1980\nInsert a city:\nInsert a country:\n\nAdditional transformations to be added\n--------------------------------------\n\nExtra words to add (',' separated):\n\nInput data:\n-----------\n\nName:               john\nFirst Surname:      smith\nYear:               1980\n\nGenerated nicks:\n\n[\n  \"j.smith\",\n  \"j.smith.1980\",\n  \"j.smith.80\",\n  \"j_smith\",\n...\nUp to 41 nicks generated.\n\nWriting the results onto the file:\n\t./output.txt\n```\n\n[↑ Back to the start](#table-of-contents)\n\n## Primary info mining\n\nIt can be very important to check all the variants of non-English usernames. For example, a person with the common name *Aleksandr* may have a passport with the name `Alexandr` (letter `x`) and a working login starting with `alexsandr` (letters `xs`) because of the different transliteration rules.\n\nThis is a source of variability for us, so let's use it.\n\n- [BabelStrike](https://github.com/t3l3machus/BabelStrike) - a very powerful tool for normalization and generation of possible usernames out of a full names list. It supports romanization for Greek, Hindi, Spanish, French and Polish.\n\n![BabelStrike usage example](https://user-images.githubusercontent.com/75489922/213708062-3d992884-5858-4bb3-92d3-42510e8ba567.png)\n\n- [BehindTheName](https://www.behindthename.com/name/john) - excellent site about names. There are common name variants, diminutives (very useful for personal logins), and other languages alternatives.\n\n!['Aleksandr' name variants](./pictures/behindthename.png)\n\nYou can use a simple script from this repo to scrape such data:\n```sh\n$ python3 behind_the_names.py john diminutives\nJohnie\nJohnnie\nJohnny\n```\n\n- [WeRelate](https://www.werelate.org/wiki/Special:Names) - Variant names project, a comprehensive database of name variants with the ability to search. Gives much more results than BehindTheNames, but there are also many irrelevant results. Also, see [GitHub repo](https://github.com/tfmorris/Names) with project data.\n\n[↑ Back to the start](#table-of-contents)\n\n## Username transformations\n\nWhen you sign up on the site it may turn out that your username is taken. Then you use a variant of a name - with characters replacement or additions.\n\nThus, making assumptions about the transformations and knowing the original name, you can check \"neighbouring\" accounts (for example, with [maigret](https://github.com/soxoj/maigret)).\n\nI propose for this my own simple tool that allows you to make transformations by rules.\n\n```sh\n$ python3 transform_username.py --username soxoj rules/printable-leetspeak.rule\nsoxoj\ns0xoj\n5ox0j\n50xoj\n...\n```\n\nRules for transformation are located in the directory `rules` and consist of the following:\n\n- `printable-leetspeak.rule` - common leetspeak transformations such as `e =\u003e 3`, `a =\u003e 4`, etc.\n- `printable-leetspeak-two-ways.rule` - the same conversions from letters to numbers, but also vice versa\n- `impersonation.rule` - common mutations used by scammers-impersonators such as `l =\u003e I`, `O =\u003e 0`, etc.\n- `additions.rule` - common additions to the username: underscores and numbers\n- `toggle-letter-case.rule` - changing case of letters, what is needed not so often, but maybe useful\n- `add_email.rule` - custom rule to add mail domain after usernames\n\nYou can use a file with a list of usernames:\n\n```sh\n$ cat usernames.txt\njohn\njack\n\n$ python3 transform_username.py rules/impersonation.rule --username-list soxoj\njack\niack\njohn\niohn\n```\n\nAnd even use a pipe to use the output of other tools and itself, combining transformations:\n```sh\n$ python3 transform_username.py rules/printable-leetspeak.rule --username soxoj | python3 transform_username.py rules/impersonation.rule  -I\ns0xOj\nsOx0j\n5OxOi\nsoxOj\nsox0i\n...\n```\n\n### Addition of mail domain\n\nYou can use `add_email.rule` and easily edit it to add needed mail domains to check emails in tools such as [mailcat](https://github.com/sharsil/mailcat), [holehe](https://github.com/megadose/holehe), or [GHunt](https://github.com/mxrch/GHunt).\n\n```sh\n$ python3 transform_username.py rules/printable-leetspeak.rule --username soxoj | python3 transform_username.py rules/add_email.rule --remove-known -I\nsoxoj@protonmail.com\nsox0j@protonmail.com\ns0x0j@protonmail.com\n50x0j@protonmail.com\n...\n```\n\n[↑ Back to the start](#table-of-contents)\n\n## Covered SOWEL techniques\n\n- [SOTL-8.2. Use Names Permutations](https://sowel.soxoj.com/names-permutations)\n- [SOTL-8.3. Use Personal-Info-Based Identifiers](https://sowel.soxoj.com/personal-info-based-identifiers)\n\n[↑ Back to the start](#table-of-contents)\n\n## Other\n\n- [Good random names generator](https://github.com/epidemics-scepticism/NickGenerator)\n\n[↑ Back to the start](#table-of-contents)\n","funding_links":[],"categories":["Python","Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoxoj%2Fusername-generation-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoxoj%2Fusername-generation-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoxoj%2Fusername-generation-guide/lists"}