State of Development
Version: 2026-04.1 | Last Updated: 2026-04-28
Booth Flow
Visitor enters: example.com
↓
POST /start → ProbeSubdomains() checks 5000 names via HTTPS/TLS
↓
Live progress: "Checking 142 / 5000 subdomains…"
↓
Discovered subdomains shown — visitor picks one
↓
GoTestWAF scans selected subdomain against Wallarm endpoint
↓
AI generates resilience narrative (or fallback)
↓
Visitor sees report with QR code; consultant accesses full GoTestWAF output
Key Features
| Feature |
Status |
Details |
| Domain Input |
✅ Complete |
Replaced email — no data-collection appearance |
| Subdomain Discovery |
✅ Complete |
5000-name SecLists wordlist, HTTPS/TLS probe |
| Wildcard DNS Detection |
✅ Complete |
Filters catch-all via TLS cert validation |
| Live Probe Progress |
✅ Complete |
Frontend shows "checked N / total" with pulse |
| Interactive Selection |
✅ Complete |
User picks which subdomain to scan |
| IP Fast-Path |
✅ Complete |
Skips discovery, scans IP directly |
| GoTestWAF Integration |
✅ Complete |
120s timeout, consultant_{token}.html output |
| AI Narrative |
✅ Complete |
DeepSeek API (fallback HTML when unavailable) |
| Admin Dashboard |
✅ Complete |
Basic auth, per-scan consultant report links |
| Report Serving |
✅ Complete |
visitor_{token}.html + consultant_{token}.html |
| QR Code |
✅ Complete |
Booth scanning workflow |
| Graceful Shutdown |
✅ Complete |
SIGINT/SIGTERM handling |
| Booth Network |
✅ Complete |
Binds to 0.0.0.0:8080 |
Technical Specifications
| Aspect |
Value |
| Language |
Go 1.25.0 |
| Framework |
Gin web framework |
| Subdomain Wordlist |
5000 names (SecLists) |
| Probe Concurrency |
10 workers, 3s timeout |
| Probe Duration |
~2 minutes for 5000 names |
| WAF Scanner |
GoTestWAF (120s timeout) |
| AI Provider |
DeepSeek API (optional, graceful fallback) |
| Reports |
Static HTML at /opt/aasd/reports/ |
| Storage |
Scan metadata: in-memory; Reports: files on disk |
| Deployment |
systemd service at /opt/aasd/ |
| Credentials |
sechpoint / Git3x2o26 |
Deployment
/opt/aasd/
├── aasd 31M — Compiled binary
├── config.yaml — Server URL, admin creds, AI key
├── prompt.txt — DeepSeek system prompt
├── subdomains.txt — 5000-name wordlist
├── gotestwaf 27M — WAF scanner binary
├── gotestwaf-config.yaml — HTTP headers for scans
├── testcases/ — GoTestWAF attack payloads
├── static/ — Frontend HTML/JS
├── templates/ — Admin dashboard template
├── reports/ — Generated scan reports
└── logs/ — Server logs
API Endpoints
| Endpoint |
Method |
Description |
/ |
GET |
Landing page (domain input) |
/start |
POST |
Submit domain, start discovery pipeline |
/select-subdomain |
GET |
Subdomain selection page |
/select-subdomain |
POST |
Select target, start GoTestWAF scan |
/analysing |
GET |
Scan progress page |
/scan-status/:token |
GET |
Poll scan status (JSON) |
/admin-dashboard |
GET |
Consultant dashboard (basic auth) |
/api/scans |
GET |
Scan list (JSON) |
/report-data/:token |
GET |
Raw scan result (JSON) |
/reports/* |
GET |
Static report files |
/qrcode |
GET |
QR code generator |
/email-report |
POST |
Send report via email |
/simulation |
GET |
Legacy alias for /analysing |
Known Limitations
- Scan results are in-memory — restarting the service clears all scan metadata (reports on disk survive)
- GoTestWAF requires HTTPS — targets without HTTPS will fail to scan (fallback report generated)
- Probe takes ~2 minutes for 5000 names at 10 concurrent workers with 3s timeout
- Wildcard DNS + Zoraxy defaults — subdomains that return the exact same Zoraxy default page may be filtered out even if they exist (rare edge case)
Next Steps
- Production deployment with proper SSL termination via Zoraxy
- DeepSeek API key configuration for AI-powered reports
- Fine-tune wordlist for booth-relevant domains