Similar usernames generation guide

Names transform in (not) mysterious ways

Start

Let’s talk a little about a beginning of an OSINT search process.

What do you have?

If 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

Usernames/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 parts can be separated by some characters as _, . and so on.

rob@distilled.net
ousbey@distilled.net
robousbey@distilled.net
rob.ousbey@distilled.net
rousbey@distilled.net
...
$ python3 generate_by_real_info.py
First name: john
Last name: smith
Year of birth: 1980
Username (optional):
Zip code (optional):
johnsmith1980
smith
johnsmith80
jsmith1980
smithjohn
...
$ osrf alias_generator
Insert a name: john
Insert the first surname: smith
Insert the second surname:
Insert a year (e. g.: birthyear): 1980
Insert a city:
Insert a country:
Additional transformations to be added
--------------------------------------
Extra words to add (',' separated):Input data:
-----------
Name: john
First Surname: smith
Year: 1980
Generated nicks:[
"j.smith",
"j.smith.1980",
"j.smith.80",
"j_smith",
...
Up to 41 nicks generated.
Writing the results onto the file:
./output.txt

Primary info mining

It is 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.

BehindTheName ‘alexandr’ check results
$ python3 behind_the_names.py john diminutives
Johnie
Johnnie
Johnny
WeRelate ‘aleksandr’ check results

Username transformations

When 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.

$ python3 transform_username.py --username soxoj rules/printable-leetspeak.rule
soxoj
s0xoj
5ox0j
50xoj
...
  • printable-leetspeak-two-ways.rule - the same conversions from letters to numbers, but also vice versa
  • impersonation.rule - common mutations used by scammers-impersonators such as l => I, O => 0, etc.
  • additions.rule - common additions to the username: underscores and numbers
  • toggle-letter-case.rule - changing case of letters, what is needed not so often, but maybe useful
  • add_email.rule - custom rule to add mail domain after usernames
$ cat usernames.txt
john
jack
$ python3 transform_username.py rules/impersonation.rule --username-list soxoj
jack
iack
john
iohn
$ python3 transform_username.py rules/printable-leetspeak.rule --username soxoj | python3 transform_username.py rules/impersonation.rule  -I
s0xOj
sOx0j
5OxOi
soxOj
sox0i
...

Addition of mail domain

You can use add_email.rule and easily edit it to add needed mail domains to check emails in tools such as mailcat, holehe, or GHunt.

$ python3 transform_username.py rules/printable-leetspeak.rule --username soxoj | python3 transform_username.py rules/add_email.rule --remove-known -I
soxoj@protonmail.com
sox0j@protonmail.com
s0x0j@protonmail.com
50x0j@protonmail.com
...

Conclusion

So, it’s all that I use and what I can tell you about now. Do you have anything to add? Feel free to write me on Telegram, Discord or to make an issue or pull request to the GitHub repository. Bye!

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store