📜  使用 python 制作基本的网络扫描仪(1)

📅  最后修改于: 2023-12-03 15:06:50.361000             🧑  作者: Mango

使用 Python 制作基本的网络扫描仪

网络扫描仪是一种常用的安全工具,它可以扫描网络中的主机,端口和服务等信息,帮助管理员识别网络中的安全漏洞和风险。Python 作为一种流行的编程语言,可以帮助我们开发自己的网络扫描仪。在接下来的文章中,我们将介绍如何使用 Python 创建一个基本的网络扫描仪,并扫描目标主机的端口信息。

所需工具

创建网络扫描仪需要以下工具:

  • Python3:我们将使用 Python 在本地编写和执行代码。
  • 扫描工具:我们将使用 nmap 工具来扫描目标主机的端口。

在 Windows 中可以从 nmap 官网下载工具(https://nmap.org/download.html)。在 Ubuntu 中,可以使用以下命令安装 nmap:

sudo apt-get update
sudo apt-get install nmap
使用 Python 进行端口扫描

我们将使用 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 格式呈现。