Snake Map
Extensive Python3 network scanner, simplified.
_,.--.
--..,_ .'`__ o `;__,
`'.'. .'.'` '---'` '
'.`-...-'.'
`-...-'
S N A K E M A P
Updates!
- Now Accepts CIDR blocks! Scroll to bottom to see available blocks :)
- Included TCP/UDP choice. Default is both.
- Reads Server messages. Helps reveal server identification information
- Proxy still not finished, add proxychains4 in front to stay anonymous!
- Timer is buggy but good enough until i fix it.
Dependencies
Tor is only required if you wish to use stealth mode. (which currently doesnt work but just use proxychains4 or something idek.) python3
, Tor
, git
, python3-socks
On Debian:
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-socks tor git
Other distros: Figure it out
Windows: Compatible
Installation
git clone https://github.com/0bliss/snakemap
cd snakemap
Usage
If you only want to scan for TCP or UDP, specify the protocol to save time! If you aren't looking to scan for both TCP & UDP, scan times take longer. This is the default choice.
python3 snakemap.py help
host - Host to scan. Accepts CIDR notation See below
SYNTAX: host=<hostname or IP>
SYNTAX With CIDR: host=<hostname or IP>/<CIDR>
port - Single port to check availability
SYNTAX: port=443
DEFAULT: None
portrange - Range of ports to scan and check availability
SYNTAX: portrange=<minport>,<maxport>
DEFAULT: None
stealth - Add this to attempt to run scan through local Tor proxy.
If you have issues using this, download proxychains4 and use the app like so:
proxychains4 python3 snakemap.py <args...>
timeout - Connection scanner timeout.
DEFAULT: 5
protocol - protocol=<tcp>/<udp>
DEFAULT: Both
help - Shows this help menu.
-------------------------------------
Currently Accepted CIDR Notation:
-------------------------------------
CIDR Range Subnet Mask
/24 | *.0-*.255 | mask - 255.255.255.0
/25 | *.0-*.127 | mask - 255.255.255.128
/26 | *.0-*.63 | mask - 255.255.255.192
/27 | *.0-*.31 | mask - 255.255.255.224
Examples
Single Port:
python3 snakemap.py host=example.com port=443
Port Range:
python3 snakemap.py host=example.com portrange=0,65535
Timeout's other than 5 seconds: (reduces scanning time)
python3 snakemap.py host=example.com port=443 timeout=3
Example Console Log (port range)
# python3 snakemap.py host=192.168.0.99 portrange=21,9000 protocol=tcp
_,.--.
--..,_ .'`__ o `;__,
`'.'. .'.'` '---'` '
'.`-...-'.'
`-...-'
S N A K E M A P
Port range scan selected.
Starting port scan on 192.168.0.102 [Port Range: 21-9000, Selecting TCP Only]...
Message from port 22: SSH-2.0-OpenSSH_8.4p1 Debian-5
Message from port 3300: ceph v2
Message from port 6800: ceph v2
==================
RESULTS
==================
22 : Open [TCP]
3128 : Open [TCP]
3300 : Open [TCP]
6800 : Open [TCP]
Start: 23:27:18
End: 23:27:36
Elapsed: 0 hours, 0 minutes, 18 seconds.
Example Console Log (single port, CIDR, TCP only)
python3 snakemap.py host=192.168.0.1/27 port=22 timeout=1 protocol=tcp
_,.--.
--..,_ .'`__ o `;__,
`'.'. .'.'` '---'` '
'.`-...-'.'
`-...-'
S N A K E M A P
Single port scan selected.
Port 22 TCP is closed or filtered. [Host: 192.168.0.0]
Port 22 TCP is closed or filtered. [Host: 192.168.0.1]
Port 22 TCP is closed or filtered. [Host: 192.168.0.2]
Message from port 22: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4
Port 22 TCP is open. [Host: 192.168.0.3]
Port 22 TCP is closed or filtered. [Host: 192.168.0.4]
Port 22 TCP is closed or filtered. [Host: 192.168.0.5]
Port 22 TCP is closed or filtered. [Host: 192.168.0.6]
Port 22 TCP is closed or filtered. [Host: 192.168.0.7]
Port 22 TCP is closed or filtered. [Host: 192.168.0.8]
Port 22 TCP is closed or filtered. [Host: 192.168.0.9]
Port 22 TCP is closed or filtered. [Host: 192.168.0.10]
Port 22 TCP is closed or filtered. [Host: 192.168.0.11]
Port 22 TCP is closed or filtered. [Host: 192.168.0.12]
Port 22 TCP is closed or filtered. [Host: 192.168.0.13]
Port 22 TCP is closed or filtered. [Host: 192.168.0.14]
Port 22 TCP is closed or filtered. [Host: 192.168.0.15]
Port 22 TCP is closed or filtered. [Host: 192.168.0.16]
Port 22 TCP is closed or filtered. [Host: 192.168.0.17]
Message from port 22: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4
Port 22 TCP is open. [Host: 192.168.0.18]
Port 22 TCP is closed or filtered. [Host: 192.168.0.19]
Port 22 TCP is closed or filtered. [Host: 192.168.0.20]
Port 22 TCP is closed or filtered. [Host: 192.168.0.21]
Port 22 TCP is closed or filtered. [Host: 192.168.0.22]
Port 22 TCP is closed or filtered. [Host: 192.168.0.23]
Port 22 TCP is closed or filtered. [Host: 192.168.0.24]
Port 22 TCP is closed or filtered. [Host: 192.168.0.25]
Port 22 TCP is closed or filtered. [Host: 192.168.0.26]
Port 22 TCP is closed or filtered. [Host: 192.168.0.27]
Port 22 TCP is closed or filtered. [Host: 192.168.0.28]
Port 22 TCP is closed or filtered. [Host: 192.168.0.29]
Port 22 TCP is closed or filtered. [Host: 192.168.0.30]
Port 22 TCP is closed or filtered. [Host: 192.168.0.31]
Start: 08:19:46
End: 08:20:15
Elapsed: 0 hours, 0 minutes, 29 seconds.
CIDR Cheatsheet
Currently Accepted CIDR Notation:
CIDR Range Subnet Mask
/24 | *.0-*.255 | mask - 255.255.255.0
/25 | *.0-*.127 | mask - 255.255.255.128
/26 | *.0-*.63 | mask - 255.255.255.192
/27 | *.0-*.31 | mask - 255.255.255.224
Note: If you want to fix the internal proxy before I do on your own fork, go ahead. You'll only have to change two parts of code. The telnet_TCP() and telnet_UDP() functions are used at the base layer of all scans, so if you change the socks proxy code there, it should work out with the rest. (This is not actually telnet, its a raw Python implementation of telnet by me.)
Extra: Did you find the Easter egg?