πŸ€– The Modern Port Scanner πŸ€–

Overview

➑️ Discord | Installation Guide | Usage Guide ⬅️

The Modern Port Scanner.
Fast, smart, effective.

AUR version GitHub All Releases Crates.io Discord Actions


πŸ‹ 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?

fast

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

Installation Guide Documentation Discord
πŸ“– Installation Guide πŸ“š Documentation 🦜 Discord

πŸ™‹ 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

fast

Speed is guaranteed via RustScan. However, if you want to run a slow scan due to stealth that is possible too.

Firstly, let's talk code.

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.

Read more here.

βš™οΈ Extensible

scripts

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.

Read more here.

🌊 Adaptive

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

fast

RustScan is one of the first penetration testing tools that aims to be entirely accessible.

Most penetration testing tools are not accessible, which negatively affects the whole industry.

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

You can find our guide here.

🦊 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.

Packaging status

🀸 Usage

We have 2 usage guides. Basic Usage and Things you may want to do.

We also have documentation about our config file here.

πŸŽͺ Community

Read this to learn how to contribute.

Contributors ✨

All Contributors

Thanks goes to these wonderful people (emoji key):


Brandon

πŸš‡ ⚠️ πŸ’» 🎨

SakiiR

πŸ’» πŸ›

smackhack

πŸ€” πŸ’‘

Bernardo Araujo

πŸ’» πŸ› 🎨

Izzy Whistlecroft

πŸ›

imlonghao

πŸ› 🚧

royharoush

πŸ€” 🎨

Atul Bhosale

πŸ’»

Thomas Gotwig

πŸ“¦

RΓ©mi Gourdon

πŸ“– πŸ’»

Ben (CMNatic)

πŸ’» πŸ“– 🎨

Alessandro Ferrari

πŸ–‹

Phenomite

πŸ–‹

Sandro

πŸ–‹ πŸ› πŸ’»

Cass

πŸ“¦ πŸ’» πŸ›

Niklas Mohrin

πŸ“– πŸ’» πŸ›

Artem Polishchuk

πŸ“¦

buermarc

πŸ’»

bergabman

πŸ’» πŸ› 🎨

Dmitry Savintsev

πŸ’»

Sebastian Andersson

πŸ’»

Matt Corbin

πŸ’»

RootSploit

πŸ“

eiffel-fl

πŸ’»

Y.Horie

πŸ’»

Oskar

