Skip to content

Repository files navigation

PulseScan C++

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.

PulseScan scanning a public host and detecting a port going online and offline

Quick start

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/pulsescan-cpp example.com -p 22,80,443

Why PulseScan

  • Concurrent scans with a configurable --max-inflight limit.
  • 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.

Common commands

# 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 3

Scan modes are connect (default), banner, and udp. Run ./build/pulsescan-cpp --help for every option.

Documentation

Responsible use

Only scan systems and networks you own or have explicit permission to test. Unauthorized scanning may be illegal and disruptive.

About

C++ Cross Platform TCP/UDP/ICMP Port Scanner targeting simple network reporting and diagnostics

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages