- Saved searches
- Use saved searches to filter your results more quickly
- License
- RustScan/RustScan
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- RustScan
- 🤔 What is this?
- ✨ Features
- ‼️ Important Links
- 🙋 Table of Contents
- 🔭 Why RustScan?
- 🧋 Speed
- ⚙️ Extensible
- 🌊 Adaptive
- 👩🦯 Accessible
- 📖 Full Installation Guide
- 🦊 Community Distributions
- 🤸 Usage
- 🎪 Community
- Contributors ✨
- Saved searches
- Use saved searches to filter your results more quickly
- Installation Guide
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
License
RustScan/RustScan
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
The Modern Port Scanner.
Fast, smart, effective.
🐋 Docker (Recommended) | 👩💻 Kali / Debian | 🏗️ Arch | 🔧 Homebrew |
---|---|---|---|
docker pull rustscan/rustscan:2.1.1 Usage | kali | yay -S rustscan | brew install rustscan |
The Modern Port Scanner. Find ports quickly (3 seconds at its fastest). Run scripts through our scripting engine (Python, Lua, Shell supported).
- Scans all 65k ports in 3 seconds.
- Full scripting engine support. Automatically pipe results into Nmap, or use our scripts (or write your own) to do whatever you want.
- Adaptive learning. RustScan improves the more you use it. No bloated machine learning here, just basic maths.
- The usuals you would expect. IPv6, CIDR, file input and more.
- Automatically pipes ports into Nmap.
RustScan is a modern take on the port scanner. Sleek & fast. All while providing extensive extendability to you.
Not to mention RustScan uses Adaptive Learning to improve itself over time, making it the best port scanner for you.
Speed is guaranteed via RustScan. However, if you want to run a slow scan due to stealth that is possible too.
We have tests that check to see if RustScan is significantly slower than the previous version. If it is, the continuous integration fails and we can’t commit code to master unless we make it faster.
HyperFine is used to monitor RustScan’s performance over time to answer the question «Are we getting faster? Are we getting slower?».
Every pull request is reviewed by 1 person, but more often than not 2 people review it. We test it manually and make sure the code doesn’t affect performance negatively.
RustScan piping results into the custom Python script
RustScan has a new scripting engine which allows anyone to write scripts in most languages. Python, Lua, Shell are all supported.
Want to take your found ports and pipe them into Nmap for further analysis? That’s possible. Want to run smb-enum if SMB is found open? Possible.
The possibilities are endless — and you can write scripts in whatever language you feel comfortable with.
RustScan automatically fine-tuning itself to match the host OS.
RustScan has a cool set of features called «Adaptive Learning». These features «learn» about the environment you are scanning and how you use RustScan to improve itself over time.
This is an umbrella term we use for any feature that fits this criteria. The list is constantly changing, so check out our wiki for more information.
RustScan is one of the first penetration testing tools that aims to be entirely accessible.
RustScan has continuous integration testing that aims to make sure it is accessible, and we are constantly working on ways to improve our accessibility and make sure everyone can use RustScan.
Here are all of RustScan’s community distributions.
If you maintain a community distribution and want it listed here, leave an issue / pull request / Discord message or however you want to let us know.
We also have documentation about our config file here.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
About
RustScan
➡️ Discord | Installation Guide | Usage Guide ⬅️
The Modern Port Scanner.
Fast, smart, effective.
🐋 Docker (Recommended) | 👩💻 Kali / Debian | 🏗️ Arch | 🔧 Homebrew |
---|---|---|---|
docker pull rustscan/rustscan:2.0.0 Usage | Read the install guide | yay -S rustscan | brew install rustscan |
🤔 What is this?
The Modern Port Scanner. Find ports quickly (3 seconds at its fastest). Run scripts through our scripting engine (Python, Lua, Shell supported).
✨ Features
- Scans all 65k ports in 3 seconds.
- Full scripting engine support. Automatically pipe results into Nmap, or use our scripts (or write your own) to do whatever you want.
- Adaptive learning. RustScan improves the more you use it. No bloated machine learning here, just basic maths.
- The usuals you would expect. IPv6, CIDR, file input and more.
- Automatically pipes ports into Nmap.
‼️ Important Links
🙋 Table of Contents
🔭 Why RustScan?
RustScan is a modern take on the port scanner. Sleek & fast. All while providing extensive extendability to you.
Not to mention RustScan uses Adaptive Learning to improve itself over time, making it the best port scanner for you.
🧋 Speed
Speed is guaranteed via RustScan. However, if you want to run a slow scan due to stealth that is possible too.
We have tests that check to see if RustScan is significantly slower than the previous version. If it is, the continuous integration fails and we can’t commit code to master unless we make it faster.
HyperFine is used to monitor RustScan’s performance over time to answer the question “Are we getting faster? Are we getting slower?”.
Every pull request is reviewed by 1 person, but more often than not 2 people review it. We test it manually and make sure the code doesn’t affect performance negatively.
⚙️ Extensible
RustScan piping results into the custom Python script
RustScan has a new scripting engine which allows anyone to write scripts in most languages. Python, Lua, Shell are all supported.
Want to take your found ports and pipe them into Nmap for further analysis? That’s possible. Want to run smb-enum if SMB is found open? Possible.
The possibilities are endless – and you can write scripts in whatever language you feel comfortable with.
🌊 Adaptive
RustScan automatically fine-tuning itself to match the host OS.
RustScan has a cool set of features called “Adaptive Learning”. These features “learn” about the environment you are scanning and how you use RustScan to improve itself over time.
This is an umbrella term we use for any feature that fits this criteria. The list is constantly changing, so check out our wiki for more information.
👩🦯 Accessible
RustScan is one of the first penetration testing tools that aims to be entirely accessible.
RustScan has continuous integration testing that aims to make sure it is accessible, and we are constantly working on ways to improve our accessibility and make sure everyone can use RustScan.
📖 Full Installation Guide
🦊 Community Distributions
Here are all of RustScan’s community distributions.
If you maintain a community distribution and want it listed here, leave an issue / pull request / Discord message or however you want to let us know.
🤸 Usage
We also have documentation about our config file here.
🎪 Community
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Installation Guide
Clone this wiki locally
You need Nmap. If you have Kali Linux or Parrot OS installed, you already have Nmap. If not, follow the nmap install guide.
The easiest way to install RustScan is to use one of the packages provided for your system, such as HomeBrew or Yay for Arch Linux.
The most universal way is to use cargo , Rust’s built in package manager (think Pip but for Rust). Follow this guide to installing Rust & Cargo.
If you face any issues at all, please leave a GitHub issue. I have only tested this on Linux, so there may be issues for Mac OS or Windows.
Note: sometimes Rust doesn’t add Cargo to the path. Please see this issue for how to fix that.
Download the .deb file from the releases page:
Run the command dpkg -i on the file.
Note: sometimes you can double click the file to achieve the same result.
Docker is the recommended way of installing RustScan. This is because:
- It has a high open file descriptor limit, which is one of the main problems with RustScan. Now you don’t have to fiddle around trying to understand your OS.
- It works on all systems, regardless of OS. Even Windows, which we don’t officially support.
- The Docker image uses the latest build from Cargo, our main source-of-truth package. This means that you will always be using the latest version.
- No need to install Rust, Cargo, or Nmap.
Once Docker is installed, you can either build your own image using the Dockerfile (alpine) provided in the repo, or alternatively, use the published Docker image like below (most convenient)
Please see our DockerHub for further info, however, note that we have two Docker images:
rustscan/rustscan:alpine rustscan/rustscan:latest
We strongly recommend using the alpine tag, as this is the latest major — stable — release of RustScan. This READMDE uses the alpine image by default, however, note that the latest image is considered experimental.
Simply run this command against the IP you want to target:
docker run -it --rm --name rustscan rustscan/rustscan:alpine rustscan arguments here> ip address to scan>
Note: this will scan the Docker’s localhost, not your own.
Once done, you will no longer need to re-download the image (except when RustScan updates) and can use RustScan like a normal application.
You will have to run this command every time, so we suggest aliasing it to something memorable.
alias rustscan='docker run -it --rm --name rustscan rustscan/rustscan:alpine'
rustscan 127.0.0.1 -t 500 -b 1500 -- -A
git clone https://github.com/RustScan/RustScan.git
Ensure you navigate to the download location of the repo:
cd /path/to/download/RustScan
docker build -t yourimagename> .
Note for Mac users Mac OS has a very, very small ulimit size. This will negatively impact RustScan by a significant amount. Please use the Docker container, or tell RustScan to up the ulimit size on every run.
- Git clone the repo.
- Install Rust. You can do this with curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.rustup.rs | sh which I took from the Rust website https://www.rust-lang.org/tools/install
- cd into the Git repo, and run cargo build —release
- The binary is located at target/release/rustscan
- Symlink to the binary or something. Whatever you want!
Here are all of RustScan’s community distributions.
If you maintain a community distribution and want it listed here, leave an issue / pull request / Discord message or however you want to let us know.
Often referred to as «quiet» mode, the -q switch makes things go quieter!
rustscan -a 127.0.0.1 -q —range 1-10000