python端口扫描用多线程+线程安全的队列+Thread类实现

Posted haozike

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python端口扫描用多线程+线程安全的队列+Thread类实现相关的知识,希望对你有一定的参考价值。

  • 用线程安全的队列Queue实现扫描端口数据存储
  • 用多线程扫描端口
  • 用Thread类实现程序组织

 

 

#coding:utf-8
import sys
import socket
import sys
import re
from threading import Thread
from Queue import Queue


class ScanPort(Thread):

    def __init__(self, target_ip, target_port, q):
        super(ScanPort, self).__init__()
        self.target_ip = target_ip
        self.target_port = target_port
        self.q = q


    def scan_port(self):
        try:
            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            s.connect((self.target_ip, self.target_port))
            q.put(str(self.target_port) + is opening)
            s.close()
        except Exception,e:
            pass


    def run(self):
       self.scan_port()

if __name__ == __main__:
    port_list = [21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080 ,9015]
    target_ip = sys.argv[1]
    q = Queue()

    portThreadList = [ ScanPort(target_ip, port, q) for port in port_list ]

    for t in portThreadList:
        t.setDaemon(True)
        t.start()

    for t in portThreadList:
        t.join()

    # end进入队列,表示扫描结束
    q.put(end)

    while True:
        result = q.get()
        print result
        if re.search(rend, result):
            break
 

 

以上是关于python端口扫描用多线程+线程安全的队列+Thread类实现的主要内容,如果未能解决你的问题,请参考以下文章

Python 多线程同步队列模型

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

用多线程实现线程安全的取款

python 简单的多线程端口扫描仪

为什么我的多进程队列看起来不是线程安全的?

基于event 实现的线程安全的优先队列(python实现)