A web-based reconnaissance toolkit for penetration testing
Built in Go • Single binary • Zero config
Raccoon Recon provides a sleek, dark-themed dashboard for conducting passive, active, and web reconnaissance during the information-gathering phase of a penetration test. All scan results are persisted in SQLite and can be exported as PDF or Markdown reports.
📚 Built for IST-4620 Penetration Testing & Ethical Hacking — Spring 2026
| Tool | Description |
|---|---|
| WHOIS Lookup | Domain registration, registrar, nameservers |
| DNS Records | A, AAAA, MX, NS, TXT, SOA, CNAME via dig |
| Subdomain Enumeration | Discover subdomains via theHarvester |
| DNS Recon | Standard enumeration, reverse DNS, zone transfers via dnsrecon |
| Google Dorking | Auto-generated Google dork queries for target |
| OSINT Aggregator | Links to Shodan, Censys, VirusTotal, crt.sh, and more |
| Tool | Description |
|---|---|
| Port Scanning | TCP connect scans via nmap |
| Service Detection | Version detection with nmap -sV |
| OS Fingerprinting | OS detection with nmap -O |
| Ping Sweep | Live host discovery with nmap -sn |
| Banner Grabbing | Service banners via nmap or netcat |
| Traceroute | Network path discovery |
| SNMP Enumeration | SNMP tree walking via snmpwalk |
| Tool | Description |
|---|---|
| HTTP Header Analysis | Response headers via curl |
| Technology Detection | CMS/framework identification via whatweb |
| Directory Discovery | Brute-force directories via gobuster |
| SSL/TLS Analysis | Certificate details, cipher suites, TLS version (built-in) |
| Robots.txt / Sitemap | Fetch and parse (built-in) |
| URL Metadata Extractor | HTTP headers, HTML meta tags, OG data (built-in) |
| File Type | What's Extracted |
|---|---|
| JPEG | EXIF data — camera make/model, GPS coordinates, date taken, exposure, ISO, focal length, dimensions |
| PNG | Dimensions, tEXt/iTXt metadata chunks (author, description, software, creation time) |
| Title, author, creator, producer, page count, creation/modification dates, PDF version |
🗺️ GPS coordinates from photos are automatically linked to Google Maps!
| Feature | Details |
|---|---|
| Dashboard | Quick-action cards for instant scans without navigating away |
| Project Management | Organize scans by engagement |
| Real-time Output | Live scan output streamed via WebSocket |
| SQLite Database | All results persisted for historical review |
| Report Generation | Export findings as Markdown or PDF |
| File Upload | Drag-and-drop image/PDF metadata extraction with preview |
| Single Binary | All templates, CSS, JS embedded — just run it |
# Clone
git clone https://github.com/jruggles656/raccoon-recon.git
cd raccoon-recon
# Build & Run
go build -o reconsuite .
./reconsuiteOpen http://localhost:8080 🎉
Raccoon Recon auto-detects which tools are available. Missing tools are shown on the dashboard — built-in tools always work.
brew install go nmap whatweb gobuster
pip3 install theHarvester dnsreconsudo apt install golang nmap whatweb gobuster whois dnsutils \
traceroute curl netcat-openbsd snmp
pip3 install theHarvester dnsrecon- Google Dorking
- OSINT Aggregator
- SSL/TLS Analysis
- Robots.txt / Sitemap
- URL Metadata Extractor
- File Metadata Extractor (EXIF, PNG, PDF)
Edit config.yaml:
server:
host: "127.0.0.1"
port: 8080
database:
path: "reconsuite.db"
reports:
directory: "./reports"raccoon-recon/
├── main.go # Entry point
├── config.yaml # Configuration
├── internal/
│ ├── config/config.go # Config loading
│ ├── database/ # SQLite schema, models, queries
│ │ ├── db.go # Database connection & migrations
│ │ ├── models.go # Project, Scan, Result, Report structs
│ │ ├── migrations.go # Schema definition
│ │ └── queries.go # CRUD operations
│ ├── scanner/ # Scan orchestration
│ │ ├── executor.go # Scan lifecycle & routing
│ │ ├── builtin.go # Built-in tools (SSL, dorking, OSINT, metadata)
│ │ ├── filemeta.go # File metadata extraction (EXIF, PNG, PDF)
│ │ ├── specs.go # CLI tool specifications
│ │ └── parsers.go # Output parsers (whois, dig, nmap, curl)
│ ├── server/ # HTTP server
│ │ ├── server.go # Route registration & template loading
│ │ ├── handlers.go # Page & API handlers
│ │ ├── websocket.go # WebSocket hub for live output
│ │ └── middleware.go # Logging, security headers, recovery
│ ├── tools/ # Tool utilities
│ │ ├── common.go # Tool runner (exec + streaming)
│ │ ├── validator.go # Target validation
│ │ └── detect.go # Installed tool detection
│ └── report/ # Report generation
│ └── generator.go # Markdown + PDF export
├── web/
│ ├── embed.go # Go embed directives
│ ├── templates/ # HTML templates (embedded)
│ │ ├── layout.html # Base layout with top navbar
│ │ ├── dashboard.html # Dashboard with quick actions
│ │ ├── passive.html # Passive recon page
│ │ ├── active.html # Active recon page
│ │ ├── web.html # Web recon page
│ │ ├── projects.html # Project management
│ │ ├── results.html # Results viewer
│ │ └── reports.html # Report management
│ └── static/ # Static assets (embedded)
│ ├── css/style.css # Monochrome dark theme
│ ├── js/app.js # Frontend logic
│ └── img/logo.svg # 🦝 Raccoon logo
└── reports/ # Generated report output
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/projects |
📋 List all projects |
POST |
/api/projects |
➕ Create project |
GET |
/api/projects/{id} |
📄 Get project details |
PUT |
/api/projects/{id} |
✏️ Update project |
DELETE |
/api/projects/{id} |
🗑️ Delete project |
POST |
/api/scans |
🚀 Start a scan |
GET |
/api/scans/{id} |
📊 Get scan status |
DELETE |
/api/scans/{id} |
❌ Cancel scan |
GET |
/api/scans/{id}/results |
📈 Get scan results |
GET |
/api/scans/recent |
🕐 Recent scans (last 10) |
POST |
/api/reports |
📝 Generate report |
GET |
/api/reports/{id}/download |
⬇️ Download report |
GET |
/api/tools/status |
🔧 Check installed tools |
GET |
/api/stats |
📊 Dashboard statistics |
POST |
/api/upload/metadata |
📁 Upload file for metadata extraction |
WS |
/ws |
🔴 WebSocket for live scan output |
| Component | Technology |
|---|---|
| Backend | Go standard library (net/http) |
| Database | SQLite via modernc.org/sqlite (pure Go, no CGO) |
| WebSocket | github.com/coder/websocket |
| PDF Export | github.com/signintech/gopdf |
| Config | gopkg.in/yaml.v3 |
| Frontend | Vanilla JS, CSS custom properties |
| Deployment | Single binary with embedded assets via embed.FS |
🦝 Happy Recon!
Built with ☕ and Go
