██╗ ██╗██╗██████╗ ███████╗██████╗
██║ ██║██║██╔══██╗██╔════╝██╔══██╗
██║ ██║██║██████╔╝█████╗ ██████╔╝
╚██╗ ██╔╝██║██╔═══╝ ██╔══╝ ██╔══██╗
╚████╔╝ ██║██║ ███████╗██║ ██║
╚═══╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝
**we bite.**
A precision recon & security toolkit.




## Philosophy
Viper is **recon-first**. It does less than most tools and does it better.
- **Signal over noise.** Every output line earns its place.
- **Fast by default.** Auto-tunes scan timeout based on measured latency.
- **Opinionated.** `viper bite` does the right thing. No flags required.
- **Precision over spam.** `CRIT` means CRIT.
- **Memory.** Viper remembers every scan. `viper diff` shows what changed.
## Install
git clone https://github.com/yourusername/viper.git
cd viper
pip install -e .
# Optional: richer DNS + WHOIS support
pip install -e ".[full]"
## Fangs
| Command | What it does |
|---------|-------------|
| `viper bite target.com` | Fast recon: scan + DNS + subs + vuln hints |
| `viper bite target.com --all` | + Web Fang: tech stack, paths, SSL, headers |
| `viper venom target.com` | Full assault, auto-saves HTML + JSON report |
| `viper web target.com` | Web fingerprint, sensitive paths, SSL audit |
| `viper fang target.com` | Focused port scan |
| `viper recon target.com` | DNS records + subdomain enumeration |
| `viper osint johndoe --social` | Social media footprint |
| `viper crack
` | Identify + crack password hashes |
| `viper diff target.com` | Compare last two scans — what changed? |
| `viper history target.com` | Full scan history |
| `viper report scan.json` | Generate HTML report |
## What it looks like
── BITE FANG google.com ──────────────────────────────────
[VIPER] Target locked → google.com
[INFO] Latency tuned timeout → 0.30s per port
── PORT FANG google.com ──────────────────────────────────
[SCAN] Scanning 1-1024...
PORT STATE SERVICE
────── ────── ────────────
80 OPEN HTTP
443 OPEN HTTPS
2 open ports · 1.2s
── DNS FANG google.com ───────────────────────────────────
A 142.250.80.46
MX 10 smtp.google.com.
NS ns1.google.com.
TXT "v=spf1 include:_spf.google.com ~all"
11 records · 0.4s
── DNS FANG subdomains · google.com ──────────────────────
[FOUND] admin.google.com 172.217.26.78
[FOUND] vault.google.com 74.125.204.118
[FOUND] api.google.com 142.251.8.106
15 subdomains found · 1.8s
viper diff google.com
── DIFF google.com ────────────────────────────────────────
prev 2026-05-21
curr 2026-05-28
delta +40 risk
── NEW FINDINGS ───────────────────────────────────────────
+ [HIGH] Port 8080 open HTTP-Alt
+ [MED] Missing CSP port 80
── CLOSED ─────────────────────────────────────────────────
- [LOW] Port 21 open FTP
+2 new -1 closed ~0 changed 47 stable
## Usage
### The default move
viper bite google.com
viper bite google.com --all # includes web analysis
viper bite google.com --save out.json
viper bite google.com --silent --json | jq .ports
### Full assault
viper venom google.com
viper venom google.com --out ./reports
### Web intelligence
viper web google.com
viper web google.com --save web.json
### Port scan
viper fang 10.0.0.1
viper fang 10.0.0.1 -p 1-65535
viper fang 10.0.0.1 -p 22,80,443 --threads 300
### DNS + subdomains
viper recon google.com
viper recon google.com --whois
### OSINT
viper osint johndoe --social
viper osint t --email john doe company.com
### Hash cracking
viper crack 5f4dcc3b5aa765d61d8327deb882cf99
viper crack -w /usr/share/wordlists/rockyou.txt
viper crack --identify
### Intelligence (scan history + diff)
viper bite google.com # auto-saves to ~/.viper/history/
viper bite google.com # scan again later
viper diff google.com # what changed?
viper history google.com # all past scans
viper targets # all tracked targets
### Reports
viper bite google.com --save scan.json
viper report scan.json -o report.html
### Config
viper config --show
viper config --init
viper config --set scan.threads 200
viper config --set scan.timeout 0.3
viper config --set scan.ports 1-65535
## Architecture
viper/
├── cli.py # Commands — voice of the tool
├── core/
│ ├── models.py # Unified Finding + ScanResult
│ ├── history.py # Scan persistence (~/.viper/history/)
│ ├── diff.py # Comparison engine
│ ├── latency.py # Network-aware timeout tuning
│ ├── config.py # Typed config (~/.viper/config.json)
│ └── errors.py # Graceful failures, no tracebacks
├── bite/
│ ├── quick.py # viper bite — fast default flow
│ └── deep.py # viper venom — full assault
├── modules/ # Raw capability. No rendering.
│ ├── scanner.py # Threaded port scanner
│ ├── recon.py # DNS + concurrent subdomain enum
│ ├── vuln.py # Banner grab + CVE signatures
│ ├── web.py # Web fingerprint + path check
│ ├── osint.py # Email + social footprint
│ └── crack.py # Hash ID + wordlist crack
└── output/
├── terminal.py # All rendering. One place.
└── report.py # HTML + JSON export
**The key rule:** `modules/` never prints anything. `output/terminal.py` owns every line that hits the screen. Change the design, change one file.
## Workflow
# Recon a target
viper bite target.com --all --save $(date +%F)-target.json
# Generate report
viper report $(date +%F)-target.json -o report.html
# Come back next week
viper bite target.com
# See what changed
viper diff target.com
## Requirements
- Python 3.10+
- `click>=8.0`
- `rich>=13.0`
- Optional: `dnspython`, `python-whois`
## Disclaimer
*a quiet tool that actually is.*