加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

高效python脚本,6小时获取上千台MySQL数据库服务器(上)

发布时间:2019-01-31 15:04:43 所属栏目:业界 来源:合天智汇
导读:01媒介 一开始,我只是想把一个AWD下的批量写马器材进级改革一下,记录一下时代的心得领会,本觉得此刻mysql弱口令毗连的裂痕很少。但当最后器材完成后,一测试扫描外国网段,半天时刻竟然就乐成毗连了上千台数据库处事器。 02因由 这个剧本最开始的构想是

理论被骗运行该函数长时刻未毗连端口时会抛堕落误,但在现实进程中,偶然辰不会抛堕落误,措施一向阻塞。去查阅了mysqldb的文档,发明有个毗连超时(connect_timeou)的参数选项(如下图),当毗连超时时会丢弃该毗连。但一测试顿时发明这个参数形同虚设,基础没用!

高效python剧本,6小时获取上千台MySQL数据库处事器(上)

无奈,只妙手动给函数加上时刻限定,思量了以下两个要领。

要领一:行使signal.SIGALRM信号量,但SIGALRM只能在linux体系下行使

可参考:

https://stackoverflow.com/questions/366682/how-to-limit-execution-time-of-a-function-call-in-python

要领二:行使多线程中的join()的超时参数,好比join(3)就是限定了子线程运行的时刻为3秒。

在此我回收要领二:

高效python剧本,6小时获取上千台MySQL数据库处事器(上)

但同时必要留意的是try...except是无法捕获线程中的报错的,由于线程有独立的栈,线程发生的非常产生在差异的栈上,因此无法捕获到线程的非常。即捕获不到3306端口毗连错误,就无法按照报错信息来说明端口的毗连环境。但假如在线程内部行使try..except来捕获报错的话,线程自身又不返回值,无法汇报主函数端口的毗连环境,也就无法确定是否要举办暗码爆破,可能什么时辰暗码爆破乐成,这时辰又该怎么办呢?

查阅网上的资料,发明有操作类的变量来转达线程内的动静,也有行使Queue库建设行列实例来转达数据的。但总认为有些“痴肥”,不太满足。思索着溘然豁然爽朗,可以在线程运行的函数内部判定端口的毗连环境,然后用threading.Event()的符号配置与否,来转达功效,让主函数知道接下来该怎样运行。配置了符号声名要举办下一步操纵,未配置符号则return退出当前操纵。

关于threading.Event()的基本常识可参考:

https://blog.csdn.net/u012067766/article/details/79734630

修改后的主函数:

高效python剧本,6小时获取上千台MySQL数据库处事器(上)

这里就不放上完备的代码了,由于紧接着顿时又改造了服从。

【编辑保举】

  1. 处事器怎样获取真实客户端 IP
  2. Jenkins处事器应承匿名用户成为打点员
  3. TCP/IP客户端和处事器的脚色
  4. Linux处事器开拓,2小时搞定高并发收集编程
  5. 处事器多线程破解RAR文件暗码-BruteForcer
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读