Python Nmap 模块

17 Mar 2025 | 6 分钟阅读

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

注意:开放端口是指无需主机特别许可即可使用端口扫描器检查其服务器或端口的端口。

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

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

Python 中的 Nmap 模块

Nmap 模块,其真名为 nmap-python 模块,是一个开源的 Python 模块,它通过使用 Python 程序创建端口扫描器来帮助我们完成端口扫描任务。通过在 Python 程序中使用此 Nmap 模块,我们可以构建一个端口扫描器,当我们运行程序时,端口扫描器将自动检查我们在程序中定义的端口范围。

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

Nmap 模块:安装

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

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

在 shell 中输入命令后,我们将按 Enter 键开始安装过程,并等待一段时间直到安装过程完成。

Python Nmap Module

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

Nmap 模块:实现

我们现在将在 Python 程序中使用此 Nmap 模块,并借助该模块提供的函数,我们将使用该程序创建一个端口扫描器。如我们之前所学,未经许可扫描关闭端口是非法的,因此我们将选择 localhost (127.0.0.1) 作为我们的目标来使用端口扫描器。在此示例 Python 程序中,我们将为端口扫描器提供范围,程序将告诉我们给定范围内的哪个端口是开放的,哪个端口是关闭的。

示例

查看下面使用 Nmap 模块对 localhost (127.0.0.1) 执行端口扫描的示例 Python 程序

输出

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() 函数初始化一个 scanner 变量,稍后我们将使用该变量扫描目标主机。之后,我们使用 for 循环来遍历范围中给出的每个端口,并检查它是关闭还是打开。在 for 循环中,首先,我们初始化了一个 'resultant' 变量,我们使用之前初始化的 scanner 变量扫描目标主机。之后,在 for 循环中,我们再次调用 resultant 变量来存储端口是关闭还是打开的结果,我们使用包含多个变量的字典来产生结果。最后,我们使用 print 语句打印范围内每个端口的结果。这个 for 循环将继续,直到达到范围的结束点,然后程序将完全执行。

在输出中,我们甚至可以看到结果是为每个端口单独打印的,以检查端口是关闭还是打开。这就是我们如何使用 Python 程序中的 Nmap 模块创建端口扫描器并用它来扫描多个端口。

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


下一个主题Python PyLab 模块