Python Nmap模块

Python Nmap模块

我们都知道端口以及它们如何与URL相关联,但我们中的许多人可能从未听说过端口扫描器。基本上,端口扫描器是一种专门用于探测与特定端口连接的主机或服务器的应用程序,用于查找开放端口的服务器和主机。从最后一句话可以得出结论,没有特殊权限,我们无法在关闭的端口上使用端口扫描器应用程序,并且在没有许可的情况下扫描关闭的端口是非法的。端口扫描器通常由管理人员使用,以验证其自己网络的安全策略,以查看这些网络将如何识别攻击者或各种威胁。

注意:开放端口是指不需要主机特殊权限即可使用端口扫描器检查其服务器或端口的端口。

Python是一种多样化的编程语言,这意味着我们几乎可以在与技术相关的每个领域和任务中看到Python语言的应用。因此,我们肯定会想到一个问题,就是我们是否可以使用Python构建一个端口扫描器,以及我们是否可以自己构建一个端口扫描器。我们可以构建自己的端口扫描器应用程序,我们甚至可以使用Python程序来实现这一点。是的,这是完全可以的,我们可以使用Python程序构建一个端口扫描器应用程序,甚至可以使用我们构建的应用程序扫描多个端口。

Python为我们提供了可以在Python程序中使用的模块来构建端口扫描器。在Python中可以找到的一个这样的模块是nmap-python模块,它用于构建端口扫描器。在本文中,我们将学习Nmap模块,并使用这个模块在Python程序中构建我们自己的端口扫描器。

Python中的Nmap模块

Nmap模块,实际上的名称是nmap-python模块,是一个开源的Python模块,通过使用Python程序创建一个端口扫描仪,帮助我们实现端口扫描的任务。通过在Python程序中使用这个Nmap模块,我们可以构建一个端口扫描器,当我们运行程序时,端口扫描器将自动检查我们在程序中定义的端口范围。

Nmap: 一个免费且开源的网络扫描工具,用于创建用于检查多个端口的端口扫描器。

Nmap模块:安装

Python Nmap模块不是Python中的内置模块,如果我们想使用这个模块在Python中创建一个端口扫描器,我们首先必须在我们的系统中安装它。有多种方法可以在我们的系统中安装这个Nmap模块,但我们倾向于使用pip安装程序来完成这个任务。因此,我们将在命令提示符终端中使用pip安装程序将Nmap模块安装到我们的设备上,以便我们可以将其导入Python程序中。

我们将在我们设备的命令提示符终端中使用以下pip安装程序命令,以便我们可以在我们的系统中安装Nmap模块:

pip install python-nmap

在我们像这样在shell中键入命令后,我们必须按下回车键开始安装过程,并等待一段时间直到安装过程完成。

Python Nmap模块

我们可以看到,Nmap模块的安装过程现在已经完成,并且成功地安装在我们的系统中。我们现在可以通过将该模块导入到Python程序中,使用Nmap模块及其功能。

Nmap模块:实现

我们现在将在Python程序中使用这个Nmap模块,并借助该模块提供的函数,创建一个端口扫描器。正如我们已经了解到,未经许可进行关闭端口的端口扫描是违法的,因此我们将使用本地主机(127.0.0.1)作为目标进行端口扫描。在这个示例Python程序中,我们将在端口扫描器中给出范围,并且程序将告诉我们在给定范围内哪些端口是开放的,哪些端口是关闭的。

示例:

请看下面的示例Python程序,我们在其中使用Nmap模块对本地主机(127.0.0.1)进行端口扫描:

# Import Nmap Module
import nmap
# Providing range of port scanning
starting = 70
closing = 90
# Assigning target host
targetHost = '127.0.0.1'
# Using scanner from Nmap Module
portScanner = nmap.PortScanner()
# Looping over the range to check each port
for j in range(starting, closing + 1):
    # Scanning the target host
    resultant = portScanner.scan(targetHost, str(j))
    # Storing result in the form of dictionary
    resultant = resultant['scan'][targetHost]['tcp'][j]['state']
    # Printing result for port
    print(f'The port {j} number from the range is {resultant}.')

输出:

The port 70 number in the range is closed.
The port 71 number in the range is closed.
The port 72 number in the range is closed.
The port 73 number in the range is closed.
The port 74 number in the range is closed.
The port 75 number in the range is closed.
The port 76 number in the range is closed.
The port 77 number in the range is closed.
The port 78 number in the range is closed.
The port 79 number in the range is closed.
The port 80 number in the range is closed.
The port 81 number in the range is closed.
The port 82 number in the range is closed.
The port 83 number in the range is closed.
The port 84 number in the range is closed.
The port 85 number in the range is closed.
The port 86 number in the range is closed.
The port 87 number in the range is closed.
The port 88 number in the range is closed.
The port 89 number in the range is closed.
The port 90 number in the range is closed.

解释:

我们首先将Nmap模块引入到程序中,以便我们可以使用端口扫描器和其他程序中的功能。然后,我们定义了我们将扫描的每个端口范围,以检查该范围内的端口是否关闭或打开,并且我们将对范围内的每个端口进行此操作。之后,我们定义了用于执行检查的目标主机,并将“targetHost”变量初始化为其中的本地主机。然后,我们使用Nmap模块中的portscanner()函数来初始化一个扫描器变量,稍后我们将用它来扫描目标主机。之后,我们使用for循环,以便我们可以循环遍历范围内给定的每个端口,并检查它是否关闭或打开。在for循环内部,首先我们初始化了一个“resultant”变量,其中我们使用之前初始化的扫描器变量扫描了目标主机。之后,在for循环中,我们再次调用resultant变量来存储结果,即端口是关闭还是打开,并且我们使用包含多个变量的字典来生成结果。最后,我们使用打印语句打印范围内每个端口的结果。这个for循环将一直持续到达到范围的结束点,然后程序将完全执行。

在输出中,我们甚至可以看到每个端口的结果分别打印,以检查该端口是否关闭或打开。这就是我们可以在Python程序中使用Nmap模块创建端口扫描器并扫描多个端口的方法。

注意:为了成功运行我们将在本文中讨论的程序,我们必须在系统中安装nmap工具,如果我们想要在系统中安装此工具,我们必须参考nmap工具的官方网站。从官方网站上,我们可以下载nmap工具的安装文件,然后我们可以在系统中安装nmap工具,以成功运行本文中讨论的程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程