python端口扫描用多线程+线程安全的队列+Thread类实现
2024-10-16 08:51:52
- 用线程安全的队列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(r'end', result):
break
最新文章
- php模板引擎
- atoi、stoi、strtoi区别
- 启动及重新启动nginx,重启nginx后丢失nginx.pid问题解决
- A计划(bfs)
- 把MSSQL的表数据查询成 insert into格式的函数
- DirectX11 With Windows SDK--12 深度/模板状态、平面镜反射绘制
- java中变量关系
- 种花 [JZOJ4726] [可撤销贪心]
- asp.net loading 动画
- Zookeeper-基本概念
- gradle set
- 为什么今天的L4无人驾驶无法到达终局(转)
- extjs_05_grid(表格分组)
- 12只超酷机器人,在家用3D打印搞定!
- 在C#中internal、protected internal关键字是什么意思?
- 微信小程序-学习总结(1)
- 2、OpenCV Python 图像属性获取
- C++开源库(一) ----log4cpp详解
- RHEL 6.5----CDN(lumanger)
- mysql proxy讀寫分流(二)-加入RW splitting