Awaiting target.
Pick a sample set above, or enter an indicator. Mock mode works with no API keys — flip to LIVE once your keys are wired in Settings.
API COMPARISONS
Enable, disable, reweight or rename each comparison source. Keys are added separately as encrypted secrets in Cloudflare — this panel never sees them, only whether they are present.
CENSYS COLLECTION FEEDS
Pull IPs from Censys Collections into the live feed panel. Admin configures collection UUIDs; each user enables/disables which feeds they see.
Enrichment // Compare — User Guide
Overview
This tool compares threat intelligence from multiple providers side by side, with Censys as the primary benchmark. Enter any indicator — IP, IP:port, domain, domain:port, URL, or hash — and see what each provider knows about it, where they agree, and where they diverge.
Getting started
Quick start: Type an IP address in the search bar and click Run Comparison. In Mock mode (the default), you'll see simulated data from all providers — no API keys needed. Switch to Live mode when you're ready to query real APIs.
Sample indicators: Below the search bar you'll find curated sets of IPs organized by profile — contested (providers disagree), known-bad (from threat feeds), and known-good. Click any chip to run a comparison instantly.
Indicator types
| Format | Example | What happens |
|---|---|---|
| IP address | 8.8.8.8 | Host lookup across all providers |
| IP:port | 67.202.31.122:443 | Censys web property lookup + port annotation on scanners |
| domain:port | example.com:443 | Censys web property + domain providers (VT, OTX, DomainTools) |
| domain | evil.example.com | Domain providers only (Censys host lookup requires an IP) |
| URL | https://evil.test/path | VirusTotal URL scan |
| Hash | 44d88612fea8... | VirusTotal file + OTX file (MD5, SHA1, or SHA256) |
Understanding the results
Consensus strip — A card for each provider showing its verdict (malicious / suspicious / benign / unknown), data freshness, and whether the result came from cache.
Censys vs. Other Tools panel — The main comparison view. Shows Censys's risk score as a gauge, the field consensus beside it, a divergence bar, and a narrative headline explaining the comparison. The narrative always leads with what Censys found.
Censys Actions panel (live mode only) — Appears when gaps are detected between Censys and other scanners:
- Freshness gap — Another scanner scanned more recently. Click "Rescan on Censys" to trigger a live rescan (~10 seconds).
- Port gaps — Other scanners see ports Censys doesn't. Click "Discover [port]" to trigger a live discovery scan for that specific port, or "Discover all" to scan all missing ports.
Attribute matrix — Every field from every provider, side by side. Rows include: reputation, category, threat labels, software, OS, services, ports, CVEs, KEV (CISA Known Exploited Vulnerabilities), DNS names, and more. A "—" means the provider doesn't have that data.
Provider cards — Detailed view per provider: all attributes, native score, data freshness, cache status, and a link to the provider's own UI.
Verdicts explained
Each provider assigns a verdict based on its own classification. This tool never invents a verdict — it only reports what the provider says:
| Provider type | Verdict source |
|---|---|
| Reputation (AbuseIPDB, VT, IPQS) | Provider's own score/engine counts |
| Threat (GreyNoise, OTX) | Provider's own classification/pulse count |
| Scanning (Censys) | Censys reputation score + threat labels |
| Scanning (Modat) | Modat threat tags (Malicious, C2, Compromised) |
| Scanning (Shodan) | No verdict — default benign (exposure data only) |
| Context (IPinfo) | No verdict — default benign (geo/ASN data only) |
Live threat feeds
The Compare tab includes live feed buttons that pull recent C2/malware IPs from public threat intelligence feeds:
- Feodo C2 — Dridex, Emotet, TrickBot, QakBot command-and-control servers (abuse.ch)
- ThreatFox — Cobalt Strike, AsyncRAT, Remcos, RedLine, and more (abuse.ch, last 24h)
- SSL Blacklist — IPs using malicious SSL certificates (abuse.ch)
Click any loaded IP chip to run a comparison. Use the ✕ button to close individual feeds or "close all" to clear everything.
Censys Collection feeds
Admins can configure Censys Collection UUIDs in Settings. These pull recently-added IPs from your Censys Collections and display them as clickable feeds in the Compare tab. Each user can toggle which collection feeds they see.
To add a collection (admin): Go to Settings → Censys Collection Feeds → + Add Collection. Enter the display name, the Collection UUID from Censys Platform, max IPs to fetch (1-100), and cache TTL.
Caching and freshness
Provider results are cached for 5 minutes to prevent API quota burn. Each source card shows whether data came from cache (amber "cached" label) and when it was fetched.
Check the Force fresh box next to Run Comparison to bypass the cache and pull live data from every provider. Use this for critical investigations where you need real-time verdicts.
Settings
Providers — Toggle which providers run for your comparisons. The status badge shows: CONNECTED ✓ (key present), KEY MISSING ⚠ (needs secret), or NO KEY NEEDED. Admins can change weights and labels; users can only toggle on/off.
Test button (admin) — Fires a test lookup against a safe IP (8.8.8.8) to verify the API key works. Shows the result inline.
Custom providers (admin) — Add any REST API as a comparison source. Provide the URL template with {indicator}, auth header, and JSON paths for risk/verdict fields.
Saving — Admin saves update global defaults (weights, labels, providers). Non-admin saves update per-user toggle preferences only.
Mock vs. Live mode
Mock — Synthetic data, deterministic by indicator. Uses seed profiles (benign, malicious, suspicious, contested) so providers simulate disagreement. No API keys needed. Great for demos and testing.
Live — Real API calls to each enabled provider. Requires configured API keys. Results are cached for 5 minutes. Use "Force fresh" for real-time data.
History
Every comparison is saved automatically. The History tab shows two views:
- Recent — Your latest lookups, newest first. Click any row to reload the full comparison.
- Most contested — Indicators ranked by divergence score — where providers disagree the most.
Users see their own history; admins see all users' history.
Keyboard shortcuts
Press Enter in the search bar to run a comparison. No other keyboard shortcuts currently — the tool is designed for click-driven workflows.
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Provider shows "NO DATA" | API returned empty or rejected | Check the error message on the card. Run the TEST button in Settings to verify the key. |
| Provider shows "NOT CONFIGURED" | API key not set | Add the secret in Cloudflare dashboard (Settings → Variables and Secrets → Encrypt). |
| Provider shows "ERROR" | API call failed | Check the HTTP status in the error message. Common: 401 (bad key), 403 (insufficient plan), 429 (rate limited). |
| All providers show cached data | Results within 5-min cache window | Check "Force fresh" and re-run, or wait for cache expiry. |
| Provider doesn't appear in results | Disabled in your Settings | Go to Settings, toggle the provider on, and save. |
| Censys shows "unknown" verdict | Plan doesn't include reputation data | Reputation and threat labels require paid Censys tiers. Exposure data (services, ports, software) still shows. |
| CVEs show "—" for Censys | Plan doesn't include CVE Context | CVE data is an Enterprise add-on. Check the Raw Data tab in Censys Platform UI. |
| Collection feed shows error | Collection UUID wrong or API auth issue | Verify the UUID in Censys Platform and check that CENSYS_PAT + CENSYS_ORG_ID are set. |
Admin guide
Admin users (those listed in ADMIN_EMAILS or promoted by another admin) have additional capabilities:
| Feature | Where | Details |
|---|---|---|
| Provider weights + labels | Settings → Save | Adjust confidence weights (0-1) that affect the aggregate risk score. Changes apply org-wide. |
| Custom providers | Settings → + Add Custom API | Add any REST API that returns JSON. Provide the URL with {indicator}, auth header, and response field paths. |
| Test API keys | Settings → TEST button | Fires a live test lookup (8.8.8.8 or google.com) to verify each provider's key works. |
| Collection feeds | Settings → Censys Collection Feeds | Add Censys Collection UUIDs. IPs from these collections appear in the Compare tab for all users. |
| User management | POST/PATCH/DELETE /api/users | Add, approve/suspend, change roles, or remove users. Last active admin cannot be removed. |
| Domain allowlist | POST/DELETE /api/domains | Control which email domains can self-register. Users from allowed domains start as "pending" until activated. |
| Audit log | GET /api/audit | View timestamped log of all auth and admin actions (logins, config changes, user management). |
Note: User management, domain allowlist, and audit log are currently API-only (no UI panels yet). Use the browser console or curl to access them.
Provider reference
| Provider | Type | Key fields extracted | Secret name(s) |
|---|---|---|---|
| Censys (host) | Scanning | Software, OS, CVEs, KEV, services, ports, DNS, reputation, threat labels, city | CENSYS_PAT + CENSYS_ORG_ID |
| Censys (web property) | Scanning | HTTP title, software, TLS (issuer/subject/version), CVEs, KEV, server | (same) |
| Shodan InternetDB | Scanning | Services, software (CPE), ports, CVEs, hostnames | None (free) |
| Shodan (full) | Scanning | Services, software, OS, ports, CVEs, ISP, org, hostnames | SHODAN_API_KEY |
| Modat Magnify | Scanning | Device DNA, OS, technologies, HTTP title, JARM, TLS issuer, CVEs, services, ports, PassiveDNS | MODAT_API_KEY |
| GreyNoise | Threat | Classification (malicious/benign), actor, noise/RIOT | GREYNOISE_API_KEY |
| AbuseIPDB | Reputation | Abuse confidence, ISP, domain, hostnames, Tor flag, reports | ABUSEIPDB_API_KEY |
| VirusTotal | Reputation | Engine verdicts, threat classification, reputation, ASN, network | VT_API_KEY |
| AlienVault OTX | Reputation | Pulse count, malware families, tags | OTX_API_KEY |
| IPinfo | Context | Org, city, region, country, hostname | IPINFO_TOKEN |
| IPQualityScore | Reputation | Fraud score, proxy/VPN/Tor, org, abuse velocity | IPQS_API_KEY |
| DomainTools Iris | Reputation | Domain risk score (domain-only) | DOMAINTOOLS_API_USERNAME + DOMAINTOOLS_API_KEY |