Python实现的快速网络扫描工具及其使用方法

2023-04-17 00:00:00 快速 使用方法 扫描工具

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地址段,会对网络造成较大的负荷和压力。

在进行实际扫描时务必遵守相关法律法规,不得进行恶意攻击等行为。

相关文章