码迷,mamicode.com
首页 > 编程语言 > 详细

Python 端口扫描(全连接扫描,多线程)

时间:2018-03-31 17:27:19      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:Python   端口扫描   多线程   

from socket import * import threading #导入线程相关模块 lock = threading.Lock() openNum = 0 threads = [] #定义线程列表 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,不执行其他输出操作。 pass def 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模块,然后 程序开始运行的时间 减去 程序结束运行的时间 最后输出时间的差。

Python 端口扫描(全连接扫描,多线程)

标签:Python   端口扫描   多线程   

原文地址:http://blog.51cto.com/jackor/2093385

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!