Source code and details: https://github.com/umutcamliyurt/PortTripper
How it works
On startup PortTripper:
- Scans the configured port range and builds a whitelist of ports already in use by real services (first run only).
- Draws a cryptographically random sample of up to
-maxportsports from the range, excluding whitelisted ports. Usingcrypto/randfor selection means the open set is unpredictable to an attacker even if they know the configured range. - Binds TCP and UDP listeners on every chosen port.
- On TCP: accepts connections, holds them open for a configurable duration, then drops them, wasting the scanner’s threads and file descriptors.
- On UDP: reads and discards datagrams without replying, so ports appear
open|filteredto scanners rather thanclosed.
All real service ports are untouched because they are already bound before PortTripper starts, and the auto-generated whitelist tells PortTripper to skip them.


Nope, it just encrypts your traffic with https to avoid MITM attacks, and allows you to avoid opening more than two ports on your WAN. But if you simply open ports for every service, that’s usually a big easy “I’m running {service}” beacon. If I scan your WAN IP and find port 32400 open, I can make a reasonably safe bet that you’re running plex. But ports 80 and 443 won’t tell me anything about which services you’re running, because those are reserved for http and https traffic specifically. So I’d know that you’re running something, but I wouldn’t simply be able to guess which services specifically.
Sure, this listed honeypot may be able to help with that by making it appear as if every port is in use. But again, a reverse proxy would accomplish the same thing (without exposing all of your services directly) by simply shrouding all of your services behind 80 and 443.