search
HomeBackend DevelopmentPython TutorialTutorial on using the Python-nmap network scanning and sniffing toolkit

nmap concept

NMap, also known as Network Mapper, was originally a network scanning and sniffing toolkit under Linux.

nmap is a network connection scanning software, used to scan open network connections of computers on the Internet. Determine which services are running on which connections and infer which operating system the computer is running (this is also known as fingerprinting). It is one of the must-use software for network administrators and is used to assess network system security.

Like most tools used for network security, nmap is also a tool favored by many hackers and hackers (also known as script kiddies). System administrators can use nmap to detect unauthorized use of servers in the work environment, but hackers will use nmap to collect the network settings of target computers to plan attacks.

Nmap is often confused with Nessus, a system vulnerability assessment software. Nmap uses stealth methods to avoid the surveillance of intrusion detection systems and try not to affect the daily operations of the target system.

Nmap was used by Trinity to hack into the energy management system of power plants in The Matrix, together with the 32-bit cyclic redundancy check vulnerability of SSH1.

nmap function

There are three basic functions. One is to detect whether a group of hosts is online; the second is to scan the host port and sniff the provided network services; and it can also Infer the operating system used by the host. Nmap can be used to scan LANs with as few as two nodes, up to networks with more than 500 nodes. Nmap also allows users to customize scanning techniques. Usually, a simple ping operation using the ICMP protocol can meet general needs; it can also deeply detect the UDP or TCP port, down to the operating system used by the host; it can also record all detection results into logs in various formats for further analysis. Analysis operations.

Perform a ping scan and print out the hosts that responded to the scan without further testing (such as port scanning or operating system detection):

nmap -sP 192.168.1.0/24

Only list each host on the specified network Host, do not send any packets to the target host:

nmap -sL 192.168.1.0/24

To detect the open ports of the target host, you can specify a comma-separated port list (such as -PS22, 23, 25, 80):

nmap -PS 192.168.1.234

Use UDP ping to detect the host:

nmap -PU 192.168.1.0/24

The most frequently used scan option: SYN scan, also known as semi-open scan, it does not open a full TCP connection and executes very quickly:

nmap -sS 192.168.1.0/24

nmap installation

This article takes linux Ubuntu16.04 as an example, and finally mainly uses python to operate

1. Install nmap first

sudo apt-get install nmap

2. Then install python-nmap

sudo pip install python-nmap

After installation, import nmap into python and test to verify whether it is successful

com@pythontab:~# python
Python 2.7.12 (default, Dec  3 2016, 10:42:27) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nmap

Python operation nmap

1. Simple Small case

Create a PortScanner instance, and then scan ports 20-443 of the IP 114.114.114.114.

import nmap
nm = nmap.PortScanner()
ret = nm.scan('114.114.114.114','20')
print ret

The return format is as follows:

{
    'nmap': {
        'scanstats': {'uphosts': '1', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.11'},
        'scaninfo': {'tcp': {'services': '20', 'method': 'connect'}}, 
        'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26'
     },
    'scan': {
        '115.239.210.26': {
            'status': {'state': 'up', 'reason': 'syn-ack'},
            'hostnames': [{'type': '', 'name': ''}],
            'vendor': {}, 
            'addresses': {'ipv4': '115.239.210.26'},
            'tcp': {20: {'product': '', 'state': 'filtered', 'version': '', 'name': 'ftp-data', 'conf': '3', 'extrainfo': '', 'reason': 'no-response', 'cpe': ''}
            }
        }
    }
}

2. Built-in method:

You can also print out simple information

import nmap  
nm = nmap.PortScanner() 
print nm.scaninfo()
# {u'tcp': {'services': u'20-443', 'method': u'syn'}}
print nm.command_line() 
# u'nmap -oX - -p 20-443 -sV 114.114.114.114'

View How many hosts are there

print nm.all_hosts()

[u'114.114.114.114']

View the detailed information of the host

nm['114.114.114.114']

View all protocols included in the host

nm['114.114.114.114'].all_protocols()

Check which ports of the host provide the tcp protocol

nm['114.114.114.114']['tcp']
nm['114.114.114.114']['tcp'].keys()

Check whether the port provides the tcp protocol

nm['114.114.114.114'].has_tcp(21)

You can also set the parameters for nmap execution like this

nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')

The above is the detailed content of Tutorial on using the Python-nmap network scanning and sniffing toolkit. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
How do NumPy arrays differ from the arrays created using the array module?How do NumPy arrays differ from the arrays created using the array module?Apr 24, 2025 pm 03:53 PM

NumPyarraysarebetterfornumericaloperationsandmulti-dimensionaldata,whilethearraymoduleissuitableforbasic,memory-efficientarrays.1)NumPyexcelsinperformanceandfunctionalityforlargedatasetsandcomplexoperations.2)Thearraymoduleismorememory-efficientandfa

How does the use of NumPy arrays compare to using the array module arrays in Python?How does the use of NumPy arrays compare to using the array module arrays in Python?Apr 24, 2025 pm 03:49 PM

NumPyarraysarebetterforheavynumericalcomputing,whilethearraymoduleismoresuitableformemory-constrainedprojectswithsimpledatatypes.1)NumPyarraysofferversatilityandperformanceforlargedatasetsandcomplexoperations.2)Thearraymoduleislightweightandmemory-ef

How does the ctypes module relate to arrays in Python?How does the ctypes module relate to arrays in Python?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingandmanipulatingC-stylearraysinPython.1)UsectypestointerfacewithClibrariesforperformance.2)CreateC-stylearraysfornumericalcomputations.3)PassarraystoCfunctionsforefficientoperations.However,becautiousofmemorymanagement,performanceo

Define 'array' and 'list' in the context of Python.Define 'array' and 'list' in the context of Python.Apr 24, 2025 pm 03:41 PM

InPython,a"list"isaversatile,mutablesequencethatcanholdmixeddatatypes,whilean"array"isamorememory-efficient,homogeneoussequencerequiringelementsofthesametype.1)Listsareidealfordiversedatastorageandmanipulationduetotheirflexibility

Is a Python list mutable or immutable? What about a Python array?Is a Python list mutable or immutable? What about a Python array?Apr 24, 2025 pm 03:37 PM

Pythonlistsandarraysarebothmutable.1)Listsareflexibleandsupportheterogeneousdatabutarelessmemory-efficient.2)Arraysaremorememory-efficientforhomogeneousdatabutlessversatile,requiringcorrecttypecodeusagetoavoiderrors.

Python vs. C  : Understanding the Key DifferencesPython vs. C : Understanding the Key DifferencesApr 21, 2025 am 12:18 AM

Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

Python vs. C  : Which Language to Choose for Your Project?Python vs. C : Which Language to Choose for Your Project?Apr 21, 2025 am 12:17 AM

Choosing Python or C depends on project requirements: 1) If you need rapid development, data processing and prototype design, choose Python; 2) If you need high performance, low latency and close hardware control, choose C.

Reaching Your Python Goals: The Power of 2 Hours DailyReaching Your Python Goals: The Power of 2 Hours DailyApr 20, 2025 am 12:21 AM

By investing 2 hours of Python learning every day, you can effectively improve your programming skills. 1. Learn new knowledge: read documents or watch tutorials. 2. Practice: Write code and complete exercises. 3. Review: Consolidate the content you have learned. 4. Project practice: Apply what you have learned in actual projects. Such a structured learning plan can help you systematically master Python and achieve career goals.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.