如何在Linux上安装python-nmap库
Python-Nmap是一个网络映射器,在处理安全审计和发现网络方面非常重要。它作为一个开源项目存在;因此它可以免费使用。
所有的核心操作系统都支持Python-Nmap。然而,二进制包只适用于Windows, Linux, 和Mac OS X。Nmap通过程序化操作Nmap扫描结果在端口扫描任务中至关重要。这里我们要看看如何在Linux中安装python-nmap库。
Nmap值得深入研究的关键特征包括。
- Os检测 – 这包括识别主机操作系统以及网络设备的硬件特征
- 端口扫描 – Nmap可以统计和列出整个目标和开放的端口
- 与目标的可编写的互动 – 在Nmap,我们可以用Nmap脚本引擎结合Lua编程语言编写脚本,对网络设备进行操作。
- 版本检测 – 我们可以通过询问位于远程设备上的网络服务来建立应用程序的版本号和应用程序的名称。
- 主机发现 – 这是一个概念,当我们想找出一个特定网络中的主机时。例如,当我们想找出特定的端口是否开放。或者当它们发出ICMP请求时。此外,Nmap还可以列出对TCP响应的主机。
有两种不同的方法来测试Nmap方法。
方法1: 第一种方法是用python编写脚本,并使用以下命令在终端上运行它们。
root@gfg:~# python script_name.py
# script_name.py
import nmap
nmap =nmap.PortScanner()
host = '127.0.0.1'
nmap.scan(host, '1-10')
print(nmap.command_line())
用一个脚本测试Nmap方法
方法2: 第二种方法是通过命令行界面测试Nmap方法。要做到这一点,打开终端,运行 “python “命令,这样您就得到一个像下面这样的界面。
在Ubuntu (Debian)中安装Nmap。
运行以下命令
root@gfg:~# sudo apt-get install nmap
在Ubuntu (Debian)安装Python-Nmap。
我们还需要名为python-nmap的Python模块。它负责计算机网络内的主机和服务发现。它通过在初始化向这些主机发送特定的数据包后分析来自已识别的主机的响应来实现这一目的。
有两种方法来安装python-nmap。第一种是在终端上安装,第二种是下载 python-nmap 库并进行手动安装。
方法1: 通过终端安装Python-Nmap
因此,我们将运行以下命令。
root@gfg:~# pip install python-nmap
方法2:手动安装Python-Nmap
在第二种方法中,我们将列出下载python-nmap库直到它可以使用的所有必要步骤。
第1步: 使用wget下载python-nmap库,如下所示。
root@gfg:~# wget http://xael.org/norman/python/python-nmap/python-nmap-0.1.4.tar.gz
使用wget下载python-nmap库
第2步: 使用tar来提取内容
root@gfg:~# tar xf python-nmap-0.1.4.tar.gz
使用tar来提取内容
第3步: 改变目录到提取的内容
root@gfg:~# cd python-nmap-0.1.4
改变目录到提取的内容
第4步: Python-Nmap的安装
root@gfg:~# python setup.py install
Python-Nmap的安装
第5步: 确认Python-Nmap已经成功安装并可以使用。
root@gfg:~# python
确认Python-Nmap已经成功安装并可使用
我们还需要一个虚拟环境来分离不同模块之间的关注点,并区别于其他项目。如果你决定编写python脚本并运行它们而不是命令行界面,这就很重要。
下面的命令将有助于创建一个虚拟环境
python -m venv my_virtual_environment_name
在命令行界面上测试Nmap
按键盘上的Ctrl + Alt + T打开终端。然后,在键盘上输入python一词并按回车键
root@gfg:~# python
为了测试各种Nmap命令,我们首先用以下命令导入Nmap模块。
>>> import nmap
接下来,我们需要实例化Nmap的端口扫描器,如下所示
>>> nmap =nmap.PortScanner()
>>> host = '127.0.0.1'
接下来是将端口和主机范围都设置为扫描,如下图。
>>> nmap.scan(host, '1-10')
接下来,我们可以打印用于扫描的command_line命令,如图所示
>>> print(nmap.command_line())
使用Nmap获取127.0.0.1的主机名
>>> nmap['127.0.0.1'].hostname()
'localhost'
>>>
如果我们想得到Nmap的扫描信息,请按以下步骤操作。
>>> print nmap.scaninfo()
结果将是这样的。
{'tcp': {'services': '1-10', 'method': 'connect'}}
要扫描每一台主机,我们需要运行以下命令
>>> for host in nmap.all_hosts():
... print('Host : %s (%s)' % (host, nmap[host].hostname()))
... print('State : %s' % nmap[host].state())
同样地,我们也可以扫描所有的协议。它返回被扫描的特定网络的协议。
>>> nmap['127.0.0.1'].all_protocols()
我们案件的结果是。
[tcp]
获取特定主机的状态,方法如下
>>> nmap['127.0.0.1'].state()
它将显示主机是向上还是向下。在我们的案例中。
'up'
Keys()方法负责显示所有活动端口的信息,同时提供范围。下面是如何使用keys()方法的。
>>> nmap['127.0.0.1']['tcp'].keys()
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
验证一个给定端口的端口信息。例如,对于给定主机上的20,如下所示
>>> nmap['127.0.0.1'].has_tcp(20)
False
>>>