如何在python中编写一个简单的端口扫描?

如何在python中编写一个简单的端口扫描?

import sys
import socket
import threading  #<--------先导入我们本次编写脚本所需要的模块
portlen = [] #定义一个列表好来存放扫描到的ip
def portmap(ip,port): #首先写一个函数来对扫描器的功能进行构造
    d = socket.socket (socket.AF_INET,socket.SOCK_STREAM) #将d定义为TCP套接字的一个类
    d.settimeout (0.1) #定义连接延迟,因为要快速扫描所以要把延迟调到最小的0.1
    d.connect((ip,port)) #对本函数传进来的参数(ip地址和port端口号)进行TCP连接
    try: #对连接过程是否顺利进行判断,如果对该端口连接成功
        portlen.append(port) #将该端口号加入portlen[]这个列表当中
        print ("[+]OPEN ",port)#之后将该端口打印出来
    except Exception:#如果连接失败
        d.close()#就将关闭tcp连接
        pass #跳过,函数结束
if len (sys.argv) !=2:#用if语句判断传进来的命令行参数是否不等于2
    print ('[-]请使用正确用法:python ',sys.argv[0],' [ip]') #如果不等于将输出提示
else:#否则执行以下语句
    try:#判断以下代码是否正在执行
        for i in range(1,65535): #用for循环来将i变量的范围定义到1-65535(因为一台计算机的总共端口就是65535个)
          portmap_thread = threading.Thread (target=portmap(sys.argv[1],i)) #调用一个线程来执行上面已经定义了的函数
          portmap_thread.start() #启动线程
    except KeyboardInterrupt: #如果该脚本终止运行,将打印下面的话
          print ('[*]已中断扫描.....')

上一篇:Python | Python学习之多线程详解


下一篇:python获取threading+client+全局变量的返回值