Fast, asynchronous TCP, UDP, and ICMP scanning from a single C++ binary. PulseScan uses C++20 coroutines and Boost.Asio to scan many targets concurrently, emit human-readable reports or JSON, and monitor ports for changes.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/pulsescan-cpp example.com -p 22,80,443- Concurrent scans with a configurable
--max-inflightlimit. - TCP connect, banner collection, UDP probing, and privileged ICMP echo.
- One-shot reports, JSON lines for pipelines, or continuous change detection.
- DNS names, multiple hosts, IPv4 ranges/CIDRs, IPv4/IPv6 filtering, and reverse DNS.
- Landlock on Linux and Capsicum on FreeBSD, enabled by default where supported.
# Show only open web ports
./build/pulsescan-cpp example.com -p 80,443,8000-8010 --open
# Read service banners
./build/pulsescan-cpp example.com -p 22,80 -m banner
# Emit JSON lines
./build/pulsescan-cpp example.com --top-ports 20 --output json
# Report port-state changes every two seconds
./build/pulsescan-cpp example.com -p 80,443 --ping --interval 2
# ICMP echo; requires root or CAP_NET_RAW
sudo ./build/pulsescan-cpp 192.168.1.0/24 --icmp-ping -c 3Scan modes are connect (default), banner, and udp. Run
./build/pulsescan-cpp --help for every option.
Only scan systems and networks you own or have explicit permission to test. Unauthorized scanning may be illegal and disruptive.
