博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 端口扫描(全连接扫描,多线程)
阅读量:6690 次
发布时间:2019-06-25

本文共 1121 字,大约阅读时间需要 3 分钟。

from socket import *import threading      #导入线程相关模块lock = threading.Lock()openNum = 0threads = []              #定义线程列表def portScanner(host,port):    global openNum    try:        s = socket(AF_INET,SOCK_STREAM)        s.connect((host,port))        lock.acquire()        #因为openNum是个全局变量,每个线程不能对openNum 同时操作,只有获得所的线程才可以操作 openNum        openNum+=1        print('[+] %d open' % port)        lock.release()        #线程对全局变量openNum操作完成后,需要释放所,其他线程才可以继续修改全局变量openNum        s.close()    except:                     #如果端口没开,那么就直接pass,不执行其他输出操作。        passdef main():    setdefaulttimeout(1)    ports = [20, 21, 22, 23, 80, 111, 3306]     #定义要扫描的端口,也可以在for中使用range进行定义,看个人需求,例如 for p in range(1,1024):     for p in ports:        t = threading.Thread(target=portScanner,args=('192.168.60.130',p))        threads.append(t)        t.start()    for t in threads:        #等待线程列表中的所以线程的执行完毕        t.join()    print('[*] The scan is complete!')    print('[*] A total of %d open port' % (openNum))if __name__ == '__main__':    main()

如果要计算扫描了多久的话,可以导入time模块,然后 程序开始运行的时间 减去 程序结束运行的时间 最后输出时间的差。

转载于:https://blog.51cto.com/jackor/2093385

你可能感兴趣的文章
Codeforces Round #321 (Div. 2)
查看>>
Spring MVC标签<mvc: annotation-driven />小结 原
查看>>
HashMap和Hashtable的区别
查看>>
Oracle EBS-SQL (INV-5):检查期间拉式物料领用记录数.sql
查看>>
Python之with语句原理
查看>>
在Window环境下多线程与CPU资源分配原则
查看>>
20170303新的开始
查看>>
Python--day25--复习(单继承和多继承的总结)
查看>>
Python--day39--进程池原理及效率测试
查看>>
@Html.EditFor()不能添加“只读”html属性;以及disable属性的坑
查看>>
Logger日志级别说明及设置方法、说明
查看>>
7-1 列出连通集 (25 分)
查看>>
Mybatis之Mapper动态代理
查看>>
【转】楼天城楼教主的acm心路历程(作为励志用)
查看>>
vw、vh、vmin、vmax 的含义
查看>>
04.设计模式_抽象工厂模式
查看>>
vue项目搭建
查看>>
c lang codesnippets
查看>>
Machine Learning
查看>>
Ext概述
查看>>