Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Nmap | 8,237 | 3 days ago | 765 | other | C | |||||
Nmap - the Network Mapper. Github mirror of official SVN repository. | ||||||||||
Smap | 2,403 | 4 months ago | 1 | August 03, 2022 | 1 | agpl-3.0 | Go | |||
a drop-in replacement for Nmap powered by shodan.io | ||||||||||
Sandmap | 1,372 | 8 months ago | 8 | gpl-3.0 | Shell | |||||
Nmap on steroids. Simple CLI with the ability to run pure Nmap engine, 31 modules with 459 scan profiles. | ||||||||||
Silver | 768 | 2 years ago | gpl-3.0 | Python | ||||||
Mass scan IPs for vulnerable services | ||||||||||
Onetwopunch | 557 | 5 years ago | 4 | mit | Shell | |||||
Use unicornscan to quickly scan all open ports, and then pass the open ports to nmap for detailed scans. | ||||||||||
Furious | 420 | 1 | 2 years ago | April 05, 2022 | 8 | gpl-3.0 | Go | |||
Golang IP/port scanner with SYN (stealth) scanning and device manufacturer identification | ||||||||||
Asnlookup | 288 | a year ago | 2 | mit | Python | |||||
Leverage ASN to look up IP addresses (IPv4 & IPv6) owned by a specific organization for reconnaissance purposes, then run port scanning on it. | ||||||||||
Divideandscan | 276 | 7 days ago | 21 | June 19, 2022 | 1 | bsd-2-clause | Python | |||
Divide full port scan results and use it for targeted Nmap runs | ||||||||||
Threader3000 | 239 | a year ago | 12 | July 31, 2020 | mit | Python | ||||
Multi-threaded Python Port Scanner with Nmap Integration | ||||||||||
Python3 Nmap | 216 | 4 | 2 days ago | 19 | October 22, 2022 | 4 | gpl-3.0 | Python | ||
A python 3 library which helps in using nmap port scanner. This is done by converting each nmap command into a callable python3 method or function. System administrators can now automatic nmap scans using python |
Divide Et Impera And Scan (and also merge the scan results)
DivideAndScan is used to efficiently automate port scanning routine by splitting it into 3 phases:
For the 1st phase a fast port scanner* is intended to be used, whose output is parsed and stored in a single file database (TinyDB). Next, during the 2nd phase individual Nmap scans are launched for each target with its set of open ports (multiprocessing is supported) according to the database data. Finally, in the 3rd phase separate Nmap outputs are merged into a single report in different formats (XML / HTML / simple text / grepable) with nMap_Merger. The visualization portion is provided by DrawNmap.
Potential use cases:
* Available port scanners:
DISCLAIMER. All information contained in this repository is provided for educational and research purposes only. The author is not responsible for any illegal use of this tool.
To successfully divide and scan we need to get some good port scanning tools (in the examples below GitHub releases are grabbed via eget).
Note: if you don't feel like messing with dependecies on your host OS, skip to the Docker part.
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb
pushd /tmp
wget https://github.com/ivre/masscan/archive/refs/heads/master.zip -O masscan-master.zip
unzip masscan-master.zip
cd masscan-master
make
sudo make install
popd && rm -rf /tmp/masscan-master*
eget -t 2.0.1 -a amd64 RustScan/RustScan --to /tmp/rustscan.deb
sudo dpkg -i /tmp/rustscan.deb && rm /tmp/rustscan.deb
sudo wget https://gist.github.com/snovvcrash/8b85b900bd928493cd1ae33b2df318d8/raw/fe8628396616c4bf7a3e25f2c9d1acc2f36af0c0/rustscan-ports-top1000.toml -O /root/.rustscan.toml
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan
sudo mkdir /opt/sx
sudo eget -s linux/amd64 v-byte-cpu/sx --to /opt/sx
sudo ln -sv /opt/sx/sx /usr/local/bin/sx
sudo mkdir /opt/pd
sudo eget -s linux/amd64 projectdiscovery/dnsx --to /opt/pd
sudo ln -sv /opt/pd/dnsx /usr/local/bin/dnsx
DivideAndScan is available on PyPI as divideandscan
, though I recommend installing it from GitHub with pipx in order to always have the bleeding-edge version:
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
There's also a release packed with shiv (large file size though):
# shiv -e das.divideandscan:main -o das.pyz divideandscan
~$ wget https://github.com/snovvcrash/DivideAndScan/releases/latest/download/das.pyz && chmod +x das.pyz
~$ ./das.pyz
For debbugging purposes you can set up a dev environment with poetry:
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
Note: DivideAndScan uses sudo to run all the port scanners, so it will ask for the password when scanning commands are invoked.
You can run DivideAndScan in a Docker container as follows:
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
Since the tool requires some input data and produces some output data, you should specify your current working directory as the mount point at /app
within the container. Also publishing port 8050 on host allows to access the Dash app used for Nmap reports visualization.
You may want to set an alias to make the base command shorter:
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das
Provide the Warning: please, make sure that you understand what you're doing, because nearly all port scanning tools can damage the system being tested if used improperly.
When the module starts its work, a directory |
Launch targeted Nmap scans with the
To start Nmap simultaneously in multiple processes, specify the
The output format is selected with Also, you can inspect the contents of the database with
|
In order to generate a report independently of the
Note: keep in mind that the |
Let's enumerate open ports for all live machines on Hack The Box.
-p1-49151
. On the second screenshot I'm reviewing scan results by hosts and by ports:~$ das -db htb add -rm masscan '-e tun0 --rate 1000 -iL hosts.txt -p1-49151 --open'
~$ das -db htb scan -hosts all -show
~$ das -db htb scan -ports all -show
~$ das -db htb scan -hosts all -oA report
~$ das -db htb scan -hosts all -oA report -nmap '-Pn -sVC -O' -parallel
You can pair your favourite port scanner with DivideAndScan by implementing a single parse method for its output in das/parsers/DUMMY_SCANNER.py
(see example for masscan):
from das.parsers import IAddPortscanOutput
class AddPortscanOutput(IAddPortscanOutput):
"""Child class for processing DUMMY_SCANNER output."""
def parse(self):
"""
DUMMY_SCANNER raw output parser.
:return: a pair of values (portscan raw output filename, number of hosts added to DB)
:rtype: tuple
"""
hosts = set()
for line in self.portscan_raw:
# DUMMY_SCANNER parser implementation
pass
return (self.portscan_out, len(hosts))
usage: das [-h] [-db DB] {db,add,scan,dns,report,parse,draw,tree,help} ...
-----------------------------------------------------------------------------------------------
| ________ .__ .__ .___ _____ .____________ |
| \______ \ |__|__ _|__| __| _/____ / _ \ ____ __| _/ _____/ ____ _____ ____ |
| | | \| \ \/ / |/ __ |/ __ \ / /_\ \ / \ / __ |\_____ \_/ ___\\__ \ / \ |
| | ` \ |\ /| / /_/ \ ___// | \ | \/ /_/ |/ \ \___ / __ \| | \ |
| /_______ /__| \_/ |__\____ |\___ >____|__ /___| /\____ /_______ /\___ >____ /___| / |
| \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ |
| {@snovvcrash} {https://github.com/snovvcrash/DivideAndScan} {vX.Y.Z} |
-----------------------------------------------------------------------------------------------
positional arguments:
{db,add,scan,dns,report,parse,draw,tree,help}
db utilities for manual DB manipulations
add run a full port scan and add the output to DB
scan run targeted Nmap scans against hosts and ports from DB
dns map domain names from an input file to corresponding IP addresses from the DB
report merge separate Nmap outputs into a single report (https://github.com/CBHue/nMap_Merger)
parse parse raw Nmap XML reports by service names and print entries in format {service}://{host}:{port}}
draw visualize Nmap XML reports (https://github.com/jor6PS/DrawNmap)
tree show contents of the ~/.das/ directory using tree
help show builtin --help dialog of a selected port scanner
options:
-h, --help show this help message and exit
-db DB DB name to work with
Psst, hey buddy... Wanna do some organized p0r7 5c4nn1n6?
fuff
switch to automate web directory fuzzingparse
module)