python与黑客(c++和python先学哪个)
python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天,我们来谈谈python多线程在渗透测试中的应用,本文,我们将编写一个简易c段存活主机扫描脚本,以及一个python版本的多线程御剑--目录扫描工具
一、python 多线程
python多线程有几种写法
1
thread模块
python的一个多线程模块,小脚本可以用,但是有瑕疵,比如不稳定,线程数不好控制下方贴出一个c段存活主机扫描脚本,这个脚本i春秋ado老师也有教过哦思想:输入一个ip,经过字符拆分,获取c段,多线程地ping -c 2 ip ,根据返回的信息来判断主机是否存活
demo ping_thread.py:
运行情况:
速度还行,稳定性一般
thread模块,核心在:
scan_ip是要执行的函数,(ip,)是传入的参数,记得sleep一下
2
threading模块用法
demo:
运行情况:
可以看到,基本是同时运行的,threading.Thread模块的一种用法就是这样:
模式1.:一个列表存放所有线程,start()执行列表中线程,join()等待运行完毕
模式1?,还有模式2吗?
当然,模式2就是从threading.Thread继承一个子类class,重写父类run方法,实现多线程运行run函数,而这种也是非常良好的写法
demo:
运行情况:
二、线程间的数据守护
Queue绝对是保护线程间数据安全的好选择,有关于Queue,大家可以自行百度其用法,我发出一点经常用的:
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.full 与 maxsize 大小对应
Queue.get([block[, timeout]]) 获取队列,timeout等待时间
Queue.get_nowait() 相当Queue.get(False)
非阻塞 Queue.put(item) 写入队列,timeout等待时间
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,Queue.task_done() 函数向任务已经完成的队列发送一个信号
Queue.join() 实际上意味着等到队列为空,再执行别的操作
三、多线程threading.Thread+Queue实现渗透测试工具编写
脚本放出来:
1
多线程c段存活主机扫描
ubuntu下运行成功,win下需要修改Popen里的命令等,截图:
速度很快,稳定性较强
c段主机存活脚本:https://github.com/xiaoyecent/ping_threading_Queue
2
py版多线程御剑--目录扫描--支持自定义字典、输出文件位置以及自定义线程数:
参数用法贴出来
运行情况
举个例子:
-u https://localhost -s 30 -d d://PHP.txt -o d://ichunqiu.txt:
结果:
运行速度取决于线程数(默认60)和实际环境
源码:https://github.com/xiaoyecent/scan_dir
多线程加队列实现线程间的数据保护是很好的搭配,threading.Thread+Queue的用法希望大家能够掌握,另外,继承threading.Thread写出子类,重写父类run方法来实现多线程的写法也值得借鉴。
作者:xiaoye
来源:i春秋
链接:https://bbs.ichunqiu.com/thread-19727-1-1.html
炼石信息安全培训春季班开招
QQ:495066536
372806985
敬请持续关注……
相关文章
- 5条评论
- 语酌晴枙2024-04-27 14:54:06
- ut(item) 写入队列,timeout等待时间 Queue.put_nowait(item) 相当Queue.put(item, False) Queue.task_done() 在完成一项工作之后,Queue.task_done() 函数向任务已经完成的队列发送一个信号 Queue.jo
- 痴者卿忬2024-04-27 14:41:39
- un方法来实现多线程的写法也值得借鉴。 作者:xiaoye 来源:i春秋 链接:https://bbs.ichunqiu.com/thread-19727-1-1.h
- 萌懂怀桔2024-04-27 16:51:37
- l 与 maxsize 大小对应 Queue.get([block[, timeout]]) 获取队列,timeout等待时间 Queue.get_nowait() 相当Queue.get(False) 非阻塞 Que
- 辞眸拔弦2024-04-27 07:52:12
- 程数: 参数用法贴出来 运行情况 举个例子: -u https://localhost -s 30 -d d://PHP.txt -o d://ichunqiu.txt: 结果: 运行速度取决于线程数(默认60)和实际环境 源码