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

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.3
File Size Uploaded
oswg-0.1.3.tar.gz 20.8 kB Details

Built distribution (wheel)

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

Total release size: 48.0 kB

Release files / oswg-0.1.3.tar.gz

Download URL oswg-0.1.3.tar.gz
Size 20.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3083c4fb570968572a806b261a983eb15361475bc19d824041e60d75e5baf40f
BLAKE2b-256 checksum
How to use checksums
808f23860267937fb22700bce0ca71b5a29f760858be2e7e1a324a083dd2b89d
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.3-py3-none-any.whl

Download URL oswg-0.1.3-py3-none-any.whl
Size 27.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
85caa45da82ab0f80d517f39b410149f43a43fa775e814e4b03f7da06bc8586e
BLAKE2b-256 checksum
How to use checksums
0dff400da44d77bc4b0905b98368f26df491d55dd3877ad33c90e94d558cb567
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

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

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