PortGuard is a free port reference and exposed-device lookup tool — see risky open ports on a network before they turn into doors for attackers.
PortGuard combines a port reference (service name, purpose, and relative risk for well-known ports) with an exposed-device lookup: enter an IP or search a port/service and PortGuard reports what's plausibly exposed on that host, so the risk of an open port is visible before it's exploited.
- Next.js App Router front end (
app/page.tsx) drives the port reference and lookup interface. app/api/device-lookup/route.tsvalidates the IPv4/IPv6 address, then queries the real Shodan host API server-side whenSHODAN_API_KEYis configured.- Styling is Tailwind CSS 4; the reference data and lookup flow require no login.
The real problem: "what's on this port" reference tables exist everywhere, but they don't tell you what's actually exposed on your address right now — that requires a real internet-wide scan index, not a static table.
The approach: device-lookup queries Shodan's real host API — the same index security researchers use — for the target IP, and degrades honestly: no key configured returns { unavailable: true } rather than a fabricated result, and a 404 from Shodan means "found: false," not an error.
One real number: the static port reference table covers real, risk-tagged entries (each with a low/medium/high risk label and remediation tip) — not just a port-to-service name mapping.
Not handled yet: domain lookups aren't supported yet, only raw IPv4/IPv6 — and the homepage "intelligence layer" is a decorative heuristic disconnected from the real Shodan lookup.
Production: https://portguard-six.vercel.app
| Layer | Technology |
|---|---|
| Framework | Next.js (App Router) |
| UI Library | React 19 |
| Language | TypeScript |
| Styling | Tailwind CSS 4 |
| Server Logic | Next.js API routes (/api/device-lookup, /api/intelligence) |
| Deployment | Vercel |