#port #scan #port-scanner #tokio #docker #networking

app scanr

ScanR: A lightweight, fast, and configurable port scanner built in Rust for reliable multi-platform network scanning

12 releases

0.1.13 Dec 9, 2024
0.1.12 Dec 9, 2024
0.1.10 Oct 31, 2024

#182 in Command line utilities

Download history 308/week @ 2024-10-21 491/week @ 2024-10-28 2/week @ 2024-11-04 3/week @ 2024-11-18 144/week @ 2024-12-02 367/week @ 2024-12-09

514 downloads per month

MIT license

1MB
1K SLoC

🕵🏻 ScanR

 ____                       ____
/ ___|   ___   __ _  _ __  |  _ \
\___ \  / __| / _` || '_ \ | |_) |
 ___) || (__ | (_| || | | ||  _ <
|____/  \___| \__,_||_| |_||_| \_\

🕵🏻 ScanR: A lightweight, fast, and configurable port scanner built in Rust for reliable multi-platform network scanning.

ScanR

🚀 Installation

To install scanr, simply clone the repository and follow the instructions below:

git clone git@github.com:trinhminhtriet/scanr.git
cd scanr

cargo build --release
cp ./target/release/scanr /usr/local/bin/
scanr --version

Running the below command will globally install the scanr binary.

cargo install scanr

Optionally, you can add ~/.cargo/bin to your PATH if it's not already there

echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

💡 Usage

Available command line arguments

argument result
[string] The address or IP to scan. [default: 127.0.0.1]
-a Scan every port, from 1 to 65535, conflicts with -p
-c [number] How many concurrent request should be made. [default: 1000]
-m Monochrome mode - won't colourize the output [default: false]
-p [number / string] Inclusive port range to scan, accepts either a range: -300, 101-200, or a single port 80, conflicts with -a [default: -1000]
-r [number] Retry attempts per port. [default: 1]
-t [number] Timeout for each request in milliseconds. [default: 2000]
-6 Scan the IPv6 address instead of IPv4, [default: false]

Examples

# Scan github.com using the default settings
scanr github.com

# Scan default address [127.0.0.1], all ports [1-65535],
# 2048 concurrent requests, 500ms timeout, 0 retries, IPv4
scanr -a -c 2048 -t 500 -r 0

# Scan www.google.com, ports 10-600,
# 500 concurrent requests, 3000ms timeout, default retries [1], IPv4
scanr www.google.com -p 10-600 -c 500 -t 3000

# Scan www.digitalocean.com, ports 1-100
# default concurrent requests[1000], 1000ms timeout, and use IPv6 address
scanr www.digitalocean.com -p -100 -t 1000 -6

# Scan www.bbc.com, port 443 only
# default concurrent requests[1000], default timeout[2000ms], 6 retries, IPv4
scanr www.bbc.com -p 443 -r 6

🗑️ Uninstallation

Running the below command will globally uninstall the scanr binary.

cargo uninstall scanr

Remove the project repo

rm -rf /path/to/git/clone/scanr

🤝 How to contribute

We welcome contributions!

  • Fork this repository;
  • Create a branch with your feature: git checkout -b my-feature;
  • Commit your changes: git commit -m "feat: my new feature";
  • Push to your branch: git push origin my-feature.

Once your pull request has been merged, you can delete your branch.

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

Dependencies

~5–14MB
~163K SLoC