python多线程扫描端口示例

时间:2022-06-28 23:18:58 


# -*- coding: cp936 -*-
import socket
from threading import Thread,activeCount,Lock
from time import ctime
mutex = Lock()

class Loop(Thread):
    def __init__(self,ip,port,que):
        Thread.__init__(self)
        self.ip     = ip
        self.port   = port
        self.que    = que

    def run(self):
        global mutex
        try:
            client = socket.socket()
            indicator = client.connect_ex((self.ip,self.port))
            if mutex.acquire(1):
                if indicator == 0:
                    que.append(self.ip+'\t'+str(self.port))
                else:
                    print self.ip,'\t',str(self.port),'不可达'
                mutex.release()
        except:
            if mutex.acquire(1):
                print self.ip,'\t',str(self.port),'不可达'
                mutex.release()

class Main(Thread):
    def __init__(self,ip,que):
        Thread.__init__(self)
        self.ip  = ip
        self.que = que

    def run(self):
        i = 0
        while i < 65536:
            if activeCount() <= 200:
                Loop(ip=self.ip,port=i,que=self.que).start()
                i = i + 1

if __name__ == '__main__':
    que = []
    ip = raw_input('IP=')

    main = Main(ip = ip,que = que)
    main.start()

    while True:
        if activeCount() <= 1 and main.isAlive() == False:
            break

    print ''
    f = open('portOpen.py','a')
    f.write("'''")
    f.write(ctime()+'\n')
    f.flush()
    for i in range(0,len(que)):
        print que[i]
        f.write('\t'+que[i]+'\n')
        f.flush()
    f.write("'''")
    f.close()

    raw_input()

'''Mon Jan 13 07:12:53 2014
 localhost 135
 localhost 1028
 localhost 8048
 localhost 8080
 localhost 8181
 localhost 8730
 localhost 12040
 localhost 12897
 localhost 18040
 localhost 18611
''''''Tue Jan 14 10:04:58 2014
 localhost 135
 localhost 1028
 localhost 8048
 localhost 8080
 localhost 8181
 localhost 12897
 localhost 18040
 localhost 18611
'''

标签:多线程,扫描端口
0
投稿

猜你喜欢

  • python导入pandas具体步骤方法

    2022-08-14 16:01:03
  • Django搭建项目实战与避坑细节详解

    2021-04-30 06:46:46
  • XHTML中id与class的使用原则与技巧

    2007-12-17 13:07:00
  • 利用python/R语言绘制圣诞树实例代码

    2021-02-10 02:32:23
  • python远程连接MySQL数据库

    2024-01-19 13:53:29
  • 如何在ACCESS中插入超级链接?

    2007-10-22 12:13:00
  • SQLServer数据库中开启CDC导致事务日志空间被占满的原因

    2024-01-18 01:41:39
  • 详解Python如何获取列表(List)的中位数

    2022-02-01 02:35:37
  • Python安装Pytorch最新图文教程

    2022-08-07 21:44:14
  • Python爬虫:url中带字典列表参数的编码转换方法

    2021-11-02 17:50:45
  • python能做哪些生活有趣的事情

    2023-05-07 01:50:43
  • inner join和left join之间的区别详解

    2024-01-27 12:57:17
  • Vue使用Element-UI生成并展示表头序号的方法

    2024-06-05 10:04:27
  • JavaScript禁止右击保存图片,禁止拖拽图片的实现代码

    2024-05-11 09:07:16
  • JavaScript中prototype为对象添加属性的误区介绍

    2024-04-19 09:46:30
  • SQL server不支持utf8 php却用utf8的矛盾问题解决方法

    2023-07-20 12:01:28
  • Python类的基础入门知识

    2021-07-09 04:07:25
  • 解决Python字典查找报Keyerror的问题

    2021-05-07 00:53:55
  • 多种方式实现js图片预览

    2024-04-23 09:24:44
  • go语言 全局变量和局部变量实例

    2024-04-26 17:18:56
  • asp之家 网络编程 m.aspxhome.com