Skip to content
/ xpscan Public

A high-performance, multithreaded TCP port scanner for linux

License

Notifications You must be signed in to change notification settings

Sidatii/xpscan

Repository files navigation

xpscan logo

XP-SCAN

A high-performance, multithreaded TCP port scanner for Linux.

Demo

xpscan screen 1

---------------------

xpscan screen 2

Authors

Dependencies

1- cMake 2- g++ 2- git

Features

  • Open ports and service names
  • Custom port range scanning
  • Full port range scanning
  • Json and text export format

Non-Blocking Architecture

Unlike traditional scanners that wait (block) for each connection to time out, xpscan utilizes:

  • O_NONBLOCK: Sockets are set to non-blocking mode immediately after creation.
  • select(): Multiplexing is used to monitor socket writability with a precise 500ms window.
  • Thread Pooling: A sliding window of threads ensures maximum CPU utilization without hitting OS file descriptor limits.

Configuration

The tool follows the XDG Base Directory Specification, storing persistent configurations in ~/.config/.xpscan/path.conf.

Installation

Install xpscan using curl

bash <(curl -sSL https://raw.githubusercontent.com/Sidatii/xpscan/refs/heads/master/install.sh)

Run Locally

Clone the project

  git clone https://github.com/Sidatii/xpscan

Go to the project directory

  cd xpscan

Make build directory

  mkdir build && cd build

Compile the project

  cmake ..
  make

Run the binary

  ./xpscan

Usage/Examples

xpscan <IP> [OPTIONS]
# No args -> interactive session
xpscan 8.8.8.8 

# Full range scan
xpscan 8.8.8.8 --full

# Export result to json/txt
xpscan 8.8.8.8 --full --json
xpscan 8.8.8.8 --full --txt

Tech Stack

Dev: C++

Build: cMake, Make

About

A high-performance, multithreaded TCP port scanner for linux

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •