以下是此次的完备代码-4:
- #!/usr/bin/envpython
- #coding=utf-8
- #author:Blus
- importMySQLdb
- importthreading
- importtime
- importIPy
- importsubprocess
-
- defmysql_connect1(ip):
-
- ifnot(ping_ip(ip)):
- #printip,"down"
- return
- else:
- #记录在线的ip
- ip_log("ip_up.txt",ip,"")
-
- #实行数据库毗连
- try:
- conn=MySQLdb.connect(host=ip,user='root',passwd='',db='',port=3306)
- cur=conn.cursor()
-
- #记录开放3306端口的ip
- ip_log("port_connected.txt",ip,"")
-
- exceptMySQLdb.Error,e:
- e= str(e)
- #记录报错信息
- printe
-
- r1= e.find('Can't connect') #端口未开放Mysql_Error:2003: Can't connect to MySQL server on '35.164.6.48' (10060)
- r2= e.find('Access denied') # 端口开放但暗码错误 Mysql_Error:1045: Access denied for user 'root'@'localhost' (using password: YES)
- r3= e.find('not allowed') #端口只应承特定ip毗连 Mysql_Error:1130: Host '172.17.14.2' is not allowed to connect to this MySQLserver
- #r3= e.find('Learn SQL!') #这限定特定了sql语句
-
- if(r1 != -1):
- #解除端口不开放的环境
- return
-
- elif(r2!= -1):
- #ip_log('port_opend.txt',ip,"暗码错误")
- ip_log('port_opend.txt',ip,e)
-
- elif(r3!= -1):
- #ip_log('port_opend.txt',ip , "不应承该IP毗连")
- ip_log('port_opend.txt',ip , e)
- else:
- #ip_log('port_opend.txt',ip, "其他错误")
- ip_log('port_opend.txt',ip, e)
-
- return
-
- defping_ip(ip):
- #挪用ping呼吁,假如不通,则会返回100%丢包的信息。通过匹配是否有100%要害字,判定主机是否存活
-
- cmd= 'ping -w 1 %s' % ip
- p= subprocess.Popen(cmd,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- shell=True)
-
- result= p.stdout.read()
- regex= result.find('100%')
-
- #未匹配到就是-1,就是存活主机
- if(regex == -1):
- return1
- else:
- return0
-
- def ip_log(txt_name,ip,content):
- f1= open(txt_name, 'a')
- f1.write(ip+ " " + content + "rn")
- f1.close()
-
- if__name__ == "__main__":
-
- start= time.time()
-
- #配置同时运行的线程数
- threads=150
-
- #要检测的IP网段
- ip1= IPy.IP('192.168.0.0/16')
-
- forip in ip1:
- ip=str(ip)
- printip
-
- while(threading.activeCount()>threads):
- time.sleep(1)
- t1=threading.Thread(target=mysql_connect1,args=(ip,))
- t1.start()
-
- #当线程只剩1时,声名执行完了
- while(threading.activeCount()!=1):
- time.sleep(5)
- print"检测竣事"
这里代码已经开始混乱了,临时放着。改完后测试扫描了米国某网段一个小时,发明此刻竟然尚有空暗码毗连的洞,也许是网段选得好吧,有大量的在线处事器。
(编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|