Python编写nmap扫描工具

Python编写nmap扫描工具

nmap是一款非常强大的网络扫描工具,可以用于快速扫描目标主机上的开放端口和运行的服务。在本文中,我将演示如何使用Python编写一个自定义的nmap扫描工具。

1. 安装nmap和python-nmap模块

首先,我们需要安装nmap和python-nmap模块。nmap可以从其官方网站上下载并安装。在Ubuntu系统上,可以通过以下命令安装nmap:

sudo apt-get install nmap

安装完nmap后,我们可以使用pip来安装python-nmap模块:

pip install python-nmap

2. 引入必要的模块

在编写脚本之前,我们需要引入python-nmap和其它必要的模块:

import nmap

import sys

3. 创建扫描函数

接下来,我们可以创建一个扫描函数来执行nmap扫描。扫描函数将接收目标主机的IP地址作为参数,并返回扫描结果:

def scan(target):

try:

nm = nmap.PortScanner()

nm.scan(target, arguments='-p 1-65535 -sV')

return nm.all_hosts()

except nmap.PortScannerError as e:

print('Nmap scan failed: {}'.format(e))

sys.exit(1)

在这个函数中,我们创建了一个nmap.PortScanner对象,并使用scan方法执行扫描。arguments参数用来指定扫描的选项,'-p 1-65535'表示扫描所有端口,'-sV'表示获取服务版本信息。

4. 执行扫描

现在,我们可以调用scan函数来执行扫描了:

if __name__ == '__main__':

target = '127.0.0.1'

result = scan(target)

for host in result:

print('Host: {}'.format(host))

print('Open Ports:')

for port, protocol in result[host]['tcp'].items():

print('\tPort: {}, Service: {}'.format(port, protocol['name']))

在主程序中,我们指定目标主机的IP地址,并调用scan函数进行扫描。然后,我们遍历扫描结果中的每个主机和其开放的端口信息,并进行打印输出。

5. 运行扫描

保存以上代码为一个Python文件,并运行它:

python nmap_scan.py

如果一切正常,你将会看到类似以下的输出:

Host: 127.0.0.1

Open Ports:

Port: 22, Service: SSH

Port: 80, Service: HTTP

这表示扫描结果中发现了主机127.0.0.1上开放的端口22和端口80,并且它们分别是SSH和HTTP服务。

总结

在本文中,我们演示了如何使用Python编写一个自定义的nmap扫描工具。我们使用了python-nmap模块来与nmap进行交互,并通过编写代码来执行扫描并获取结果。这个工具可以帮助我们快速获取目标主机上开放端口的信息,有助于网络安全的评估和漏洞扫描。

后端开发标签