Python Masscan模块的性能测试和比较分析
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那样实现复杂的扫描方式。因此,在实际使用中需要结合实际情况选择合适的扫描工具。
相关文章