Implement Flask backend and web UI for security alert enrichment with VirusTotal, AbuseIPDB, and Shodan #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Built a Flask-based threat intelligence enrichment platform that aggregates data from VirusTotal, AbuseIPDB, and Shodan APIs for IP addresses and domains.
Backend Architecture
Flask API (
app.py)/api/enrich- POST endpoint accepting{indicator, type}, returns aggregated threat data/api/health- System status and API key configuration checkModular Enrichers (
enrichers/)virustotal.py- Detection stats, reputation scores (IP/domain)abuseipdb.py- Abuse confidence scores, report counts (IP only)shodan.py- Open ports, services, OS detection (IP only)Configurable constants:
MAX_AGE_DAYS=90,MAX_SERVICES_DISPLAY=5Frontend
Responsive SPA (
static/)Configuration
.env.example- API key template.gitignore- Excludes.env,__pycache__, virtual environmentsrequirements.txt- Flask 3.0.0, flask-cors 4.0.0, python-dotenv 1.0.0, requests 2.31.0Security
Screenshots
Main Interface

Results View

Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
api.abuseipdb.compython3 app.py(dns block)api.shodan.iopython3 app.py(dns block)www.virustotal.compython3 app.py(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.