πŸ’» ⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • Allow for multiple IP scanning

    Allow for multiple IP scanning

    I think it'd be nice to be able to run RustScan on multiple IPs, either through:

    • stdin (comma-separated IPs?)
    • a file (as in nmap's iL flag).

    Thanks for the nice tool! πŸ™

    help wanted feature_request 
    opened by ophirharpaz 33
  • Add tries to scan_socket

    Add tries to scan_socket

    Hi.

    I added a number of tries to scan_socket, by default the number of try is 1 but it can be set with command line option --tries. This should close #38.

    I am not a Rust expert, so please let me know if I wrote something wrong or not elegant. Moreover, I am not sure of my code for the Config part, so this part needs to be reviewed.

    Best regards.

    opened by eiffel-fl 25
  • Provide JSON output option

    Provide JSON output option

    Hey! This should close #213.

    The solution was pretty straightforward. I was wondering whether it would be nicer to have a flag that outputs the results as JSON to the console so they could be piped into another process or get redirected to a file. I also left a TODO at the merge_required part, because I was not sure whether I had to add something there.

    Let me know what you think!

    opened by niklasmohrin 21
  • Add Travis configuration to publish doc to GitHub pages

    Add Travis configuration to publish doc to GitHub pages

    Closes #89

    Hi!

    I had a look at the link you shared the other day (which rendered poorly on my end too) and found the original source for the snippet.

    It seems possible to get it running without too much hassle. My pull request adds the after_success phase to .travis.yml and I believe the proper URL for the GitHub pages documentation to the README.md.

    You will need to generate a token with a public_repo scope.

    Then store and encrypt the token in an environment variable called GITHUB_TOKEN with the command below.

    travis encrypt GITHUB_TOKEN=<THE_TOKEN> --add env.global
    

    This should have added the proper variable to .travis.yml and after committing to this pull request the environment variable should now get populated and the cargo doc will get triggered on master.

    Let me know if there are any issues!

    opened by remigourdon 17
  • Better enforce clippy lints

    Better enforce clippy lints

    Hey there, it's me again :D

    I just saw that the clippy lints are run, but the annotations cannot be added to forked repos, so PR diffs cannot be annotated. To enforce the lints, I propose the following changes:

    1. Project-wide deny(clippy::all): This will have clippy error if any of the default warnings is emitted
    2. Project-wide warn(clippy::pedantic) with whitelisting: This will nit-pick things, which is why these are just warnings. Still, I would rather allow specific lints (like I did already) where needed if it is reasonable.
    3. Finally, make the clippy workflow a required pass, so that no new code that doesn't pass the default lints can be merged (I haven't figured out how to do this yet, is this some maintainer setting?)

    I think 1) and 3) are needed, 2) is maybe a bit radical. Still, I think it would be a nice addition. Because the annotations are still there for code that is already on this repository, these lints can be fixed when someone is already working on the affected code. Let me know what you think!

    opened by niklasmohrin 13
  • Rustscan missing ports, even with big timeout

    Rustscan missing ports, even with big timeout

    Describe the bug Rustcan is missing open ports (80 sometimes and 443 all the times for hackerone.com for instance) Nmap doesn't

    To Reproduce

    Using hackerone.com for the test

    host hackerone.com
    hackerone.com has address 104.16.100.52
    hackerone.com has address 104.16.99.52
    ....
    
    nmap -p80,443 104.16.99.52 -sV                                             
    Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-05 21:45 CEST          
    Nmap scan report for 104.16.99.52                                            
    Host is up (0.025s latency).                                                 
                                                                                 
    PORT    STATE SERVICE   VERSION                                              
    80/tcp  open  http      cloudflare                                           
    443/tcp open  ssl/https cloudflare                                           
    2 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/subm
    it.cgi?new-service :                                                                                                                                      
    ==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
    SF-Port80-TCP:V=7.80%I=7%D=8/5%Time=5F2B0C5D%P=x86
    ...
    
    rustscan -b 500 -t 10000 104.16.99.52
    
         _____           _    _____
        |  __ \         | |  / ____|
        | |__) |   _ ___| |_| (___   ___ __ _ _ __
        |  _  / | | / __| __|\___ \ / __/ _` | '_ \
        | | \ \ |_| \__ \ |_ ____) | (_| (_| | | | |
        |_|  \_\__,_|___/\__|_____/ \___\__,_|_| |_|
        Faster nmap scanning with rust.
    
    The config file is expected to be at "/home/bob/.config/rustscan/config.toml"
    
    Your file descriptor limit is higher than the batch size. You can potentially increase the speed by increasing the batch size, but this may cause harm to sensitive servers. Your limit is 1024, try batch size 1023.
    
    The batch size is 500
    
    Scanning ports from 104.16.99.52
    
    Open 80
    Open 2052
    Open 2053
    ...
    

    Expected behavior Report of port 80 and 443 open

    Context rustscan v1.6.0

    bug 
    opened by Kiblyn11 11
  • Feature/create alpine based dockerfile

    Feature/create alpine based dockerfile

    Here's a simple multi-stage docker file with the bare minimum.

    It probably needs a bit of tweaking and testing, though it seems to find things locally :)

    opened by Hydragyrum 11
  • Config file

    Config file

    Something that adapts to the user's host is an awesome idea! :)

    It can also learn or allow a config file for default commands in the future, things like:

    • Amount of parallel nmap processes (assuming we go through this route)
    • Only TCP or UDP
    • Saving these scans to a default location and so on.

    Originally posted by @bernardoamc in https://github.com/brandonskerritt/RustScan/issues/69#issuecomment-663894135

    feature_request child issue 
    opened by bee-san 11
  • use  `ulimit` syscall to read the value and then set it automatically depending on what is available πŸ‘

    use `ulimit` syscall to read the value and then set it automatically depending on what is available πŸ‘

    I think the best way would be to use the ulimit syscall to read the value and then set it automatically depending on what is available πŸ‘

    And then, notify the user about this "The current FD limit is too small, increase is blah blah".

    Originally posted by @SakiiR in https://github.com/brandonskerritt/RustScan/issues/21#issuecomment-662915856

    feature_request 
    opened by bee-san 11
  • Create benchmark tests using Criterion.rs

    Create benchmark tests using Criterion.rs

    Problem

    RustScan is designed to be fast, and to do this we need to benchmark our program.

    Solution

    https://github.com/bheisler/criterion.rs

    Criterion is a Rust library for benchmarking code using a test.

    Things you need to know

    • The address you should scan is rustscan.cmnatic.co.uk.
    • The batch size and ulimit should be fixed (pick anything you want).
    • It should scan all ports.

    To use RustScan, observe one of the tests in the scanner directory. This is from mod.rs

        fn scanner_runs() {
            // Makes sure the program still runs and doesn't panic
            let addrs = vec!["127.0.0.1".parse::<IpAddr>().unwrap()];
            let range = PortRange {
                start: 1,
                end: 1_000,
            };
            let strategy = PortStrategy::pick(Some(range), None, ScanOrder::Serial);
            let scanner = Scanner::new(&addrs, 10, Duration::from_millis(100), true, strategy, true);
            block_on(scanner.run());
            // if the scan fails, it wouldn't be able to assert_eq! as it panicked!
            assert_eq!(1, 1);
        }
    

    If you have any questions, please get in touch! :)

    good first issue feature_request hacktoberfest 
    opened by bee-san 10
  • Better Arch Linux PKGBUILd

    Better Arch Linux PKGBUILd

    The current PKGBUILD file is:

    # Maintainer: Bee <[email protected]>
    pkgname=rustscan-bin
    pkgver=1.2.0
    pkgrel=1
    pkgdesc="Faster Nmap Scanning with Rust"
    url="https://github.com/brandonskerritt/rustscan"
    license=("MIT")
    arch=("x86_64")
    provides=("rustscan")
    depends=('rustup')
    
    package() {
    	rustup toolchain install stable && cargo install rustscan
    }
    

    This is not located in this repository. Instead, I cloned the AUR version to get the file.

    I know very little about publishing to the AUR.

    This isn't a nice solution, at least I don't believe it to be, because it simply installs Rust and then uses Rust's Cargo to install RustScan.

    With the Homebrew version, it downloads the tar file and builds the binary. https://github.com/brandonskerritt/homebrew-rustscan/blob/master/Formula/rustscan.rb

    Can someone with more Arch experience than I please make the PKGBUILD better, or help suggest how to make the install easier?

    For reference, here is a list of related issues: https://github.com/brandonskerritt/RustScan/issues/49 https://github.com/brandonskerritt/RustScan/issues/17

    help wanted good first issue feature_request 
    opened by bee-san 10
  • Bump cidr-utils from 0.5.6 to 0.5.10

    Bump cidr-utils from 0.5.6 to 0.5.10

    Bumps cidr-utils from 0.5.6 to 0.5.10.

    Commits
    • aa8d236 bump version
    • 2c53689 add dependabot
    • 580e540 Merge pull request #12 from alexgartrell/patch-1
    • 8320416 Correct typo in Debug impl for Ipv4Cidr
    • ba2bb10 replace usize::max_value() with usize::MAX
    • 587b402 run the newest clippy
    • 350b68f bump version
    • 8fbcd8c Merge branch 'yotamofek-master'
    • c6287bb Merge branch 'master' of github.com:yotamofek/cidr-utils into yotamofek-master
    • c625084 run clippy
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Request: Show the service running of the open port without -A

    Request: Show the service running of the open port without -A

    Scanning with --no-nmap --ulimit 65535

    rustscan/rustscan:1.10.0 ***.***.*. --no-nmap --ulimit 65535

    show result

    Open *...:22 Open ***...**:38172

    Scanning with -- -A --ulimit 65535

    rustscan/rustscan:1.10.0 ***.***.*. -- -A --ulimit 65535

    show result

    Open *...:9100 Open ***...**:38172

    [~] Starting Nmap [>] The Nmap command to be run is nmap -A --ulimit 65535 -vvv -p 9100,38172 ***.***.*.

    PORT STATE SERVICE REASON VERSION 9100/tcp open jetdirect? syn-ack 38172/tcp open unknown syn-ack


    is there a way to make the RustScan show the service of the without using -A in nmap? make it show like this result on one line

    Open *...:9100- jetdirect? syn-ack Open ***...**:38172- unknown syn-ack

    opened by Moskitoz 0
  • Bump gcd from 2.1.0 to 2.2.0

    Bump gcd from 2.1.0 to 2.2.0

    Bumps gcd from 2.1.0 to 2.2.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump log from 0.4.16 to 0.4.17

    Bump log from 0.4.16 to 0.4.17

    Bumps log from 0.4.16 to 0.4.17.

    Changelog

    Sourced from log's changelog.

    [0.4.17] - 2022-04-29

    • Update kv_unstable internal dependencies.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump dirs from 3.0.2 to 4.0.0

    Bump dirs from 3.0.2 to 4.0.0

    Bumps dirs from 3.0.2 to 4.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(2.1.1)
  • 2.1.1(Nov 7, 2022)

    What’s Changed

    • Minor cosmetic changes (#453) @follow39
    • fix links to Docker & Kali wiki (#433) @Thijs0x57
    • Upgrade rlimit (#449) @Nugine
    • Improve doc for addresses (#457) @cph-w
    • Allow CLI customisation of config file path (#456) @cph-w
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Apr 27, 2022)

    What’s Changed

    • Supports M1 Macs πŸŽ‰

    • Update Cargo.lock file to support latest version of Rust (#435) @bee-san

    • Update tui.rs (#396) @0dayCTF

    • Bump futures from 0.3.7 to 0.3.13 (#358) @dependabot-preview

    • Bump rlimit from 0.5.2 to 0.5.4 (#360) @dependabot-preview

    • Bump cidr-utils from 0.5.0 to 0.5.1 (#367) @dependabot-preview

    • Bump anyhow from 1.0.34 to 1.0.40 (#368) @dependabot-preview

    • Bump serde from 1.0.117 to 1.0.124 (#361) @dependabot-preview

    • Partially fix #362: Fix examples (#363) @thomasqueirozb

    • Scripting engine arguments. Scan engine errors. (#325) @bergabman

    • Bump env_logger from 0.8.1 to 0.8.2 (#317) @dependabot-preview

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Nov 5, 2020)

    ⚠ Major Breaking Changes ⚠

    • You must now use rustscan -a 127.0.0.1 instead of rustscan 127.0.0.1. We held a vote and this won. Please use the addresses flag!

    Please see our documentation for more info how you can use the new addresses argument.

    Features

    • Scripting Engine Implementation (#242) @bergabman
    • Improved init_scripts error handling. (#300) @bergabman
    • Add tries to scan_socket (#266) @eiffel-fl
    • Make address an optional instead of a positional argument (#271) @bernardoamc

    Maintenance

    • Bump anyhow from 1.0.33 to 1.0.34 (#304) @dependabot-preview
    • Bump async-std from 1.6.5 to 1.7.0 (#306) @dependabot-preview
    • Redesign of README (#293) @bee-san
    • Bump futures from 0.3.6 to 0.3.7 (#302) @dependabot-preview
    • Better enforce clippy lints (#294) @niklasmohrin
    • Bump env_logger from 0.7.1 to 0.8.1 (#295) @dependabot-preview
    • docs: add okrplay as a contributor (#290) @allcontributors
    • Add tests for rustscan scripting engine (#286) (#289) @okrplay
    • docs: add niklasmohrin as a contributor (#288) @allcontributors
    • Add clippy linting and fix existing warnings (#287) @niklasmohrin
    • docs: add u5surf as a contributor (#285) @allcontributors
    • Bump serde from 1.0.116 to 1.0.117 (#278) @dependabot-preview
    • docs: add niklasmohrin as a contributor (#282) @allcontributors
    • docs: add eiffel-fl as a contributor (#281) @allcontributors
    • Bump toml from 0.5.6 to 0.5.7 (#270) @dependabot-preview
    • Bump structopt from 0.3.19 to 0.3.20 (#272) @dependabot-preview
    • docs: add rootsploit as a contributor (#274) @allcontributors
    • Bump structopt from 0.3.18 to 0.3.19 (#267) @dependabot-preview
    • Bump futures from 0.3.5 to 0.3.6 (#265) @dependabot-preview
    • docs: add mattcorbin as a contributor (#261) @allcontributors
    • docs: add bofh69 as a contributor (#256) @allcontributors
    • Add integration tests with timeout (#254) @bofh69
    • Update README for instructions for v.10.0 & add all releases to DockerHub (#251) @CMNatic

    Bugs

    • Changed the dns resolving to use std::net::ToSocketAddrs (#264) @shahar481
    • Add some instructions to create contributing development environment. (#298) @eiffel-fl
    • Fix Rlimit breaking change. (#283) (#284) @u5surf
    • Update .SRCINFO url (#268) @freddyb
    • Fix archives-generation from Makefile πŸ‘·β€β™‚οΈ (#263) @TGotwig
    • Docker: Fix cosmetic issues, change maintainer to rustscan (#249) @SuperSandro2000
    • Update documentation to include greppable (#253) @teofilomonteiro
    • Updated the person of README. (#255) @holmes-py
    • Added HomeBrew Bump + More CI Tests (#252) @bee-san
    Source code(tar.gz)
    Source code(zip)
  • 1.10.1(Sep 29, 2020)

  • 1.10.0(Sep 28, 2020)

    Features

    • Added DNS lookup using Google DNS, refactored IP code (#246) @bee-san
    • Take file of addresses as input (#237) @bee-san

    Maintenance

    • Refactored tests, introduced default function in test context for structs (#235) @bergabman
    • Increase code coverage (#236) @bee-san
    • Update Dockerfile to encourage layer caching (#241) @CMNatic
    • docs: add dmitris as a contributor (#232) @allcontributors
    • Bump structopt from 0.3.17 to 0.3.18 (#243) @dependabot-preview

    Bugs

    • Fix version tag typo in docker usage (#234) @CMNatic
    • Update README for v1.9.0 release (#233) @CMNatic
    Source code(tar.gz)
    Source code(zip)
    rustscan_1.10.0_amd64.deb(1.35 MB)
    rustscan_1.10.0_i386.deb(1.36 MB)
  • 1.9.0(Sep 20, 2020)

    ⚠️ Breaking Changes ⚠️

    --quiet mode is now renamed to --greppable. And this mode now returns an IP -> list like so:

    ➜ ./target/release/rustscan 127.0.0.1 --greppable
    127.0.0.1 -> [53,631,43163,43438,46624]
    

    Features

    • Now has a working accessible mode #230
    • Can use top X ports (top 1000 ports) if used via config file (this allows us to work on a larger feature which I think you will love, see #69 ) #230
    • Runtime measurement implementation, better debugging, and better error handling for unreachable hosts. (#225)
    • Add CIDR support (#200)
    • Introduce the -no-nmap option (#197)
    • Add configuration file (#185)

    Maintenance

    • socket_iterator: use itertools.iproducts for ip x ports set (#231)
    • docs: add bergabman as a contributor (#228)
    • Bump async-std from 1.6.3 to 1.6.4 (#226)
    • Updated README to reflect v1.8.0 DockerHub tag (#224)
    • Bump serde_derive from 1.0.115 to 1.0.116 (#216)
    • Bump serde from 1.0.115 to 1.0.116 (#215)
    • Introduce SocketIterator (#208)
    • docs: add bergabman as a contributor (#204)
    • Small improvement in the scanning engine. (#203)
    • docs: add buermarc as a contributor (#198)
    • Check '.config/rustscan/config.toml' for config (#195)
    • docs: add tim77 as a contributor (#182)
    • Add Fedora/CentOS installation instructions (#181)
    • README.md tweaks (#176)
    • docs: add SuperSandro2000 as a contributor (#180)
    • Optimize Dockerfile (#178)
    • docs: add niklasmohrin as a contributor (#177)

    Bugs

    • fix typo (#229)
    • Fix behaviour of --no-nmap flag (#221)
    • fixed debug log (#217)
    • Bugfixes (#206)
    • Fix incorrect timeout option in README (#205)
    • Update README.md (#194)
    Source code(tar.gz)
    Source code(zip)
    rustscan(43.10 MB)
    rustscan_1.8.0_amd64.deb(616.50 KB)
    rustscan_1.8.0_armhf.deb(539.36 KB)
    rustscan_1.8.0_i386.deb(615.29 KB)
  • 1.8.0(Aug 27, 2020)

    Features

    • Added Windows support thanks to @caass in #171
    • Allow randomised order for manual ports #161
    • Add --port and --range options #158
    • Released new docker image #155
    • Added host resolution #152
    • Added Makefile by @TGotwig #144
    • Added accessible mode #134
    • Added port scanning strategy #135

    Maintenance

    • Added the Git submodule for RustScan Scripting Engine
    • Reduced binary size #162
    • Removed -A from Nmap #160
    • Added top 1k ports in config file #159
    • Excluded unnecessary files #156
    • Added Travis config for GitHub pages in #140 by @remigourdon and @SuperSandro2000

    Bugs

    • #169
    • #165
    • #153
    • #163
    Source code(tar.gz)
    Source code(zip)
    rustscan(3.26 MB)
    rustscan_1.8.0_amd64.deb(532.91 KB)
    rustscan_1.8.0_armhf.deb(458.64 KB)
    rustscan_1.8.0_i386.deb(522.47 KB)
  • 1.7.1(Aug 7, 2020)

  • 1.6.0(Aug 4, 2020)

  • 1.5.2(Aug 4, 2020)

    Features

    • New distributions for Arm64, AMD64, i386 debs
    • New Docker Image
    • Added --appdirs flag to find the appdirs location
    • Added community package distributions to README

    Maintenance

    • Switched from u64 to u32 to support OS'
    • Refactored batch size to fix #58
    • Added new GitHub Action to verify README doesn't contain 404 links
    • Added bots to help the development of RustScan
    • Updated README #94 and #93
    • Started moving to Travis CI

    Bugs

    • Fixed bug where appdirs wasn't pointing to the complete directory
    • Fixed bug where automatic ulimit lowering wasn't working on systems with extremely low ulimits (< 250).
    • Fixed #116
    Source code(tar.gz)
    Source code(zip)
    rustscan_1.5.2_amd64.deb(629.03 KB)
    rustscan_1.5.2_armhf.deb(495.10 KB)
    rustscan_1.5.2_i386.deb(642.08 KB)
  • 1.4.0(Jul 31, 2020)

    Features

    • Added IPv6 support

    Maintenance

    • Added arguments in structopts for ipv6
    • socketaddr is now ipv4 and ipv6 (this speeds things up)
    • Added ipv6 testing
    • Edited Contributing.md to be more welcoming
    • Added Logging module
    • Added IPv6 to Nmap command

    Bugs

    • Fixed countless bugs in this new feature.
    Source code(tar.gz)
    Source code(zip)
    rustscan_1.4.0_amd64.deb(624.77 KB)
  • 1.3(Jul 29, 2020)

    Features

    • Quiet Mode -- run the scanner without Nmap

    Maintenance

    • Switched to ShellWords for Nmap arg parsing. Now -- "'(safe and vuln)'" works.
    • Switched to StructOpts for argparsing
    • Refactored the code so it's more OOP
    • Removed useless string conversions
    • Starting to switch to IPv6 support

    Bugs

    • Fixed bug where quiet mode printed with quotes
    Source code(tar.gz)
    Source code(zip)
    rustscan_1.3.0_amd64.deb(365.93 KB)
  • 1.2.2(Jul 25, 2020)

  • 1.2.0(Jul 24, 2020)

    Features

    • New Ulimit features. Automatically lowers it if too high, and tells you to increase it if too slow.
    • New argument to increase ulimit.
    • New quiet mode for easy catting / grepping of ports

    Maintenance

    • Warnings plastered around the app

    Bugs

    • Fixed bug where it was suggested to alter ulimit after user had altered ulimit
    Source code(tar.gz)
    Source code(zip)
    rustscan_1.2.0_amd64.deb(363.08 KB)
  • 1.0.1(Jul 19, 2020)

Owner
null
simple multi-threaded port scanner written in rust

knockson simple multi-threaded port scanner written in rust Install Using AUR https://aur.archlinux.org/packages/knockson-bin/ yay -Syu knockson-bin M

Josh MΓΌnte 4 Oct 5, 2022
A simple port scanner built using rust-lang

A simple port scanner built using rust-lang

Krisna Pranav 1 Nov 6, 2021
Dangerously fast dns/network/port scanner, all-in-one

Skanuvaty Dangerously fast dns/network/port scanner, all-in-one. Start with a domain, and we'll find everything about it. Features: Finds subdomains f

CCCC 701 Dec 31, 2022
A simple port sniffer(scanner) implementation with πŸ¦€

A simple port sniffer(scanner) implementation with ?? Install from crates.io crago install ports-sniffer From aur: yay -S ports-sniffer Arguments Argu

Anas Elgarhy 8 Oct 10, 2022
Http request smuggling vulnerability scanner

Request smuggler Http request smuggling vulnerability scanner Based on the amazing research by James Kettle. The tool can help to find servers that ma

null 204 Dec 18, 2022
Automated attack surface mapper and vulnerability scanner

Phaser Automated attack surface mapper and vulnerability scanner What is this? Phaser is a high-performance and automated attack surface mapper and vu

Sylvain Kerkour 74 Dec 16, 2022
Rust port of Ghidra's SLEIGH decompiler

Rust port of Ghidra's SLEIGH decompiler. This library allows you to decompile or translate machine code for multiple architectures.

Black Binary 33 Dec 27, 2022
A simple scanner that loops through ips and checks if a minecraft server is running on port 25565

scanolotl Scanolotl is a simple scanner that loops through ips and checks if a minecraft server is running on port 25565. Scanolotl can also preform a

JustFr33z 3 Jul 28, 2022
A high performance TCP SYN port scanner.

Armada A High-Performance TCP SYN scanner What is Armada? Armada is a high performance TCP SYN scanner. This is equivalent to the type of scanning tha

resync 259 Dec 19, 2022
simple multi-threaded port scanner written in rust

knockson simple multi-threaded port scanner written in rust Install Using AUR https://aur.archlinux.org/packages/knockson-bin/ yay -Syu knockson-bin M

Josh MΓΌnte 4 Oct 5, 2022
A simple port scanner built using rust-lang

A simple port scanner built using rust-lang

Krisna Pranav 1 Nov 6, 2021
Dangerously fast dns/network/port scanner, all-in-one

Skanuvaty Dangerously fast dns/network/port scanner, all-in-one. Start with a domain, and we'll find everything about it. Features: Finds subdomains f

CCCC 701 Dec 31, 2022
A simple port sniffer(scanner) implementation with πŸ¦€

A simple port sniffer(scanner) implementation with ?? Install from crates.io crago install ports-sniffer From aur: yay -S ports-sniffer Arguments Argu

Anas Elgarhy 8 Oct 10, 2022
A open port scanner.

opscan A open port scanner. Install With cargo cargo install --force opscan With docker docker run --rm -it sigoden/opscan opscan.nmap.org Binaries

null 17 Feb 19, 2023
A cross-platform serial port library in Rust. Provides a blocking I/O interface and port enumeration including USB device information.

Note: This is a fork of the original serialport-rs project on GitLab. Please note there have been some changes to both the supported targets and which

Serialport 128 Jan 4, 2023
An app which reads data from a serial port and serves it on a TCP port.

serial-to-tcp An app which reads data from a serial port and serves it on a TCP port. How to use Clone this repo and build the app as outlined below (

Mr. E 3 Oct 21, 2022
Http request smuggling vulnerability scanner

Request smuggler Http request smuggling vulnerability scanner Based on the amazing research by James Kettle. The tool can help to find servers that ma

null 204 Dec 18, 2022
Automated attack surface mapper and vulnerability scanner

Phaser Automated attack surface mapper and vulnerability scanner What is this? Phaser is a high-performance and automated attack surface mapper and vu

Sylvain Kerkour 74 Dec 16, 2022
Rusty Hog is a secret scanner built in Rust for performance, and based on TruffleHog which is written in Python.

Rusty Hog is a secret scanner built in Rust for performance, and based on TruffleHog which is written in Python. Rusty Hog provides the following bina

New Relic 306 Jan 4, 2023
A minimalistic cross-platform malware scanner with non-blocking realtime filesystem monitoring using YARA rules.

Sauron is a minimalistic, YARA based malware scanner with realtime filesystem monitoring written in Rust. Features Realtime scan of created and modifi

Simone Margaritelli 155 Dec 26, 2022