This is a python class to use nmap and access scan results from python3
Project description
Introduction
inmap is a python library which helps in using nmap port scanner. It allows to easilly manipulate nmap scan results and will be a perfect tool for systems administrators who want to automatize scanning task and reports.
Supported Python Versions
Python 3.4+
Installing nmap scanner
inmap requires the nmap scanner : https://nmap.org/download.html
Debian based system:
sudo apt-get install nmap
Red Hat based system:
yum install nmap
ArchLinux:
pacman -S nmap
OpenSuse:
yast2 -i nmap
Mac OS X:
brew install nmap
Install inmap package
If you have pip3 on your system, you can simply install or upgrade the Python bindings:
pip3 install inmap
Alternately, you can download the source distribution from PyPI (e.g. inmap-1.2.4.tar.gz), unarchive it, and run:
python setup.py install
Example 0: Port Scanning
import inmap
scan = inmap.ScanController()
host = inmap.HostModel()
port = inmap.PortModel()
scan.scan_ports(host='scantest.nmap.org', ports='0-200')
scan.scan_ports(host='scantest.nmap.org', ports='22')
# You can use the udp and|or pn option
scan.scan_ports(host="scantest.nmap.org", ports='80', udp = True, pn = True)
# Fetch results
# =============
# for port infos the possible arguments are : ip_address - port - proto - state - service -version
results = port.select()
# Or
results = port.select(state = 'open')
results = port.select(port = 80)
results = port.select(ip_address = "10.10.10.5")
# and so on
# Display results
# ===============
print(results)
# if we have a single line of result
prints(results['ip_address'])
prints(results['port'])
prints(results['proto'])
prints(results['state'])
prints(results['service'])
prints(results['version']) # for version info see the next example
# for many results
print(results[0]['port'])
print(results[1]['service'])
# Or
for result in results:
print(result['ip_address'], ' - ', result['port'], ' - ', result['proto'], ' - ', result['state'], ' - ', result['service'])
Example 1: Port Scanning with their version
import inmap
scan = inmap.ScanController()
host = inmap.HostModel()
port = inmap.PortModel()
scan.scan_version_port(host="scantest.nmap.org", ports='0-200')
# or
scan.scan_version_port(host="scantest.nmap.org", ports='80')
# You can use the udp and|or pn option
scan.scan_version_port(host="scantest.nmap.org", ports='80', udp = True, pn = True)
# For fetch and displaying results, see the example 0
Example 2: scan the 10 most ports
import inmap
scan = inmap.ScanController()
host = inmap.HostModel()
port = inmap.PortModel()
scan.scan_most_ports(host='scantest.nmap.org')
# Or scan the 20 most ports
scan.scan_most_ports(host='10.10.10.3', number = 20)
# You can use the udp and|or pn option
scan.scan_most_ports(host='10.10.10.3', number = 20, udp = True, pn = True)
# For fetch and displaying results, see the example 0
Example 3: all information that we can have about this host : OS Detection, Port Scanning …
import inmap
scan = inmap.ScanController()
host = inmap.HostModel()
port = inmap.PortModel()
# Take more time and need root privilege
scan.scan_all(host='scantest.nmap.org')
# You can use the udp and|or pn option
scan.scan_most_ports(host='10.10.10.3', udp = True, pn = True)
# Or scan the 20 most ports
scan.scan_most_ports(host='10.10.10.3', number = 20)
# You can use the udp and|or pn option
scan.scan_most_ports(host='10.10.10.3', number = 20, udp = True, pn = True)
# Fetch results
# =============
# for host infos the possible arguments are :
# ip_address, mac_address, hostname, os_family, os_cpe, os_details, device_type, info_host, info_cpe, info_os, network_distance
results = host.select()
# Or
results = host.select(state = 'Up') # state : Up | Down
results = host.select(ip_address = "10.10.10.5")
results = host.select(mac_address = "08:00:27:D3:EB:F1")
results = host.select(hostname = "scantest.nmap.org")
# and so on, for port infos the possible arguments are : ip_address - port - proto - state - service -version
# Display results
# ===============
print(results)
# if we have a single line of result
prints(results['ip_address'])
prints(results['mac_address'])
prints(results['hostname'])
prints(results['state'])
prints(results['os_details'])
prints(results['network_distance']) # for version info see the next example
# for many results
print(results[0]['state'])
print(results[1]['ip_address'])
print(results[1]['network_distance'])
print(results[1]['os_family'])
# Or
for result in results:
print(result['ip_address'], ' - ', result['mac_address'], ' - ', result['hostname'], ' - ', result['os_family'])
# For fetch and displaying port results, see the example 0
Use The Source Luke!
View source code online:
official: |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file inmap-1.2.7.tar.gz
.
File metadata
- Download URL: inmap-1.2.7.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87c97dd2ab0163e7ee87c9d73f3129dd4987e1b77e5e56f95d516c13d5dbcf26 |
|
MD5 | 26f68937b3caf33c46cc4cd09998c33e |
|
BLAKE2b-256 | 388ea796dd323358b34c002e390512236b521810b50c3d9806e5e231f938e9a5 |