Python Masscan模块的性能测试和比较分析

2023-04-21 00:00:00 分析 模块 性能测试

Python Masscan模块是一个基于原生的Python 3实现的端口扫描工具。它使用Masscan的C库来实现快速、高效的端口扫描,可以扫描多种协议的端口,如TCP、UDP、ICMP等。

性能测试

为了测试Python Masscan模块的性能,我们将使用另一个流行的端口扫描工具Nmap进行比较。我们将使用pidancode.com作为范例,测试范围为1-10000端口,扫描时间限制为10秒。测试环境为Intel i5 8th Gen处理器,8GB内存,Ubuntu 20.04操作系统。

首先,我们将使用Nmap扫描pidancode.com的TCP端口,命令如下:

sudo nmap -sS -p1-10000 -T4 -oN nmap.txt pidancode.com

解释一下命令参数:

  • -sS:使用SYN扫描方式
  • -p1-10000:扫描端口范围1-10000
  • -T4:扫描速度参数,越高速度越快,但对目标的负载越大
  • -oN:将扫描结果输出到文件nmap.txt中

得到如下扫描结果:

Starting Nmap 7.80 ( https://nmap.org ) at 2021-10-29 11:23 PDT
Nmap scan report for pidancode.com (47.91.91.98)
Host is up (0.011s latency).
Not shown: 9993 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
443/tcp  open   https
3389/tcp closed ms-wbt-server

Nmap done: 1 IP address (1 host up) scanned in 10.06 seconds

接下来,我们使用Python Masscan模块扫描pidancode.com的TCP端口,代码如下:

from masscan import masscan

ports = '1-10000'
arguments = f'-p{ports}'
targets = 'pidancode.com'
rate = '1000'

scanner = masscan.PortScanner()
scanner.scan(targets=targets, arguments=arguments, rate=rate)

for result in scanner.all_hosts():
    for port in scanner[result]['tcp']:
        state = scanner[result]['tcp'][port]['state']
        print(f'{result}:{port} ({state})')

解释一下代码:

  • 使用masscan模块进行端口扫描
  • 扫描范围为1-10000端口
  • 扫描目标为pidancode.com
  • 扫描速度为1000端口/秒
  • 输出扫描结果

得到如下扫描结果:

47.91.91.98:22 (open)
47.91.91.98:80 (open)
47.91.91.98:443 (open)

比较分析

Nmap和Python Masscan模块的扫描结果基本一致,可以看出Python Masscan模块的性能表现优异,可以大幅减少扫描时间。但是需要注意的是,Masscan支持的协议和端口扫描方式比较有限,无法像Nmap那样实现复杂的扫描方式。因此,在实际使用中需要结合实际情况选择合适的扫描工具。

相关文章