Skip to main content

OSWG - Oddly Specific Wordlist Generator

A tool that generates targeted wordlists by scraping websites and applying intelligent mutations. Designed for penetration testers and security researchers.

Features

  • Scrape websites for relevant keywords
  • Generate wordlists with l33t speak, capitalization, numbers, and special character mutations
  • Mutate existing wordlists with the same transformation rules
  • Web UI with real-time progress via WebSocket
  • Single binary — CLI and web dashboard in one executable
  • XDG-compliant — data stored in ~/.local/share/oswg/

Installation

Option 1: Download prebuilt binary (recommended)

Download the latest release for your platform from the Releases page.

# Linux
wget https://github.com/yourusername/oswg/releases/latest/download/oswg-linux-x86_64
chmod +x oswg-linux-x86_64
./oswg-linux-x86_64 --ui

# macOS
wget https://github.com/yourusername/oswg/releases/latest/download/oswg-macos-arm64
chmod +x oswg-macos-arm64
./oswg-macos-arm64 --ui

Option 2: Install via pip

pip install oswg
oswg --ui

Usage

CLI Mode

# Generate a wordlist
oswg generate https://example.com --size 50000 -o wordlist.txt

# Scrape keywords only
oswg scrape https://example.com --max-pages 5

# Mutate words
oswg mutate password admin login --numbers --special -o mutations.txt
oswg mutate --file words.txt -o mutations.txt

Web Dashboard

oswg --ui

The dashboard will automatically open in your browser at http://127.0.0.1:8000. If port 8000 is busy, it will auto-increment to 8001, 8002, etc.

Options:

  • --port 8080 — Start at a custom port
  • --host 0.0.0.0 — Bind to all interfaces (use with caution)
  • --no-browser — Don't open the browser automatically

Data Location

OSWG follows the XDG Base Directory Specification:

  • Data: ~/.local/share/oswg/ (database, generated wordlists)
  • Config: ~/.config/oswg/ (future use)
  • Cache: ~/.cache/oswg/ (future use)

Override with environment variables:

  • XDG_DATA_HOME — Change the data directory
  • OSWG_DATA_DIR — Override the oswg-specific directory

Development

Build from source

git clone https://github.com/yourusername/oswg
cd oswg

# Install dependencies
pip install -e ".[dev]"

# Run CLI
oswg generate https://example.com

# Run web UI
oswg --ui

# Build standalone binary
python build.py
# → dist/oswg

Project Structure

oswg/
├── src/oswg/          # Unified Python package
│   ├── core/          # Scraping & mutation engine
│   ├── routers/       # FastAPI routes
│   ├── services/      # Job management, file management
│   ├── cli.py         # Typer CLI entry point
│   ├── launcher.py    # --ui launcher
│   └── static/        # SvelteKit build output
├── ui/                # SvelteKit source
├── tests/             # Test suite
├── build.py           # PyInstaller build script
├── oswg.spec          # PyInstaller spec
├── pyproject.toml     # Package configuration
└── .github/workflows/ # CI/CD

License

MIT

Release files for oswg 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oswg 0.1.1
File Size Uploaded
oswg-0.1.1.tar.gz 20.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oswg 0.1.1
File Interpreter ABI Platform
oswg-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 47.6 kB

Release files / oswg-0.1.1.tar.gz

Download URL oswg-0.1.1.tar.gz
Size 20.7 kB
Tags Source
SHA-256 checksum
How to use checksums
17c8550aa802b18da396e3db97481798502be295c657c449c7f742c3c17d1f6f
BLAKE2b-256 checksum
How to use checksums
27e7c9f81ea654b2398b0c316e73b00804a503e194a3ce9d014b66e9dad1a610
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / oswg-0.1.1-py3-none-any.whl

Download URL oswg-0.1.1-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d222074f5f1c499ccbfa9513070d03efe21bf18fcb9853636d36bb40f1c84960
BLAKE2b-256 checksum
How to use checksums
c2ba3457d5b8759011167cd2e363229dbc5ea59401714079934f23da30121c07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.5

1 release file

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page