Skip to content

yasserbouchaal/styx-url-scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿงพ๐Ÿ” STYX โ€” URL Scanner

Platform Language License API

STYX is a lightweight URL scanning toolkit powered by the VirusTotal API.
It provides a premium Streamlit dashboard and an interactive CLI menu to quickly classify URLs as:

โœ… SAFE โ€ข โš ๏ธ SUSPICIOUS โ€ข ๐Ÿšจ MALICIOUS


๐Ÿ“‹ Table of Contents

  • โœจ Key Features
  • ๐Ÿš€ Installation
  • ๐ŸŽฎ Usage
    • CLI (Interactive Menu)
    • Dashboard (Streamlit)
  • ๐Ÿ“ Project Structure
  • ๐Ÿ” Security Notes
  • ๐Ÿ“œ License

โœจ Key Features

  • ๐Ÿ”Ž Full scan: submits a URL to VirusTotal and waits for the analysis result
  • โšก Quick report: fetches the last known VirusTotal report for a URL
  • ๐Ÿงพ Local history stored in data/history.json
  • ๐Ÿ“„ Reports
    • Download HTML report (Dashboard)
    • Generate HTML + JSON reports (CLI)
    • Export full history as JSON
  • ๐Ÿ“Š Analytics tab: verdict distribution + basic stats
  • ๐Ÿง  Clean UX
    • Interactive CLI menu
    • Modern UI dashboard with tabs (Scan / Reports / Analytics)

๐Ÿš€ Setup

1) Clone the repository

git clone https://github.com/yasserbouchaal/styx-url-scanner.git
cd styx-url-scanner

2) Create a virtual environment

python3 -m venv .venv

3) Activate it

source .venv/bin/activate

4) Install dependencies

pip install -r requirements.txt

Debian/Ubuntu (if venv is missing)

sudo apt update
sudo apt install -y python3-venv python3-pip

๐Ÿ”‘ Configure API Key

1) Create your .env

cp .env.example .env

2) Add your VirusTotal key

Edit .env and paste your key:

VT_API_KEY=YOUR_VIRUSTOTAL_API_KEY

โœ… .env is ignored by Git (your key won't be pushed).


๐ŸŽฎ Usage

Option 1 โ€” CLI (Interactive Menu)

Run:

python styx_cli.py

CLI actions:

  • Full scan (submit + wait)
  • Quick report (last known scan)
  • Show history
  • Generate reports (HTML + JSON)

STYX CLI Menu

Reports generated by the CLI are saved in: reports/

Option 2 โ€” Dashboard (Streamlit)

Run locally:

streamlit run app/dashboard.py

Run on a server:

streamlit run app/dashboard.py --server.address 0.0.0.0 --server.port 8501

Open in your browser:

http://SERVER_IP:8501

๐Ÿ“ Project Structure

styx-url-scanner/
โ”œโ”€ styx_cli.py                 # Interactive CLI menu
โ”œโ”€ app/
โ”‚  โ””โ”€ dashboard.py             # Streamlit dashboard
โ”œโ”€ core/
โ”‚  โ”œโ”€ virustotal_client.py     # VirusTotal API client
โ”‚  โ”œโ”€ url_tools.py             # URL normalization + VT URL id
โ”‚  โ”œโ”€ history_store.py         # History (data/history.json)
โ”‚  โ””โ”€ report_generator.py      # HTML/JSON report generator
โ”œโ”€ data/
โ”œโ”€ reports/
โ”œโ”€ assets/
โ””โ”€ requirements.txt

๐Ÿ” Security Notes

  • Do NOT commit your API key. Keep it only in .env.
  • VirusTotal has rate limits. If you hit HTTP 429, retry later or use Quick report.
  • This tool is intended for defensive analysis and authorized use only.

๐Ÿ“œ License

This project is licensed under the MIT License.

Author: Yasser BOUCHAAL

About

๐Ÿ”๐Ÿ›ก๏ธโš ๏ธ A small URL scanning tool powered by VirusTotal, with a Streamlit dashboard and a simple CLI. Generates HTML/JSON reports and keeps local scan history.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages