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 directoryOSWG_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)
| File | Size | Uploaded | |
|---|---|---|---|
| oswg-0.1.3.tar.gz | 20.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|