Persona is a custom wordlist generator — it turns a target's personal details into a list of likely passwords and usernames. It is the same category of tool as CUPP and Username Anarchy, built for authorized penetration testing, auditing your own accounts, and password-awareness education.
It ships with an Uzbek module that understands local spelling habits
(oʻ/gʻ, Latin↔Cyrillic) and common local password patterns.
Supported platforms: Windows and Linux (Ubuntu / Debian), on amd64
and arm64. It is a single static binary with no runtime dependencies.
⚠️ Ethical Use Persona never attacks, connects to, or cracks anything. It only reads the data you give it and writes.txtfiles. Use it only against systems and accounts you own or are explicitly authorized to test. You are responsible for complying with all applicable laws. The authors accept no liability for misuse.
- Interactive TUI (Charm: Bubble Tea / Lip Gloss / Bubbles) with an ASCII banner, guided prompts, and a progress spinner.
- Pipeline:
Profile → tokens → mutations → combinations → dedupe → filter → rank. - Mutations: case (
ali/Ali/ALI), leetspeak (a→@/4, o→0, i→1/!, …), reverse, truncation. - Combinations:
token + separator + token,token + year,token + suffix. - Uzbek normalization + Latin↔Cyrillic transliteration.
- Username templates (
first.last,flast,f.last,first+year, …). - Policy filters:
--min,--max,--require-digit,--require-symbol. - Explosion guard:
--max-words,--depth. - Config-file and flag-driven non-interactive runs for CI.
Replace
Yescriptwith your own GitHub username/org if you fork this.
No apt packages required; the script downloads a prebuilt binary and adds
it to your PATH.
curl -fsSL https://raw.githubusercontent.com/Yescript/persona/main/install.sh | bashirm https://raw.githubusercontent.com/Yescript/persona/main/install.ps1 | iexDownload the asset for your OS/arch from the Releases page.
Linux:
tar -xzf persona_linux_amd64.tar.gz
chmod +x persona
mv persona ~/.local/bin/Windows: unzip persona_windows_amd64.zip and move persona.exe into a
folder on your PATH.
go install github.com/Yescript/persona/cmd/persona@latestgit clone https://github.com/Yescript/persona.git
cd persona
make install # Linux/macOS
go build -o persona.exe ./cmd/persona # WindowsInteractive (default):
personaWith flags:
persona --name Ali --surname Valiyev --birth 1999 -o wordlist.txtFrom a config file:
persona --config profile.yamlUsernames only:
persona --usernames-only| Flag | Default | Description |
|---|---|---|
--name |
First name | |
--surname |
Surname | |
--birth |
Birth year (e.g. 1999) |
|
--config |
Load a profile from a YAML file (non-interactive) | |
-o, --output |
wordlist.txt |
Output wordlist path |
--usernames |
false |
Also write usernames.txt alongside the wordlist |
--usernames-only |
false |
Only generate usernames |
--usernames-output |
usernames.txt |
Usernames output path |
--min |
0 |
Minimum length (0 = no limit) |
--max |
0 |
Maximum length (0 = no limit) |
--require-digit |
false |
Keep only candidates with a digit |
--require-symbol |
false |
Keep only candidates with a symbol |
--max-words |
100000 |
Cap total generated words |
--depth |
2 |
How many tokens may combine (1 or 2) |
--leet |
true |
Enable leetspeak mutations |
--symbols |
true |
Allow symbol suffixes |
--years |
true |
Append year tokens |
--cyrillic |
false |
Also emit Cyrillic transliterations (Latin-only by default) |
--reverse |
true |
Include reversed tokens (--reverse=false to disable) |
--truncate |
true |
Include truncated tokens (--truncate=false to disable) |
--stdout |
false |
Also print results to stdout |
--version |
Print version and exit |
Many Uzbek users build passwords from Latinized names plus numbers, phone
tails, favorite clubs, or religious words. Persona's uzbek package:
- Splits free-text fields into clean tokens (so
black, white, ko'kbecomes three tokens, never one comma-joined string). - Normalizes
oʻ/o' → o,gʻ/g' → g, and strips stray apostrophes. - With
--cyrillic, produces Latin→Cyrillic variants (e.g.Akmal→Акмал), keeping digraphs likesh,ch,ng. Transliterations that would be broken (e.g. Englishwhite) are dropped, not emitted. Output is Latin-only by default, since most Uzbek users type Latin passwords. - Seeds common local passwords and keyboard patterns.
wordlist.txt— candidate passwords (primary output).usernames.txt— candidate usernames (when enabled).- Final stats: token count, generated count, file size.
make build # build ./persona
make test # run unit tests
make fmt # gofmt
make vet # go vetThis repo targets Go 1.22+. Run
go mod tidyonce to fetch dependencies and generatego.sum.
Issues and PRs welcome — especially additional Uzbek tokens, transliteration
fixes, and username templates. Keep packages small and gofmt/go vet clean,
and add tests for new generation logic.
MIT — see LICENSE.