Python实现的快速网络扫描工具及其使用方法
Python实现快速网络扫描的工具有很多,常见的有nmap、masscan等,本文介绍如何使用Python编写简单的网络扫描工具。
1.安装所需库
使用Python进行网络扫描需要安装的库有socket、struct、os、argparse等,可以使用pip命令安装:
pip install argparse
其他库为Python自带库,无需额外安装。
2.编写代码
以下是一个简单的网络扫描代码,可以扫描指定IP地址段的主机是否开放了指定端口(如80、8080等):
import socket import struct import os import argparse def scan(ip, start_port, end_port): for port in range(start_port, end_port+1): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(2) try: s.connect((ip, port)) print('Port', port, 'is open') except: print('Port', port, 'is closed') s.close() def main(): parser = argparse.ArgumentParser(description='Simple port scanner') parser.add_argument('ip', help='IP address to scan') parser.add_argument('port_range', help='Port range to scan (e.g. 1-65535)') args = parser.parse_args() ip = args.ip start_port, end_port = map(int, args.port_range.split('-')) scan(ip, start_port, end_port) if __name__ == '__main__': main()
该代码使用了Python自带的socket库,首先通过socket.socket()方法创建一个TCP连接,连接目标IP和端口,如果连接成功则打印端口为开放状态,否则打印端口为关闭状态。
其中使用了argparse库解析命令行参数,用户可以通过命令行输入要扫描的IP地址和端口范围,例如:
python scan.py 127.0.0.1 80-8080
该命令将会扫描127.0.0.1这个IP地址段中80-8080这个范围内的端口是否开放。
3.使用方法
将上述代码保存为scan.py文件,通过命令行进入该文件所在目录,执行以下命令:
python scan.py [IP地址] [端口范围]
例如,扫描127.0.0.1这个IP地址段中80-8080这个范围内的端口是否开放:
python scan.py 127.0.0.1 80-8080
输出结果如下:
Port 80 is open Port 81 is closed Port 82 is closed ... Port 8079 is closed Port 8080 is open
说明127.0.0.1这个IP地址段中80和8080这两个端口是开放的。
可以通过指定不同的IP地址和端口范围进行扫描,如:
python scan.py pidancode.com 1-100
输出结果如下:
Port 1 is closed Port 2 is closed ... Port 80 is open Port 81 is closed ... Port 100 is closed
说明pidancode.com这个主机上开放了80端口。
4.注意事项
在扫描时尽量不要扫描大范围的端口或IP地址段,会对网络造成较大的负荷和压力。
在进行实际扫描时务必遵守相关法律法规,不得进行恶意攻击等行为。
相关文章