前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 端口扫描(全连接扫描,多线程)

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

作者头像
IT架构圈
发布2018-06-01 12:30:54
1.9K0
发布2018-06-01 12:30:54
举报
文章被收录于专栏:IT架构圈IT架构圈

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

代码语言:javascript
复制
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()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档