📅  最后修改于: 2023-12-03 15:06:50.361000             🧑  作者: Mango
网络扫描仪是一种常用的安全工具,它可以扫描网络中的主机,端口和服务等信息,帮助管理员识别网络中的安全漏洞和风险。Python 作为一种流行的编程语言,可以帮助我们开发自己的网络扫描仪。在接下来的文章中,我们将介绍如何使用 Python 创建一个基本的网络扫描仪,并扫描目标主机的端口信息。
创建网络扫描仪需要以下工具:
在 Windows 中可以从 nmap 官网下载工具(https://nmap.org/download.html)。在 Ubuntu 中,可以使用以下命令安装 nmap:
sudo apt-get update
sudo apt-get install nmap
我们将使用 Python nmap
模块来扫描目标主机的端口信息。首先,确保已经安装了 nmap
模块:
pip install python-nmap
我们将创建一个 Python 脚本来获取目标主机的 IP 地址,并使用 nmap
模块扫描其开放的端口。以下是完整的代码:
import nmap
# 获取目标主机的 IP 地址
target_host = input("请输入目标主机的 IP 地址:")
# 创建 nmap 扫描器对象
scanner = nmap.PortScanner()
# 使用 nmap 扫描器扫描目标主机的端口信息
scanner.scan(target_host, '1-1000')
# 遍历扫描结果并输出开放的端口号
for host in scanner.all_hosts():
print('IP 地址:', host)
print('主机名:', scanner[host].hostname())
print('状态:', scanner[host].state())
for protocol in scanner[host].all_protocols():
print('协议:', protocol)
print('端口:', scanner[host][protocol].keys())
在这个脚本中,我们使用 nmap.PortScanner
类来创建一个扫描器对象。然后,我们使用 scanner.scan()
方法来扫描目标主机的端口信息。scan()
方法需要两个参数:目标主机的 IP 地址和要扫描的端口范围。在上面的代码中,我们扫描了目标主机的端口范围从 1 到 1000 的所有端口。
然后,我们使用 scanner.all_hosts()
方法遍历扫描结果,输出开放的端口号。scanner[host]
返回一个 nmap.PortScannerHostDict
对象,包含目标主机的信息。我们可以使用这个对象获取主机名、状态、协议和端口等信息。
在这篇文章中,我们介绍了如何使用 Python 创建基本的网络扫描仪,并扫描目标主机的端口信息。我们使用了 nmap
模块来扫描主机,并输出开放的端口号。让我们总结一下这个脚本中用到的主要 Python 和 nmap 模块的方法:
input()
:获取用户输入。nmap.PortScanner()
:创建一个 nmap 扫描器对象。scanner.scan()
:使用 nmap 扫描器扫描目标主机的端口信息。scanner.all_hosts()
:遍历扫描结果获取目标主机的 IP 地址。scanner[host].hostname()
:返回目标主机的主机名。scanner[host].state()
:返回目标主机的状态。scanner[host].all_protocols()
:返回目标主机响应的所有协议类型。scanner[host][protocol].keys()
:返回目标主机开放的端口列表。其中上述代码片段将以 markdown 格式呈现。