Fast Memory Friendly Username Generator
Project description
$$$$$$$$\ $$\ $$\ $$$$$$$$\ $$\ $$\ $$$$$$\
$$ _____|$$$\ $$$ |$$ _____|$$ | $$ |$$ __$$\
$$ | $$$$\ $$$$ |$$ | $$ | $$ |$$ / \__|
$$$$$\ $$\$$\$$ $$ |$$$$$\ $$ | $$ |$$ |$$$$\
$$ __| $$ \$$$ $$ |$$ __| $$ | $$ |$$ |\_$$ |
$$ | $$ |\$ /$$ |$$ | $$ | $$ |$$ | $$ |
$$ | $$ | \_/ $$ |$$ | \$$$$$$ |\$$$$$$ |
\__| \__| \__|\__| \______/ \______/
🦂 FMFUG — Fast Memory Friendly Username Generator
FMFUG is a high-performance, multithreaded username generator written in Python. It is designed to handle millions of name combinations without consuming excessive RAM, making it ideal for generating large wordlists for pentesting, security assessments, or system administration.
🚀 Features
- Memory Friendly: Uses lazy evaluation and streaming. Can process millions of names with minimal RAM usage.
- Fast I/O: Implements output buffering to minimize disk write operations.
- Multithreaded: processes names in parallel for maximum speed.
- Customizable: Supports custom format patterns (e.g.,
first.last,first[1]last). - Combinatorial Mode: Can generate combinations from separate first and last name files (Cartesian product) without loading everything into memory.
❓ Why ❓
- username-anarchy made my pc burn down to ashes
📦 Installation
1. Install from pypi
Using pipx
pipx install fmfug
2. Install from source
- Clone the repository:
git clone https://github.com/0xudodelige/fmfug.git cd fmfug
- Install:
Using pipx
pipx install .
(Note: The script works without tqdm, but installing it provides a progress bar).
🧑💻 Usage
usage: fmfug [-h] [-i INPUT] [-o OUTPUT] [-f FORMAT_LIST]
[--formats FORMATS] [-t THREADS] [--no-parallel]
[--case-sensitive] [-q] [--list-formats]
[--first-names FIRST_NAMES] [--last-names LAST_NAMES]
Generate username variations (streaming + multithreading)
🛠 Command-Line Options
| Option | Description |
|---|---|
-i, --input INPUT |
Input file with full names (default: users.txt, use - for stdin) |
-fn, --first-names FIRST_NAMES |
File containing first names (one per line) |
-ln, --last-names LAST_NAMES |
File containing last names (one per line) |
-o, --output OUTPUT |
Output file (default: stdout) |
-f, --format FORMAT_LIST |
Add custom format pattern (repeatable) |
--formats FORMATS |
File containing format patterns |
-t, --threads THREADS |
Number of threads (default: 4) |
--case-sensitive |
Preserve original case |
-q, --quiet |
Quiet mode (for redirection or pipe) |
--list-formats |
Show default format patterns |
-h, --help |
Show help message |
🧩 Supported Format Patterns
Name Components
first → full first name
last → full last name
middle → middle name (if present)
Combinations
firstlast
first.last
first_last
first-last
13__37@firstFOOlastBAR (Why not)
Truncation
first[1] → first character of first name (Initial)
last[4] → first 4 characters of last name
Capitalization
First → Capitalized
Last → Capitalized
FirstLast → PascalCase
Numeric Suffixes
first5 → appends 0..5
last12 → appends 0..12
📘 Examples
1. Basic usage
fmfug
2. Output to file
fmfug -o usernames.txt
3. Use 8 threads
fmfug -t 8
4. Inline custom formats
fmfug -f "first.last" -f "first[1].last" -o out.txt
5. Load custom formats from file
fmfug --formats patterns.txt
6. Case-sensitive output
fmfug --case-sensitive
7. First/Last name combination mode
fmfug --first-names fn.txt --last-names ln.txt
📜 License
MIT License. See LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fmfug-1.2.1.tar.gz.
File metadata
- Download URL: fmfug-1.2.1.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15fc9e59eb636a1b0a9064626fbf295e31d4bb8f931208525fd104a61ba1298a
|
|
| MD5 |
14f3b4fc62a3e1fa575c53891b89616c
|
|
| BLAKE2b-256 |
995cc231aa743719bf64d6271f9e743ef8b2143473722b3a4a17721d8799a39e
|
Provenance
The following attestation bundles were made for fmfug-1.2.1.tar.gz:
Publisher:
python-publish.yml on 0xudodelige/fmfug
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fmfug-1.2.1.tar.gz -
Subject digest:
15fc9e59eb636a1b0a9064626fbf295e31d4bb8f931208525fd104a61ba1298a - Sigstore transparency entry: 768520020
- Sigstore integration time:
-
Permalink:
0xudodelige/fmfug@1ecd380801e38084890332f284077e82babe0c49 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/0xudodelige
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1ecd380801e38084890332f284077e82babe0c49 -
Trigger Event:
release
-
Statement type:
File details
Details for the file fmfug-1.2.1-py3-none-any.whl.
File metadata
- Download URL: fmfug-1.2.1-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
530a296ba0d61e0bb0f220571b66d6c2c8682a1547ae353fc14971ad6bc02ac1
|
|
| MD5 |
fade24750875f7fb88104b585a4e40e7
|
|
| BLAKE2b-256 |
1da65fdceddfdb4c39acdb658f070cddd921e021cf668a89616989b37c7eea4d
|
Provenance
The following attestation bundles were made for fmfug-1.2.1-py3-none-any.whl:
Publisher:
python-publish.yml on 0xudodelige/fmfug
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fmfug-1.2.1-py3-none-any.whl -
Subject digest:
530a296ba0d61e0bb0f220571b66d6c2c8682a1547ae353fc14971ad6bc02ac1 - Sigstore transparency entry: 768520022
- Sigstore integration time:
-
Permalink:
0xudodelige/fmfug@1ecd380801e38084890332f284077e82babe0c49 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/0xudodelige
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1ecd380801e38084890332f284077e82babe0c49 -
Trigger Event:
release
-
Statement type: