zoukankan      html  css  js  c++  java
  • 学习python总结

    这其实是我自己写的一些简单的功能方法,当然有很大一部分代码是借鉴别人的代码,新手,写这个博客只为python学习阶段的积累

    #!/usr/bin/env python 
    # -*- coding: utf-8 -*-
    
    ##---------------------------------------------------------------------
    '''
    功能:遍历文件夹,得到三个列表
    参数数量:1
    参数列表:
        s_dir   ##文件夹路径
    
    返回数量:3
    返回值列表:
        filepath_list = []  ##文件长路径
        pathname_list = []  ##路径
        filename_list = []  ##只是文件名
    '''
    import os
    def walkDir(s_dir):
        filepath_list = []  ##文件长路径
        pathname_list = []  ##路径
        filename_list = []  ##只是文件名
        for roots,paths,files in os.walk(s_dir):
            for a in files:
                filepath_list.append(roots+'/'+a)
            for p in paths:
                pathname_list.append(roots+'/'+p)
            for f in files:
                filename_list.append(f)
        return filepath_list,pathname_list,filename_list
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:获得文件md5,注意:不是字符串
    参数数量:1
    参数列表:
        strFile   ##文件路径
    
    返回数量:1
    返回值列表:
        strMd5  ##大写文件md5
    
    '''
    import hashlib
    def getFileMd5(p_strFile):  
        filer = open(p_strFile, "rb")  #注意这里二进制与下面的字符串加密的区别
        md5 = hashlib.md5()   
        while True:  
            strRead = filer.read(8096)
            if not strRead:  
                break
            md5.update(strRead)
        strMd5 = md5.hexdigest().upper()
        filer.close()
        return strMd5
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    功能:获得字符串md5,注意:不是文件
    参数数量:1
    参数列表:
        p_string   ##字符串
    
    返回数量:1
    返回值列表:
        r_md5  ##返回大写字符串md5
    
    '''
    import hashlib
    def getStringMd5(p_string):   #注意这里字符串与上面二进制加密的区别
        r_md5 = hashlib.md5(p_string).hexdigest().upper()
        return r_md5
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:base64的加密与解密,sha1,sha256,sha512 
    参数数量:0
    参数列表:
        
    
    返回数量:0
    返回值列表:
       
        
    '''
    s = 'wangshiwei'
    ##################################################
    import base64
    b64 = base64.b64encode(s)
    print 'b64:	',b64
    deb64 = base64.b64decode(b64)
    print 'deb64:	',deb64
    ##################################################
    import hashlib
    h = hashlib.sha1()
    h.update(s)
    sha1 = h.hexdigest()
    print 'sha1:	',sha1
    ##################################################
    import hashlib
    h = hashlib.sha256()
    h.update(s)
    sha256 = h.hexdigest()
    print 'sha256:	',sha256
    ##################################################
    import hashlib
    h = hashlib.sha512()
    h.update(s)
    sha512 = h.hexdigest()
    print 'sha512:	',sha512
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    功能:获得当前日期和时间
    参数数量:0
    参数列表:
        
    
    返回数量:2
    返回值列表:
        day     ##日期
        now     ##时间
    
    '''
    import time
    def getTime():
        day = time.strftime("%Y-%m-%d",time.localtime())
        now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
        return day,now
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:这个要用 # -*- coding: cp936 -*-
    功能:解读.eml文件
    参数数量:1
    参数列表:
        emlFileName ##eml文件名
    
    返回数量:2
    返回值列表:
        如果有附件,就输出两个文件,如果没有就一个说明文档
    
    使用方法:
        eml = emailStruct() # 定义结构对象
        eml.openAndRead(emlFileName)
        eml.txtWrite()
    '''
    import email
    class emailStruct:
        def __init__(self):
            self.eSubject = ''      # 邮件主题
            self.eFromName = ''     # 发件人名字
            self.eFromAddr = ''     # 发件人地址
            self.eToAddr = ''     # 收件人地址 可能是多个地址组合的字符串 用'
    '相隔
            self.eTime = ''     # 时间
            self.eAppendix = ''  # 附件名称
            self.eContent = ''  # 邮件正文
    
    
        def openAndRead(self,emlFileName):
            feml = open(emlFileName, 'r')
            msg = email.message_from_file(feml)
    
            ##此段得到 邮件主题
            subject = msg.get('subject')
            h = email.Header.Header(subject)
            dh = email.Header.decode_header(h)  ##此处可解析一些编码
            subject = dh[0]
            self.eSubject = subject[0]
    
            ##此段得到 发件人姓名 和 发件人地址
            efrom = email.utils.parseaddr(msg.get('from'))
            self.eFromName = efrom[0]
            self.eFromAddr = efrom[1]
    
            ##此段得到 收件人地址
            eto = ''
            for toline in msg.get('to').splitlines():
                findst = toline.find('<')
                if findst == -1:
                    eto = email.utils.parseaddr(msg.get('to'))[1]
                else:
                    eto = eto + toline[findst:] + '
    '
            self.eToAddr = eto
    
            ##此段得到 时间
            etime = msg.get('date')
            self.eTime = etime
    
            ##循环邮件主体
            p = ''
            for bodycheck in msg.walk():
                if not bodycheck.is_multipart():
                    psname = bodycheck.get_param('name')
    
                    ##如果是附件
                    if psname:
                        self.eAppendix = psname
                        psh = email.Header.Header(psname)
                        psdh = email.Header.decode_header(psh)
                        psfname = psdh[0][0]
    
                        data = bodycheck.get_payload(decode = True)
    
                        try:
                            f = open(psfname, 'wb')
                        except:
                            f = open('tempps', 'wb')
    
                        f.write(data)
                        f.close()
    
                    ##否则是纯文本
                    else:
                        data = bodycheck.get_payload(decode = True)
                        p = p + str(data)
                        
                    self.eContent = p
    
            feml.close()
    
        ##输出eml结构的内容
        def txtWrite(self):
                try:
                    ftxt = open('emailInfo.txt', 'w')
                except IOError:
                    print IOError
                        
                lines = r'邮件主题:	' + self.eSubject + '
    ' + 
                                '发件人姓名:	' + self.eFromName + '
    ' + 
                                '发件人地址:	' + self.eFromAddr + '
    ' + 
                                '收件人地址:	' + self.eToAddr + '
    ' + 
                                '日期:	' + self.eTime + '
    ' + 
                                '附件名:	' + self.eAppendix + '
    ' + 
                                '正文内容:	
    ' + self.eContent
                ftxt.write(lines)
                ftxt.close()
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:接收不到你要调用的函数的返回值
    功能:设定时间(就是每天的几点几分:24小时制),到点调用你想调用的函数
    参数数量:3
    参数列表:
        hour    ##时
        mi      ##分
        funName     ##函数名  这个是隐藏的 不能直接写在参数列表里面
    
    返回数量:0
    返回值列表:
        
    
    '''
    import time
    def setTimeTask( hour, mi):
        while 1:
            rh=int(time.strftime("%H",time.localtime()))
            rm=int(time.strftime("%M",time.localtime()))
            h = int(hour)
            m = int(mi)
            if h==rh:
                if m<=rm:
                    time.sleep(23*3600+(60+m-rm)*60)
                    
                    getStringMd5('wangshiwei') ##你想调用的函数
                    
                    time.sleep(60)
                    continue
                else:
                    time.sleep((m-rm)*60)
                    
                    getStringMd5('wangshiwei') ##你想调用的函数
                    
                    time.sleep(60)
                    continue
            elif h>rh:
                tem1=(h-rh-1)*3600+(60-rm+m)*60
                time.sleep(tem1)
                
                getStringMd5('wangshiwei') ##你想调用的函数
                
                time.sleep(60)
                continue
            else:
                tem2=(23+rh-h)*3600+(60-rm+m)*60
                time.sleep(tem2)
                
                getStringMd5('wangshiwei') ##你想调用的函数
                
                time.sleep(60)
                continue
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:接收不到你要调用的函数的返回值
    功能:设定时间(就是每天的几点几分:24小时制),到点调用你想调用的函数
    参数数量:1
    参数列表:
        p_strCommand    ##字符串形式的命令   比如:'ping  -n 2 -w 1 www.baidu.com' ##ping ip 2次,等待时间为1s
    
    返回数量:1
    返回值列表:
        redata  ##你调用程序的返回值
    
    '''
    import subprocess
    def callExe(p_strCommand):
        redata = ''
        try:
            wdata = subprocess.Popen(p_strCommand, shell=True ,stdout=subprocess.PIPE)
            redata =  wdata.communicate()[0].decode('gb2312')
            wdata.wait()
        except Exception,e:
            redata = e
        return redata
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:查找给定字符串中的所有 IP 地址
    参数数量:1
    参数列表:
        p_strCommand    ##字符串
    
    返回数量:1
    返回值列表:
        iplist  ##返回一个ip地址的列表
    
    '''
    import re
    def findAllIP(p_strings):
        iplist = []
        p = r'(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
        mo = re.compile(p)
        m = mo.search(p_strings)
        if not m:
            iplist.append('NULL')
        else:
            iplist = mo.findall(p_strings)
        return iplist    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:这是http,不是https
    功能:有些网址需要先登录在下载,比如我想要下载人人相册,就需要先登录才能看见相册,这个根据不同网站要抓包分析
    参数数量:3
    参数列表:
        url     ##你想要下载的url
        user    ##用户名
        password    ##密码
    
    返回数量:1
    返回值列表:
        data    ##页面的html代码,也可能是错误信息
    
    '''
    import urllib
    import cookielib
    import urllib2
    def renrenBrowser(url,user,password):
        #登陆页面,可以通过抓包工具分析获得,如finddler,wireshark
        login_page="http://www.renren.com/PLogin.do"
    
        try:
            #获得一个cookieJar实例,它负责从服务器下载Cookie到本地,并且在发送请求时带上本地的cookie
    
            data = ''
            cj=cookielib.LWPCookieJar()
            
            #cookieJar作为参数 获得一个opener的实例
            opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj),urllib2.HTTPHandler)
            #伪装成一个正常的浏览器,避免有些web服务器拒绝访问
            opener.addheaders=[('User-agent','Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1)')]
            #生成Post数据,含有登陆用户名和密码。
            data=urllib.urlencode({"email":user,"password":password})
            #以Post的方法访问登陆页面,访问之后cookieJar会自动保存cookie
            opener.open(login_page,data)
            #以带Cookie的方式访问页面
            op=opener.open(url)
            #读取页面的源码
            data=op.read()
    ##        data.decode('utf-8')
            return data
        except Exception,e:
            print str(e)   
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:使用cookie下载网站页面数据 注意要有http字样头,默认超时时间:5秒
    参数数量:1
    参数列表:
        url     ##你想要下载的url
    
    返回数量:1
    返回值列表:
        data    ##页面的html代码,也可能是错误信息
    
    '''
    import urllib
    import cookielib
    import urllib2
    def downloadUrl(url):
        data = 'NULL'
        urlPathOne = url
        cj = cookielib.CookieJar()
        auth_handler = urllib2.HTTPBasicAuthHandler()
        opener = urllib2.build_opener(urllib2.HTTPSHandler(),auth_handler,urllib2.HTTPCookieProcessor(cj))
        urllib2.install_opener(opener)
        URL_Start = urlPathOne
        try:
            handle = urllib2.urlopen(URL_Start,5)
            data = handle.read()
        except IOError, e:
            return e
        return data
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:使用httpheader模拟浏览器下载网页页面数据 注意要有http字样头,默认超时时间:5秒
    参数数量:1
    参数列表:
        url     ##你想要下载的url
    
    返回数量:1
    返回值列表:
        data    ##页面的html代码,也可能是错误信息,也可能是NULL
    
    '''
    import urllib
    import cookielib
    import urllib2
    import socket
    def httpHeader(url):
        socket.setdefaulttimeout(5)
        data = 'NULL'
        try:
            req_header = {  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0',
                            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                            'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
                            'Cookie':'anonymid=hwyz9f6r-ipg7xm; jebe_key=f7c92a91-c7e9-4b69-bdc1-bf5f766b8132%7Ca22b0134bed0e5baa9f32a412aad1b46%7C1403968344919%7C1%7C1403968331677; depovince=JL; _r01_=1; jebecookies=39fccb4d-c041-4891-af90-ab5c553d21c7|||||; ick_login=5449ca00-3317-47c1-b668-c56cca3ab128; _de=37E78EAE52CFD393416FD9B685238F34F4489C1C70DDCBF9; p=ba366aeeaba84cca4169e2c0d286811a1; ap=341251011; first_login_flag=1; t=6f2c8f21365082101c61dbf5f01bb20f1; societyguester=6f2c8f21365082101c61dbf5f01bb20f1; id=341251011; xnsid=1cf75790; loginfrom=null',
                            'Accept-Encoding':'deflate',  ##这个地方要注意 不能使压缩的 
                            'Connection':'keep-alive',
                            'Referer':'http://page.renren.com' ##注意如果依然不能抓取的话,这里可以设置抓取网站的host
                          }
            req_timeout = 5
            req = urllib2.Request(url,None,req_header)
            resp = urllib2.urlopen(req,None,req_timeout)
            data = resp.read()
            resp.close()
            return data
        except Exception,e:
            return e
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:路径的斜杠 '/'
    功能:ftp下载:指定IP,指定路径,指定的文件名  这里是默认密码,如果有其他账户和密码,在login中添加
    参数数量:3
    参数列表:
        HOST     ## IP 或者 域名
        DIRN     ## 目录,两边不要斜杠
        FILE     ## 文件名
    
    返回数量:0
    返回值列表:
        返回的是你想要下载的文件
    
    使用方法:
        HOST = '10.0.250.251'
        DIRN = 'disk0/Source/Cases-Analysis/[2012-10-29]CyberUAE'
        FILE = 'amro.pdf'
    '''
    import ftplib
    import socket
    def ftpDownFile(HOST, DIRN, FILE):
        try :
            f = ftplib.FTP(HOST)
        except (socket.error, socket.gaierror), e:
            print 'ERROR: cannot reach "%s" ' % HOST
            return
        print '*** Connected to host "%s" ' % HOST
    
        try :
            f.login()
        except ftplib.error_perm:
            print 'ERROR: cannot login anonymously'
            f.quit()
            return
        print '*** Logged in as "anonymous" '
    
        try :
            f.cwd(DIRN)
        except ftplib.error_perm:
            print 'ERROR: cannot CD to "%s" ' % DIRN
            f.quit()
            return
        print '*** Changed to "%s" folder' % DIRN
            
        try:
            file_handler = open(FILE, 'wb')
            #'RETR %s'  %s后面不能有空格 要不然会报错 没有这个文件 唉
            f.retrbinary('RETR %s' % FILE,file_handler.write)
            file_handler.close()
        except ftplib.error_perm:
            print 'ERROR: cannot read file "%s" ' % FILE
            file_handler.close()
            os.unlink(FILE)
        else:
            print '*** Downloaded "%s" to CWD' % FILE
        f.quit()
        return
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:ftp   连接远程ftp、遍历某个文件夹返回文件名列表、下载一个文件、关闭ftp
    参数数量:太多
    参数列表:
        太多,应该写个类,以后再说
    
    返回数量:太多
    返回值列表:
        
    
    使用方法:
        ftpConnect('10.255.80.42','21','update','123456')
        aa = getRemoteList('third')
        downOneFile(aa[0])
        ftpClose()
    '''
    import ftplib
    import socket
    ftp = ftplib.FTP()
    def ftpConnect(SrvIP, SrvPort, SrvUser, SrvPass):         
        ftp.set_debuglevel(2)
        try:
                ret=ftp.connect(SrvIP, SrvPort) 
        except:
                str = "220"
                ftpfind = ret.find(str)       
                if ftpfind == -1:
                        return -1
        try:
                ret = ftp.login(SrvUser, SrvPass)
        except:
                ftpfind = ret.find("230")
                if ftpfind == -1:
                        return -1
    ##        print ftp.getwelcome()         
        return 0
    def getRemoteList(remotepath):
        remotedir_res = []
        filesnum = 0
        dirnum = 0
        ftp.cwd(remotepath)
        dir_res = []
        ftp.dir('.', dir_res.append)
        files = [f.split(None, 8)[-1] for f in dir_res if  f.find('<DIR>')==-1] 
        for f in files:
            remotedir_res.append(f)
            filesnum = filesnum + 1
        dirs = [f.split(None, 8)[-1] for f in dir_res if f.find('<DIR>')>=0]
        for d in dirs:
            dirnum = dirnum + 1
            remotedir_res.append(d)
        while True:
            if filesnum < dirnum + filesnum:                          
                    fa, db=get_dirs_files(remotedir_res[filesnum], filesnum)
                    filesnum = filesnum + fa
                    dirnum = dirnum + db-1
            else:
                     break
        return remotedir_res
    def downOneFile(filepath):
        restr = ''
        try:
             file_handler = open(filepath,'wb')
             ftp.retrbinary('RETR %s' % filepath,file_handler.write)  ##下载这个文件
             file_handler.close()
             restr = 'success'
        except Exception,e:
            restr = str(e)
        return restr
    def ftpClose():        
        ret = ftp.quit()
        ftpfind = ret.find("221")        
        if ftpfind == -1:
                print 'Python ftpclose fail'
                return 0
        return 1
        
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:复制文件
    参数数量:2
    参数列表:
        targetfilepath  ##目标文件全路径
        sourcefilepath  ##源文件全路径
    
    返回数量:0
    返回值列表:
    
    使用方法:
        copyFile('ipport.rar','guazaiipport.rar')
        
    '''
    def copyFile(targetfilepath, sourcefilepath):
        source_data = open(sourcefilepath,'rb').read()
        open(targetfilepath,'wb').write(source_data)
        
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:检查目录是否存在,创建目录可以是多层的,检查文件是否存在
    参数数量:2
    参数列表:
        targetfilepath  ##目标文件全路径
        sourcefilepath  ##源文件全路径
    
    返回数量:太多
    返回值列表:
        太多
    使用方法:
        copyFile('ipport.rar','guazaiipport.rar')
        makeDir('d:guazai')
        checkFile('d:commonall.py')
        
    '''
    import os
    def checkDir(s_dir):
        if not os.path.isdir(s_dir):
            return 'no'
        else:
            return 'yes'
    def makeDir(s_dir):
        try:
            os.makedirs(s_dir)
            return 'makedir success'
        except Exception,e:
            redata = ''
            if str(e).find('Error 183')+1:
                redata = 'already  exists	'
            return redata + str(e)
    def checkFile(filePath):
        if not os.path.isfile(filePath):
            return 'no'
        else:
            return 'yes'
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:连接mysql数据库,同时如果没有就创建数据库,关闭连接,创建表
    参数数量:2
    参数列表:
        targetfilepath  ##目标文件全路径
        sourcefilepath  ##源文件全路径
    
    返回数量:0
    返回值列表:
    
        
    '''
    import MySQLdb
    class MysqlDBOper:
        global cnn,cur
        def cnnsql():
            cnn = MySQLdb.connect(host = 'localhost', user = 'wangshiwei', passwd = 'wangshiwei', db = 'dbcryptam')
            ##如果没有数据库dbcryptam  就创建一个,如果有就拉倒
            cnn.query('create DATABASE if not exists dbcryptam')
            cur = cnn.cursor()
            
        def cnnclose():
            cur.close()
            cnn.close()
    
        def createtable():
            ##建表cryptam  
            cur.execute("CREATE TABLE IF NOT EXISTS cryptam(Id INT PRIMARY KEY AUTO_INCREMENT, sha256 VARCHAR(64),SampleDetails LONGTEXT,YaraTags LONGTEXT,Cryptanalysis LONGTEXT,Metadata LONGTEXT,ExternalDynamicResults LONGTEXT,Strings LONGTEXT)")
            cnn.commit()
    
    ##    def insertvalue(sha256, SampleDetails, YaraTags, Cryptanalysis, 
    ##                    Metadata, ExternalDynamicResults, Strings):
    ##        sqlstr = "INSERT INTO cryptam(sha256, SampleDetails, YaraTags, Cryptanalysis, Metadata, ExternalDynamicResults, Strings) VALUES('%s','%s','%s','%s','%s','%s','%s')" % (sha256, SampleDetails, YaraTags, Cryptanalysis, Metadata, ExternalDynamicResults, Strings)
    ##        cur.execute(sqlstr)
    ##
    ##    def updatevalue(SampleDetails):
    ##        sqlstr = "update cryptam set SampleDetails='%s'" % SampleDetails
    ##        cur.execute(sqlstr)
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:测试目的IP的端口的开放状态
    参数数量:2
    参数列表:
        ip      ##目标IP
        port    ##端口号,这里可以是字符串,也可以是int型
    
    返回数量:1
    返回值列表:
        flag    #打开还是关闭
        
    '''
    import socket
    def isIPPortOpen(ip,port):
        flag = ''
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
            s.connect((ip,int(port))) #注意这里的参数形式,多了一层括号
            s.shutdown(2)
            flag = 'open'
        except:  
            flag = 'close'
        return flag
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:多线程
    参数数量:1
    参数列表:
        step    ##线程数量,但是调用的另一个函数时,参数是要在里面给出的
    
    返回数量:0
    返回值列表:
    
        
    '''
    import threading
    import time
    def startThread(step):
        threads = []
        for port in range(step):
            t = threading.Thread(target = singleFun, args = ('a','b',))  ##这里注意多个逗号
            threads.append(t)
            
        for i in range(len(threads)):
            time.sleep(0.1)   ##延时  如果不适用延时,则几乎一起开始
            threads[i].start()
            
        for i in range(len(threads)):
            threads[i].join()
    def singleFun(a,b):
        print a
        print b
        print ''
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:获得cmd参数,aa.py a b c d e 分别对应下表0 1 2 3 4 5 
    参数数量:0
    参数列表:
        
    
    返回数量:1
    返回值列表:
        返回只返回真正的参数,从a开始的列表
        
    '''
    import sys
    def getArgs():
        argarr = []
        argarr = sys.argv[1:]
        return argarr
        
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:解析html标签,找到你想要找到的标签
    参数数量:1
    参数列表:
        filename    #文件全名
    
    返回数量:太多
    返回值列表:
        太多,看你想要什么
        
    '''
    from bs4 import BeautifulSoup
    def htmltag(filename):
        htmlSourceData = open('5e1b6901604.txt', 'r').read().replace('
    ', '')
        soup = BeautifulSoup(htmlSourceData)
        tag = soup.html
    
        ##print 'tag.head: 
    ',tag.head
        ##print 'tag.title: 
    ',tag.title
        ##print 'tag.meta: 
    ', tag.meta
        ##print 'tag.a: 
    ', tag.a
    
        ##aa = tag.children
        ##print 'tag.children: 
    ', aa
        ##for a in aa:
        ##    print a
        ##    break
    
        ##print tag.head.meta
    
        ##for i in range(10):
        ##    print soup.contents[i].name ##不理解
    
        ##for child in soup.descendants:  ##所有
        ##    print child
        ##    print '
    '
    
        ##for div in tag.find_all('font',color = 'red'):
        ##    print div
        ##for div in tag.find_all('img', border = 0, width = 552, height = 200):
        ##    print div
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:这不是函数,是整个脚本,测试一段ip中哪些可以用默认密码判定ftp服务是开启的,为了提高速度,先ping一下得到可以ping通的列表,然后在ftp测试
    参数数量:0
    参数列表:
        
    
    返回数量:0
    返回值列表:
       
        
    '''
    import ftplib
    import threading
    def pingip(ip):
        #每个ip ping2次,等待时间为1s
        output = os.popen('ping -n 2 -w 1 %s' % ip.strip())
        return1 = output.read().find('TTL=')+1
    
        if return1:
            yesiplist.append(ip)
    def main(HOST):
        try :
            f = ftplib.FTP(HOST)
            f.login()
            f.quit()
            print 'OK: %s' % HOST
        except Exception,e:
            print e
            return
    if __name__ == '__main__':
        yesiplist = []
        threads = []
        for i in range(0,256):
            HOST = '10.0.250.' + str(i)
            t = threading.Thread(target = pingip, args = (HOST,))
            threads.append(t)
        for th in threads:
            th.start()
        for th in threads:
            th.join()
    
        for yil in yesiplist:
            print yil
            main(yil)
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:向网站post数据,这个是恶意像某个手机发短信的脚本,利用的是有些网站像手机发送验证码 #字样的需要修改
    参数数量:0
    参数列表:
        
    
    返回数量:0
    返回值列表:
       
        
    '''
    import httplib
    def postData():
        params = " "    #body的内容
        headers = {
             "User-Agent": Mozilla/5.0 "(compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BOIE9;ENUS)",
             "Accept": "text/html, */*; q=0.01",
             "Accept-Language": "en-us",
             "Content-Type": "application/x-www-form-urlencoded",
             "Referer": " ",          #提交前的页面
             "Host": " "}          #
        con = httplib.HTTPConnection("www.xxx.com")    #
        con.request("POST", "/URI",params,headers)    #URI为提交后的页面,去掉前面的主机地址
    
        response = con.getresponse()
        if response.status == 200:        注:这里的返回代码并不能说明能成功接收短信
            print "Success","
    "
        else:
            print "Failed","
    "
        con.close()
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:对一个字典的value值(int),进行排序
    参数数量:1
    参数列表:
        dicName     #一个待排序的字典
    
    返回数量:1
    返回值列表:
       sorted_x     #排好序的字典序列,注意他是很多字典组成的序列
    
    使用方法:
        for key in sorted_x:
            print key[0],str(key[1])
        
    '''
    def sortDic(dicName):
        sorted_x = sorted(dicName.iteritems(),key = lambda asd:asd[1], reverse=True)
        return sorted_x
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:这里要使用  # -*- coding: utf-8 -*-
    功能:mechanize 模拟提交表单登陆
    参数数量:0
    参数列表:
        这里根据不同需求,想要post的参数个数不同,所以可以把用户名和密码换成更多 
    
    返回数量:1
    返回值列表:
       htmldata     #post之后返回的html数据
    
    使用方法:
        
        
    '''
    import mechanize
    def postForm():
        br = mechanize.Browser()
        br.set_handle_robots(False)   # no robots
        br.set_handle_refresh(False)  # can sometimes hang without this
        br.set_handle_equiv(True)
        #br.set_handle_gzip(True)
        br.set_handle_redirect(True)
        br.set_handle_referer(True)
    
        br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
        br.open(r'http://bbs.pediy.com/')
        formcount=0
        for frm in br.forms():
            if str(frm.attrs["action"])=="login.php?do=login":
                break
            formcount=formcount+1
        br.select_form(nr=formcount)
    
        control=br.form.find_control('vb_login_username')
        control.value=r'aaaa'  ##用户名
    
        control=br.form.find_control('vb_login_password')
        control.value=r'aaaa'  ##密码
    
        response = br.submit()  ##提交表单.decode('gbk')
        htmldata = response.read()
        if htmldata.find(r'感谢您登录,紫川。')>-1:
            print u'登录成功'
        else:
            print u'登录失败'
        return htmldata
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:安装相应的模块需要百度自己的云盘或者下载:http://nchc.dl.sourceforge.net/project/pyhook/pyhook/1.5.1/pyHook-1.5.1.win32-py2.7.exe
        第一次运行时,提示没有pythoncom模块,就安装了pywin32,安装后,可以正常运行,但是会导致机器发卡,特别是中断程序运行后,鼠标会出现一段时间的自由晃动,找了半天原因,感觉主要是事件频率过高,程序会经常卡在pythoncom.PumpMessages()。
        网上搜索了半天,看到有一帖子说是pythoncom.PumpMessages(n),n表示延迟时间,于是试着改了下,发现有一定效果,但不明显,后来想是不是因为没有终止程序,才会导致一直很卡呢,于是添加终止程序语句win32api.PostQuitMessage()。结果还算满意。
    
    功能:钩子实现鼠标和键盘按键事件响应
    参数数量:0
    参数列表:
         
    
    返回数量:0
    返回值列表:
       
    
    使用方法:
        
        
    '''
    import pythoncom
    import pyHook
    import time
    import threading
    import win32api
    
    def onMouseEvent(event):
    ##    #打开日志文件
    ##    file_name = "log/hook_log.txt"
    ##    fobj = open(file_name,  'a') 
    ##    
    ##    "处理鼠标事件"
    ##    fobj.writelines('-' * 10 + 'MouseEvent Begin' + '-' * 20 + '
    ')
    ##    fobj.writelines("Current Time: %s
    " % time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))
    ##    fobj.writelines("MessageName: %s
    " % str(event.MessageName))
    ##    fobj.writelines("Message: %d
    " % event.Message)
    ##    fobj.writelines("Time_sec: %d
    " % event.Time)
    ##    fobj.writelines("Window: %s
    " % str(event.Window))
    ##    fobj.writelines("WindowName: %s
    " % str(event.WindowName))
    ##    fobj.writelines("Position: %s
    " % str(event.Position))
    ##    fobj.writelines('-' * 10 + 'MouseEvent End' + '-' * 20 + '
    ')
    ##
    ##    #关闭日志文件
    ##    fobj.close()
    ##    print '%s' % event.MessageName
        return True
    
    
    def onKeyboardEvent(event):
    ##    #打开日志文件
    ##    file_name = "log/hook_log.txt"
    ##    fobj = open(file_name,  'a') 
    ##    
    ##    ##"处理键盘事件"  
    ##    fobj.writelines('-' * 20 + 'Keyboard Begin' + '-' * 20 + '
    ')
    ##    fobj.writelines("Current Time:%s
    " % time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))
    ##    fobj.writelines("MessageName:%s
    " % str(event.MessageName))
    ##    fobj.writelines("Message:%d
    " % event.Message)
    ##    fobj.writelines("Time:%d
    " % event.Time)
    ##    fobj.writelines("Window:%s
    " % str(event.Window))
    ##    fobj.writelines("WindowName:%s
    " % str(event.WindowName))
    ##    fobj.writelines("Ascii_code: %d
    " % event.Ascii)
    ##    fobj.writelines("Ascii_char:%s
    " % chr(event.Ascii))
    ##    fobj.writelines("Key:%s
    " % str(event.Key))
    ##    fobj.writelines('-' * 20 + 'Keyboard End' + '-' * 20 + '
    ')
        if str(event.Key)=='F12':  #按下F12后终止
                wrfile.writelines("Ascii_char:%s
    " %asciistr)
                wrfile.writelines("Key_char:%s
    " %keystr)
                wrfile.close()    
                win32api.PostQuitMessage()
        global keyv
        keyv = event.Ascii
        if event.Ascii==27:
            print 'Esc======='
    ##    print '%d' % event.Ascii
    ##    #关闭日志文件
    ##    fobj.close()
        return True
    def loop(a):
        while(a):
            time.sleep(1)
            print str(a)
            a += 1
            global keyv
            if keyv == 27:
                break
                return
    
    def hookfun():
        #创建hook句柄
        hm = pyHook.HookManager()
    
        #监控键盘
        hm.KeyDown = onKeyboardEvent
        hm.HookKeyboard()
    
        #监控鼠标
        hm.MouseAll = onMouseEvent
        hm.HookMouse()
       
        #循环获取消息
        pythoncom.PumpMessages(1)
    
    if __name__ == "__main__":
        global keyv
        keyv = 1
        a = 1
    
        ##这里开两个线程,因为这样主线程就不卡了
        ##一个参数时候要写成元组的形式,要不然会报错:argument after * must be a sequence, not int
        t = threading.Thread(target = loop, args = (a,)) #这个是监视全局变量的
        t2 = threading.Thread(target = hookfun, args = ()) 
        t.start()
        t2.start()
        t.join()
        t2.join()
        print '-------------------------------------------------------'
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:如果邮箱没有开启STMP服务,需要到设置里面开启STMP服务,否则会报454,'Authentication' failed, please open smtp flag first这个错误
    
    功能:发送邮件
    参数数量:太多,自己看
    参数列表:
         
    
    返回数量:太多,自己看
    返回值列表:
       
    
    使用方法:
        
        
    '''
    import time
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart  
    from email.mime.image import MIMEImage  
    
    def call_sendEmail():
        now = time.strftime("%a,%Y-%m-%d  %H:%M", time.localtime())
    
        title = u"%s  发送邮件 " % (now)
        ##这里注意:链接格式要正确 http://神马的,还有 如果想法带有链接的html格式的,要看下面正文处,把plain改成html
        content = '<html><h1><a href="http://www.tudou.com" title="假链接" target="_blank" > https://www.baidu.com</a></h1><h2><img src="cid:image1"></h2></html>'
        ##content = u'woshi群邮件55555555555 <img src="cid:image1">'
    
    
        ##这里可以有多个收件人的,就是说可以群发,格式要注意,要弄成array的形式
        mail_tolist = ['ccitwsw@sina.com']
        #设置服务器,用户名、口令以及邮箱的后缀
        mail_host = "smtp.163.com"
        mail_postfix = "163.com"
        dic_user = {'wei522688662@163.com':'wangshiwei'}
        for d in dic_user:
            mail_user = d
            mail_pass = dic_user[d]
    
            for mt in mail_tolist:
                mail_to = mt.strip()
                return_value = sendEmail( mail_to, title, content, mail_host, mail_user, mail_pass, mail_postfix)
                if return_value:
                    print "%s %s : 发送成功" % (now,mail_to)
                else:
                    print "%s %s : 发送失败" % (now,mail_to)
    
    
    def sendEmail( mail_to, title, content, mail_host, mail_user, mail_pass, mail_postfix):
    
        me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
    
        msgRoot = MIMEMultipart('related')
        msgRoot['Subject'] = title
        msgRoot['From'] = me
        msgRoot['To'] = mail_to
    
        ##正文内容
        msgText = MIMEText(content,'plain','utf-8') ##支持中文   ##注意 如果想发送html类型的 ,要把plain改成html
        msgRoot.attach(msgText)  
    
    ##    ##正文加个图片
    ##    fp = open('D:/python_test/picExif/pic.jpg', 'rb')  
    ##    msgImage = MIMEImage(fp.read())  
    ##    fp.close()  
    ##    msgImage.add_header('Content-ID', '<image1>')  
    ##    msgRoot.attach(msgImage) 
    ##
    ##    ##加个附件
    ##    att = MIMEText(open('D:/python_test/picExif/pic.jpg', 'rb').read(), 'base64', 'utf-8')  
    ##    att["Content-Type"] = 'application/octet-stream'  
    ##    att["Content-Disposition"] = 'attachment; filename="pic.jpg"'  
    ##    msgRoot.attach(att) 
        
        try:
            s = smtplib.SMTP()
            s.connect(mail_host)
    
    ##是否使用ssh  啊不对 好像是tls
    ##        s.ehlo()
    ##        s.starttls()  
    ##        s.ehlo()  
    ##        s.set_debuglevel(1) 
            
            s.login(mail_user,mail_pass)
            s.sendmail(me, mail_to, msgRoot.as_string())
            s.close()
    
            return True
        except Exception, e:
            print str(e)
            return False
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:把字符串形式的表达式当做正常表达式来求值
    参数数量:1
    参数列表:
         
    
    返回数量:1
    返回值列表:
       返回表达式值或者是错误信息
    
    使用方法:
        print eval('55+22')
        print calcString('55*22')
        
    '''
    ##eval函数可以把一个字符串当做表达式来求值
    def calcString(p_str):
        return eval(p_str)
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:读取PE文件的数据,你可以按照它的结构来读,也可以按照字节来读取
    参数数量:1
    参数列表:
         filename       ##pe文件名
    
    返回数量:0
    返回值列表:
       
    
    使用方法:
        
        
    '''
    import os
    import pefile
    
    def readPeFile(filename):
        ##filename = 'IEBox_fuck.exe'
    
        ##判定pe头的地址,顺便找到入口点
        pe = pefile.PE(filename)
        entrypoint = pe.DOS_HEADER.e_lfanew + 40
        if pe.DOS_HEADER.e_magic != 23117:
            print 'error MZ'
        if pe.NT_HEADERS.Signature != 17744:
            print 'error PE'
    
    
        ##读8个字节,从入口点开始,以下面为例:一个字节=8bit=4D=M
        fr = open(filename,'rb')
        fr.seek(entrypoint)     
        rdata = fr.read(8)          ##是这个样子的 4D 59 07 00 00 10 00 00         ;MY......
        fr.close()
    
    
        print len(rdata)
        fw = open('exe.txt','wb')
        fw.write(rdata)
        fw.close()
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
        测试方法1:telnet 127.0.0.1 9011 然后输入一些信息会出现
        listener started
        accept a connect
        w
        a
        n
        g
        ('close:', ('127.0.0.1', 54549))
        
        测试方法2:浏览器输入:127.0.0.1 9011
        listener started
        accept a connectGET /favicon.ico HTTP/1.1
    
        Host: 127.0.0.1:9011
    
        Connection: Keep-Alive
    
        User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0
    
        Accept-Encoding: gzip, deflate
    
    
    功能:监听本机端口
    参数数量:1
    参数列表:
        port       ##端口号
    
    返回数量:0
    返回值列表:
       
    
    使用方法:
        lst  = Listener(9011)   # create a listen thread
        lst.start() # then start
        
    '''
    import threading
    import socket
    
    encoding = 'utf-8'
    BUFSIZE = 1024
    
    # a read thread, read data from remote
    class Reader(threading.Thread):
        def __init__(self, client):
            threading.Thread.__init__(self)
            self.client = client
            
        def run(self):
            while True:
                data = self.client.recv(BUFSIZE)
                if(data):
                    string = bytes.decode(data, encoding)
                    print(string)
                else:
                    break
            print("close:", self.client.getpeername())
            
        def readline(self):
            rec = self.inputs.readline()
            if rec:
                string = bytes.decode(rec, encoding)
                if len(string)>2:
                    string = string[0:-2]
                else:
                    string = ' '
            else:
                string = False
            return string
    
    # a listen thread, listen remote connect
    # when a remote machine request to connect, it will create a read thread to handle
    class Listener(threading.Thread):
        def __init__(self, port):
            threading.Thread.__init__(self)
            self.port = port
            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            self.sock.bind(("0.0.0.0", port))
            self.sock.listen(0)
        def run(self):
            print("listener started")
            while True:
                client, cltadd = self.sock.accept()
                Reader(client).start()
                cltadd = cltadd
                print("accept a connect")
    
    lst  = Listener(9011)   # create a listen thread
    lst.start() # then start
    
    # Now, you can use telnet to test it, the command is "telnet 127.0.0.1 9011"
    # You also can use web broswer to test, input the address of "http://127.0.0.1:9011" and press Enter button
    # Enjoy it....
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:给个ip1和ip2,给出ip1和ip2之间左右的ip,包括边界
    参数数量:2
    参数列表:
        ip1       ##
        ip2         ##这个比上面的大
    
    返回数量:1
    返回值列表:
       一个从ip1到ip2的列表
    
    使用方法:
        bb = rangeIP('10.255.8.49','10.255.9.4')
        for b in bb:
            print b    
    '''
    def rangeIP(ip1,ip2):
        temp1 = ip1.strip().split('.')
        temp2 = ip2.strip().split('.')
        one1 = int(temp1[0])
        one2 = int(temp1[1])
        one3 = int(temp1[2])
        one4 = int(temp1[3])
        
        two1 = int(temp2[0])
        two2 = int(temp2[1])
        two3 = int(temp2[2])
        two4 = int(temp2[3])
        iparr = []
    
        ##ip 就是4位256进制的数
        init1 = one1*256*256*256 + one2*256*256 + one3*256 + one4
        init2 = two1*256*256*256 + two2*256*256 + two3*256 + two4
        for aa in range(init1,init2+1):
            c1 = aa / (256*256*256)
            c2 = (aa/(256*256)) % (256)
            c3 = (aa%(256*256)) / 256
            c4 = aa % (256)
            strip = str(c1) + '.' + str(c2) + '.' + str(c3) + '.' + str(c4)
            iparr.append(strip)
        return iparr
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:三个函数,catName,search,findall
    参数数量:1
    参数列表:
        p_str       ## 待正则查找的字符串
    
    返回数量:1
    返回值列表:
       catName,或者全部字符串,或者一个findall列表
    
    使用方法:
        g=u"分类: abcdef | 标签:分类: 0123 | 标签:"
        print getRecatName(g)
        print getReSearch(g)
        print getReFindAll(g)   
    '''
    import re
    def getRecatName(p_str):
        bbbb = re.search(u"分类:(?P<catName>.*?)|", p_str)
        if(bbbb):
            catName = bbbb.group("catName")
            return catName
        else:
            return ''
    
    def getReSearch(p_str):
        bbbb = re.search(u"分类:(?P<catName>.*?)|", p_str)
        if(bbbb):
            return bbbb.group(0)
        else:
            return ''
    
    def getReFindAll(p_str):
        finda = re.findall(u"分类:(?P<catName>.*?)|", p_str)
        if finda:
            return finda
        else:
            return ''
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:在不用层次文件夹中调用某个python文件
    参数数量:
    参数列表:
    
    
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    ####如果和本文件同一层有个文件名为:filename.py
    import filename
    
    ####如果和本文件同一层有个文件夹dir,dir里面有个filename.py
    import sys
    sys.path.append('dir')
    import filename
    
    ##如果本文件上面层有个文件filename.py
    import sys
    sys.path.append('..')
    import filename
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:url的编码和解码
    参数数量:
    参数列表:
    
    
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    # -*- coding: utf-8 -*-
    import urllib
    
    ##解码
    encodedUrl = "http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html"
    decodedUrl = urllib.unquote(encodedUrl)
    print "encodedUrl=	%s
    decodedUrl=	%s"%(encodedUrl, decodedUrl)
    
    ##编码
    decodedUrl = 'http://www.bai du.com/cache/user/html/jump.html'
    ##1、将空格编码为%20
    encodeUrl = urllib.quote(decodedUrl)
    print encodeUrl
    
    ##2、将空格编码为+加号  这个比较常用
    encodeUrl = urllib.quote_plus(decodedUrl)
    print encodeUrl
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    注意:不同网站有不同的格式,需要抓包
    
    功能:想一个网站 Post数据
    参数数量:2
    参数列表:
        url     ##post的url
        pdata   ##post的数据,是个字典
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    import urllib
    import urllib2
    
    def postx(url, bd):    
        if bd:
            try:
                req = urllib2.Request(url, urllib.urlencode(bd)) ##发送的数据是要加密的
                u = urllib2.urlopen(req)
                return u.read()
            except Exception,e:
                return str(e)
    
    url = 'https://218.203.13.216/api/Submit?marketid=TestUpload&sign=0b65db4cceebb5aca527ab4d3039ca94'
    bd = {"md5":"7b119bb6058ca8d992f4112ddb64924e","download_url":"http://test.cn/test.apk","appname":"u6d4bu8bd5u5e94u75281","version_name":"2.0.0.1","developer":"test","developer_tel":"0755-88888888","developer_email":"xxxxxxx","app_description":"test1"},{"md5":"5b119bb6058ca8d992f4112ddb649223","download_url":"http://test.cn/test2.apk","appname":"u6d4bu8bd5u5e94u75282","version_name":"2.0.0.2","developer":"test","developer_tel":"0755-88888888","developer_email":"xxxxxxx","app_description":"test2"},{"md5":"5b119bb6058ca8d992f4112ddb649227","download_url":"http://test.cn/test2.apk","appname":"u6d4bu8bd5u5e94u75283","version_name":"2.0.0.3","developer":"test","developer_tel":"0755-88888888","developer_email":"xxxxxxx","app_description":"test3"}
    a = postx(url, bd)
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:一个模块的使用,可以获得很多系统的信息  psutil
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    import psutil
    import os
    print os.getpid()
    print psutil.Process(os.getpid())
    eachPro = psutil.Process(1560)
    eachProName = eachPro.name
    print eachPro
    print eachProName
    plist = psutil.get_process_list()
    for pl in plist[3:]:
        print pl
    ##    eachPro = psutil.Process(980)
    ##    eachProName = eachPro.name
    ##    print str(eachProName).lower()
    ##    print eachPro.exe
    ##    aa = eachPro.username;
    ##    print aa
        
    ##    print eachPro.get_memory_maps()
        break
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:webPathScan2  扫描一个网站,找到管理员登陆的入口
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    #!/usr/local/bin/python
    #-*- coding: UTF-8 -*-
    #QQ29295842     python  网络安全编程群 138612676    希望认识更多的朋友
    #BLOG  http://hi.baidu.com/alalmn
    import httplib
    import socket
    import sys
    try:
        print "	################################################################"
        print "	#                                        www.teamopenfire.com  #"
        print "	#       ###############      ########       ############       #"
        print "	#       #             #     ##      ##      #          #       #"
        print "	#       ######   ######     ##      ##      #   ########       #"
        print "	#            #   #          ##      ##      #   #              #"
        print "	#            #   #          ##      ##      #   #####          #"
        print "	#            #   #          ##      ##      #   #####          #"
        print "	#            #   #          ##      ##      #   #              #"
        print "	#            #   #          ##      ##      #   #              #"
        print "	#            #####    [#]    ########   [#] #####  AdminFinder #"
        print "	#                                                              #"
        print "	#                                            coded by Ajith KP #"
        print "	#                          Greets to Coded32 and T.O.F members #"
        print "	################################################################"
        var1=0
        var2=0
        php = ['admin/','administrator/','admin1/','admin2/','admin3/','admin4/','admin5/','usuarios/','usuario/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
               'memberadmin/','administratorlogin/','adm/','admin/account.php','admin/index.php','admin/login.php','admin/admin.php','admin/account.php',
               'admin_area/admin.php','admin_area/login.php','siteadmin/login.php','siteadmin/index.php','siteadmin/login.html','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
               'admin_area/index.php','bb-admin/index.php','bb-admin/login.php','bb-admin/admin.php','admin/home.php','admin_area/login.html','admin_area/index.html',
               'admin/controlpanel.php','admin.php','admincp/index.asp','admincp/login.asp','admincp/index.html','admin/account.html','adminpanel.html','webadmin.html',
               'webadmin/index.html','webadmin/admin.html','webadmin/login.html','admin/admin_login.html','admin_login.html','panel-administracion/login.html',
               'admin/cp.php','cp.php','administrator/index.php','administrator/login.php','nsw/admin/login.php','webadmin/login.php','admin/admin_login.php','admin_login.php',
               'administrator/account.php','administrator.php','admin_area/admin.html','pages/admin/admin-login.php','admin/admin-login.php','admin-login.php',
               'bb-admin/index.html','bb-admin/login.html','acceso.php','bb-admin/admin.html','admin/home.html','login.php','modelsearch/login.php','moderator.php','moderator/login.php',
               'moderator/admin.php','account.php','pages/admin/admin-login.html','admin/admin-login.html','admin-login.html','controlpanel.php','admincontrol.php',
               'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','rcjakar/admin/login.php','adminarea/index.html','adminarea/admin.html',
               'webadmin.php','webadmin/index.php','webadmin/admin.php','admin/controlpanel.html','admin.html','admin/cp.html','cp.html','adminpanel.php','moderator.html',
               'administrator/index.html','administrator/login.html','user.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html',
               'moderator/login.html','adminarea/login.html','panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html',
               'admincontrol/login.html','adm/index.html','adm.html','moderator/admin.html','user.php','account.html','controlpanel.html','admincontrol.html',
               'panel-administracion/login.php','wp-login.php','adminLogin.php','admin/adminLogin.php','home.php','admin.php','adminarea/index.php',
               'adminarea/admin.php','adminarea/login.php','panel-administracion/index.php','panel-administracion/admin.php','modelsearch/index.php',
               'modelsearch/admin.php','admincontrol/login.php','adm/admloginuser.php','admloginuser.php','admin2.php','admin2/login.php','admin2/index.php','usuarios/login.php',
               'adm/index.php','adm.php','affiliate.php','adm_auth.php','memberadmin.php','administratorlogin.php']
        asp = ['admin/','administrator/','admin1/','admin2/','admin3/','admin4/','admin5/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
               'memberadmin/','administratorlogin/','adm/','account.asp','admin/account.asp','admin/index.asp','admin/login.asp','admin/admin.asp',
               'admin_area/admin.asp','admin_area/login.asp','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
               'admin_area/admin.html','admin_area/login.html','admin_area/index.html','admin_area/index.asp','bb-admin/index.asp','bb-admin/login.asp','bb-admin/admin.asp',
               'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','admin/controlpanel.html','admin.html','admin/cp.html','cp.html',
               'administrator/index.html','administrator/login.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html','moderator.html',
               'moderator/login.html','moderator/admin.html','account.html','controlpanel.html','admincontrol.html','admin_login.html','panel-administracion/login.html',
               'admin/home.asp','admin/controlpanel.asp','admin.asp','pages/admin/admin-login.asp','admin/admin-login.asp','admin-login.asp','admin/cp.asp','cp.asp',
               'administrator/account.asp','administrator.asp','acceso.asp','login.asp','modelsearch/login.asp','moderator.asp','moderator/login.asp','administrator/login.asp',
               'moderator/admin.asp','controlpanel.asp','admin/account.html','adminpanel.html','webadmin.html','pages/admin/admin-login.html','admin/admin-login.html',
               'webadmin/index.html','webadmin/admin.html','webadmin/login.html','user.asp','user.html','admincp/index.asp','admincp/login.asp','admincp/index.html',
               'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','adminarea/index.html','adminarea/admin.html','adminarea/login.html',
               'panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html','admin/admin_login.html',
               'admincontrol/login.html','adm/index.html','adm.html','admincontrol.asp','admin/account.asp','adminpanel.asp','webadmin.asp','webadmin/index.asp',
               'webadmin/admin.asp','webadmin/login.asp','admin/admin_login.asp','admin_login.asp','panel-administracion/login.asp','adminLogin.asp',
               'admin/adminLogin.asp','home.asp','admin.asp','adminarea/index.asp','adminarea/admin.asp','adminarea/login.asp','admin-login.html',
               'panel-administracion/index.asp','panel-administracion/admin.asp','modelsearch/index.asp','modelsearch/admin.asp','administrator/index.asp',
               'admincontrol/login.asp','adm/admloginuser.asp','admloginuser.asp','admin2.asp','admin2/login.asp','admin2/index.asp','adm/index.asp',
               'adm.asp','affiliate.asp','adm_auth.asp','memberadmin.asp','administratorlogin.asp','siteadmin/login.asp','siteadmin/index.asp','siteadmin/login.html']
        cfm = ['admin/','administrator/','admin1/','admin2/','admin3/','admin4/','admin5/','usuarios/','usuario/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
               'memberadmin/','administratorlogin/','adm/','admin/account.cfm','admin/index.cfm','admin/login.cfm','admin/admin.cfm','admin/account.cfm',
               'admin_area/admin.cfm','admin_area/login.cfm','siteadmin/login.cfm','siteadmin/index.cfm','siteadmin/login.html','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
               'admin_area/index.cfm','bb-admin/index.cfm','bb-admin/login.cfm','bb-admin/admin.cfm','admin/home.cfm','admin_area/login.html','admin_area/index.html',
               'admin/controlpanel.cfm','admin.cfm','admincp/index.asp','admincp/login.asp','admincp/index.html','admin/account.html','adminpanel.html','webadmin.html',
               'webadmin/index.html','webadmin/admin.html','webadmin/login.html','admin/admin_login.html','admin_login.html','panel-administracion/login.html',
               'admin/cp.cfm','cp.cfm','administrator/index.cfm','administrator/login.cfm','nsw/admin/login.cfm','webadmin/login.cfm','admin/admin_login.cfm','admin_login.cfm',
               'administrator/account.cfm','administrator.cfm','admin_area/admin.html','pages/admin/admin-login.cfm','admin/admin-login.cfm','admin-login.cfm',
               'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','login.cfm','modelsearch/login.cfm','moderator.cfm','moderator/login.cfm',
               'moderator/admin.cfm','account.cfm','pages/admin/admin-login.html','admin/admin-login.html','admin-login.html','controlpanel.cfm','admincontrol.cfm',
               'admin/adminLogin.html','acceso.cfm','adminLogin.html','admin/adminLogin.html','home.html','rcjakar/admin/login.cfm','adminarea/index.html','adminarea/admin.html',
               'webadmin.cfm','webadmin/index.cfm','webadmin/admin.cfm','admin/controlpanel.html','admin.html','admin/cp.html','cp.html','adminpanel.cfm','moderator.html',
               'administrator/index.html','administrator/login.html','user.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html',
               'moderator/login.html','adminarea/login.html','panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html',
               'admincontrol/login.html','adm/index.html','adm.html','moderator/admin.html','user.cfm','account.html','controlpanel.html','admincontrol.html',
               'panel-administracion/login.cfm','wp-login.cfm','adminLogin.cfm','admin/adminLogin.cfm','home.cfm','admin.cfm','adminarea/index.cfm',
               'adminarea/admin.cfm','adminarea/login.cfm','panel-administracion/index.cfm','panel-administracion/admin.cfm','modelsearch/index.cfm',
               'modelsearch/admin.cfm','admincontrol/login.cfm','adm/admloginuser.cfm','admloginuser.cfm','admin2.cfm','admin2/login.cfm','admin2/index.cfm','usuarios/login.cfm',
               'adm/index.cfm','adm.cfm','affiliate.cfm','adm_auth.cfm','memberadmin.cfm','administratorlogin.cfm']
        js = ['admin/','administrator/','admin1/','admin2/','admin3/','admin4/','admin5/','usuarios/','usuario/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
              'memberadmin/','administratorlogin/','adm/','admin/account.js','admin/index.js','admin/login.js','admin/admin.js','admin/account.js',
              'admin_area/admin.js','admin_area/login.js','siteadmin/login.js','siteadmin/index.js','siteadmin/login.html','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
              'admin_area/index.js','bb-admin/index.js','bb-admin/login.js','bb-admin/admin.js','admin/home.js','admin_area/login.html','admin_area/index.html',
              'admin/controlpanel.js','admin.js','admincp/index.asp','admincp/login.asp','admincp/index.html','admin/account.html','adminpanel.html','webadmin.html',
              'webadmin/index.html','webadmin/admin.html','webadmin/login.html','admin/admin_login.html','admin_login.html','panel-administracion/login.html',
              'admin/cp.js','cp.js','administrator/index.js','administrator/login.js','nsw/admin/login.js','webadmin/login.js','admin/admin_login.js','admin_login.js',
              'administrator/account.js','administrator.js','admin_area/admin.html','pages/admin/admin-login.js','admin/admin-login.js','admin-login.js',
              'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','login.js','modelsearch/login.js','moderator.js','moderator/login.js',
              'moderator/admin.js','account.js','pages/admin/admin-login.html','admin/admin-login.html','admin-login.html','controlpanel.js','admincontrol.js',
              'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','rcjakar/admin/login.js','adminarea/index.html','adminarea/admin.html',
              'webadmin.js','webadmin/index.js','acceso.js','webadmin/admin.js','admin/controlpanel.html','admin.html','admin/cp.html','cp.html','adminpanel.js','moderator.html',
              'administrator/index.html','administrator/login.html','user.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html',
              'moderator/login.html','adminarea/login.html','panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html',
              'admincontrol/login.html','adm/index.html','adm.html','moderator/admin.html','user.js','account.html','controlpanel.html','admincontrol.html',
              'panel-administracion/login.js','wp-login.js','adminLogin.js','admin/adminLogin.js','home.js','admin.js','adminarea/index.js',
              'adminarea/admin.js','adminarea/login.js','panel-administracion/index.js','panel-administracion/admin.js','modelsearch/index.js',
              'modelsearch/admin.js','admincontrol/login.js','adm/admloginuser.js','admloginuser.js','admin2.js','admin2/login.js','admin2/index.js','usuarios/login.js',
              'adm/index.js','adm.js','affiliate.js','adm_auth.js','memberadmin.js','administratorlogin.js']
        cgi = ['admin/','administrator/','admin1/','admin2/','admin3/','admin4/','admin5/','usuarios/','usuario/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
               'memberadmin/','administratorlogin/','adm/','admin/account.cgi','admin/index.cgi','admin/login.cgi','admin/admin.cgi','admin/account.cgi',
               'admin_area/admin.cgi','admin_area/login.cgi','siteadmin/login.cgi','siteadmin/index.cgi','siteadmin/login.html','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
               'admin_area/index.cgi','bb-admin/index.cgi','bb-admin/login.cgi','bb-admin/admin.cgi','admin/home.cgi','admin_area/login.html','admin_area/index.html',
               'admin/controlpanel.cgi','admin.cgi','admincp/index.asp','admincp/login.asp','admincp/index.html','admin/account.html','adminpanel.html','webadmin.html',
               'webadmin/index.html','webadmin/admin.html','webadmin/login.html','admin/admin_login.html','admin_login.html','panel-administracion/login.html',
               'admin/cp.cgi','cp.cgi','administrator/index.cgi','administrator/login.cgi','nsw/admin/login.cgi','webadmin/login.cgi','admin/admin_login.cgi','admin_login.cgi',
               'administrator/account.cgi','administrator.cgi','admin_area/admin.html','pages/admin/admin-login.cgi','admin/admin-login.cgi','admin-login.cgi',
               'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','login.cgi','modelsearch/login.cgi','moderator.cgi','moderator/login.cgi',
               'moderator/admin.cgi','account.cgi','pages/admin/admin-login.html','admin/admin-login.html','admin-login.html','controlpanel.cgi','admincontrol.cgi',
               'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','rcjakar/admin/login.cgi','adminarea/index.html','adminarea/admin.html',
               'webadmin.cgi','webadmin/index.cgi','acceso.cgi','webadmin/admin.cgi','admin/controlpanel.html','admin.html','admin/cp.html','cp.html','adminpanel.cgi','moderator.html',
               'administrator/index.html','administrator/login.html','user.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html',
               'moderator/login.html','adminarea/login.html','panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html',
               'admincontrol/login.html','adm/index.html','adm.html','moderator/admin.html','user.cgi','account.html','controlpanel.html','admincontrol.html',
               'panel-administracion/login.cgi','wp-login.cgi','adminLogin.cgi','admin/adminLogin.cgi','home.cgi','admin.cgi','adminarea/index.cgi',
               'adminarea/admin.cgi','adminarea/login.cgi','panel-administracion/index.cgi','panel-administracion/admin.cgi','modelsearch/index.cgi',
               'modelsearch/admin.cgi','admincontrol/login.cgi','adm/admloginuser.cgi','admloginuser.cgi','admin2.cgi','admin2/login.cgi','admin2/index.cgi','usuarios/login.cgi',
               'adm/index.cgi','adm.cgi','affiliate.cgi','adm_auth.cgi','memberadmin.cgi','administratorlogin.cgi']
        brf = ['admin/','administrator/','admin1/','admin2/','admin3/','admin4/','admin5/','usuarios/','usuario/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
               'memberadmin/','administratorlogin/','adm/','admin/account.brf','admin/index.brf','admin/login.brf','admin/admin.brf','admin/account.brf',
               'admin_area/admin.brf','admin_area/login.brf','siteadmin/login.brf','siteadmin/index.brf','siteadmin/login.html','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
               'admin_area/index.brf','bb-admin/index.brf','bb-admin/login.brf','bb-admin/admin.brf','admin/home.brf','admin_area/login.html','admin_area/index.html',
               'admin/controlpanel.brf','admin.brf','admincp/index.asp','admincp/login.asp','admincp/index.html','admin/account.html','adminpanel.html','webadmin.html',
               'webadmin/index.html','webadmin/admin.html','webadmin/login.html','admin/admin_login.html','admin_login.html','panel-administracion/login.html',
               'admin/cp.brf','cp.brf','administrator/index.brf','administrator/login.brf','nsw/admin/login.brf','webadmin/login.brfbrf','admin/admin_login.brf','admin_login.brf',
               'administrator/account.brf','administrator.brf','acceso.brf','admin_area/admin.html','pages/admin/admin-login.brf','admin/admin-login.brf','admin-login.brf',
               'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','login.brf','modelsearch/login.brf','moderator.brf','moderator/login.brf',
               'moderator/admin.brf','account.brf','pages/admin/admin-login.html','admin/admin-login.html','admin-login.html','controlpanel.brf','admincontrol.brf',
               'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','rcjakar/admin/login.brf','adminarea/index.html','adminarea/admin.html',
               'webadmin.brf','webadmin/index.brf','webadmin/admin.brf','admin/controlpanel.html','admin.html','admin/cp.html','cp.html','adminpanel.brf','moderator.html',
               'administrator/index.html','administrator/login.html','user.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html',
               'moderator/login.html','adminarea/login.html','panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html',
               'admincontrol/login.html','adm/index.html','adm.html','moderator/admin.html','user.brf','account.html','controlpanel.html','admincontrol.html',
               'panel-administracion/login.brf','wp-login.brf','adminLogin.brf','admin/adminLogin.brf','home.brf','admin.brf','adminarea/index.brf',
               'adminarea/admin.brf','adminarea/login.brf','panel-administracion/index.brf','panel-administracion/admin.brf','modelsearch/index.brf',
               'modelsearch/admin.brf','admincontrol/login.brf','adm/admloginuser.brf','admloginuser.brf','admin2.brf','admin2/login.brf','admin2/index.brf','usuarios/login.brf',
               'adm/index.brf','adm.brf','affiliate.brf','adm_auth.brf','memberadmin.brf','administratorlogin.brf']
        try:
            site = raw_input("Web Site for Scan?: ")
            site = site.replace("http://","")
    ##        site = "www.hljclgl.com"
            print ("	Checking website " + site + "...")
            conn = httplib.HTTPConnection(site)
            conn.connect()
            print "	[$] Yes... Server is Online."
        except (httplib.HTTPResponse, socket.error) as Exit:
            raw_input("	 [!] Oops Error occured, Server offline or invalid URL")
            exit()
        print "Enter site source code:"
        print "1 PHP"
        print "2 ASP"
        print "3 CFM"
        print "4 JS"
        print "5 CGI"
        print "6 BRF"
        print "
    Press 1 and 'Enter key' for Select PHP
    "
        code=input("> ")
        if code==1:
            print("	 [+] Scanning " + site + "...
    
    ")
            for admin in php:
                admin = admin.replace("
    ","")
                admin = "/" + admin
                host = site + admin
                print ("	 [#] Checking " + host + "...")
                connection = httplib.HTTPConnection(site)
                connection.request("GET",admin)
                response = connection.getresponse()
                var2 = var2 + 1
                if response.status == 200:
                    var1 = var1 + 1
                    print "%s %s" % ( "
    
    >>>" + host, "Admin page found!")
                    raw_input("Press enter to continue scanning.
    ")
                elif response.status == 404:
                    var2 = var2
                elif response.status == 302:
                    print "%s %s" % ("
    >>>" + host, "Possible admin page (302 - Redirect)")
                else:
                    print "%s %s %s" % (host, " Interesting response:", response.status)
                connection.close()
            print("
    
    Completed 
    ")
            print var1, " Admin pages found"
            print var2, " total pages scanned"
            raw_input("[/] The Game Over; Press Enter to Exit")
        if code==2:
            print("	 [+] Scanning " + site + "...
    
    ")
            for admin in asp:
                admin = admin.replace("
    ","")
                admin = "/" + admin
                host = site + admin
                print ("	 [#] Checking " + host + "...")
                connection = httplib.HTTPConnection(site)
                connection.request("GET",admin)
                response = connection.getresponse()
                var2 = var2 + 1
                if response.status == 200:
                    var1 = var1 + 1
                    print "%s %s" % ( "
    
    >>>" + host, "Admin page found!")
                    raw_input("Press enter to continue scanning.
    ")
                elif response.status == 404:
                    var2 = var2
                elif response.status == 302:
                    print "%s %s" % ("
    >>>" + host, "Possible admin page (302 - Redirect)")
                else:
                    print "%s %s %s" % (host, " Interesting response:", response.status)
                connection.close()
            print("
    
    Completed 
    ")
            print var1, " Admin pages found"
            print var2, " total pages scanned"
            raw_input("The Game Over; Press Enter to Exit")
        if code==3:
            print("	 [+] Scanning " + site + "...
    
    ")
            for admin in cfm:
                admin = admin.replace("
    ","")
                admin = "/" + admin
                host = site + admin
                print ("	 [#] Checking " + host + "...")
                connection = httplib.HTTPConnection(site)
                connection.request("GET",admin)
                response = connection.getresponse()
                var2 = var2 + 1
                if response.status == 200:
                    var1 = var1 + 1
                    print "%s %s" % ( "
    
    >>>" + host, "Admin page found!")
                    raw_input("Press enter to continue scanning.
    ")
                elif response.status == 404:
                    var2 = var2
                elif response.status == 302:
                    print "%s %s" % ("
    >>>" + host, "Possible admin page (302 - Redirect)")
                else:
                    print "%s %s %s" % (host, " Interesting response:", response.status)
                connection.close()
            print("
    
    Completed 
    ")
            print var1, " Admin pages found"
            print var2, " total pages scanned"
            raw_input("The Game Over; Press Enter to Exit")
        if code==4:
            print("	 [+] Scanning " + site + "...
    
    ")
            for admin in js:
                admin = admin.replace("
    ","")
                admin = "/" + admin
                host = site + admin
                print ("	 [#] Checking " + host + "...")
                connection = httplib.HTTPConnection(site)
                connection.request("GET",admin)
                response = connection.getresponse()
                var2 = var2 + 1
                if response.status == 200:
                    var1 = var1 + 1
                    print "%s %s" % ( "
    
    >>>" + host, "Admin page found!")
                    raw_input("Press enter to continue scanning.
    ")
                elif response.status == 404:
                    var2 = var2
                elif response.status == 302:
                    print "%s %s" % ("
    >>>" + host, "Possible admin page (302 - Redirect)")
                else:
                    print "%s %s %s" % (host, " Interesting response:", response.status)
                connection.close()
            print("
    
    Completed 
    ")
            print var1, " Admin pages found"
            print var2, " total pages scanned"
            raw_input("The Game Over; Press Enter to Exit")
        if code==5:
            print("	 [+] Scanning " + site + "...
    
    ")
            for admin in cgi:
                admin = admin.replace("
    ","")
                admin = "/" + admin
                host = site + admin
                print ("	 [#] Checking " + host + "...")
                connection = httplib.HTTPConnection(site)
                connection.request("GET",admin)
                response = connection.getresponse()
                var2 = var2 + 1
                if response.status == 200:
                    var1 = var1 + 1
                    print "%s %s" % ( "
    
    >>>" + host, "Admin page found!")
                    raw_input("Press enter to continue scanning.
    ")
                elif response.status == 404:
                    var2 = var2
                elif response.status == 302:
                    print "%s %s" % ("
    >>>" + host, "Possible admin page (302 - Redirect)")
                else:
                    print "%s %s %s" % (host, " Interesting response:", response.status)
                connection.close()
            print("
    
    Completed 
    ")
            print var1, " Admin pages found"
            print var2, " total pages scanned"
            raw_input("The Game Over; Press Enter to Exit")
        if code==6:
            print("	 [+] Scanning " + site + "...
    
    ")
            for admin in brf:
                admin = admin.replace("
    ","")
                admin = "/" + admin
                host = site + admin
                print ("	 [#] Checking " + host + "...")
                connection = httplib.HTTPConnection(site)
                connection.request("GET",admin)
                response = connection.getresponse()
                var2 = var2 + 1
                if response.status == 200:
                    var1 = var1 + 1
                    print "%s %s" % ( "
    
    >>>" + host, "Admin page found!")
                    raw_input("Press enter to continue scanning.
    ")
                elif response.status == 404:
                    var2 = var2
                elif response.status == 302:
                    print "%s %s" % ("
    >>>" + host, "Possible admin page (302 - Redirect)")
                else:
                    print "%s %s %s" % (host, " Interesting response:", response.status)
                connection.close()
            print("
    
    Completed 
    ")
            print var1, " Admin pages found"
            print var2, " total pages scanned"
            raw_input("The Game Over; Press Enter to Exit")
    except (httplib.HTTPResponse, socket.error):
        print "
    	[!] Session Cancelled; Error occured. Check internet settings"
    except (KeyboardInterrupt, SystemExit):
        print "
    	[!] Session cancelled"
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:office word 文件的操作
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    # -*- coding: utf-8 -*-
    import win32com
    from win32com.client import Dispatch, constants
    
    w = win32com.client.Dispatch('word.Application')
    # 或者使用下面的方法,使用启动独立的进程:
    # w = win32com.client.DispatchEx('Word.Application')
    
    # 后台运行,不显示,不警告
    w.Visible = 0
    w.DisplayAlerts = 0
    
    # 打开新的文件
    doc = w.Documents.Open( FileName = u'D:\python_test\win32com\aaaa.txt' )
    # worddoc = w.Documents.Add() # 创建新的文档
    
    # 插入文字
    myRange = doc.Range(0,0)
    myRange.InsertBefore('aaaaaaaaaaaaaaaaaaaaaa')
    ##print help(win32com.client)
    # 使用样式
    wordSel = myRange.Select()
    wordSel.Style = constants.wdStyleHeading1
    ##
    ### 正文文字替换
    ##w.Selection.Find.ClearFormatting()
    ##w.Selection.Find.Replacement.ClearFormatting()
    ##w.Selection.Find.Execute(OldStr, False, False, False, False, False, True, 1, True, NewStr, 2)
    ##
    ### 页眉文字替换
    ##w.ActiveDocument.Sections[0].Headers[0].Range.Find.ClearFormatting()
    ##w.ActiveDocument.Sections[0].Headers[0].Range.Find.Replacement.ClearFormatting()
    ##w.ActiveDocument.Sections[0].Headers[0].Range.Find.Execute(OldStr, False, False, False, False, False, True, 1, False, NewStr, 2)
    ##
    ### 表格操作
    ##doc.Tables[0].Rows[0].Cells[0].Range.Text ='123123'
    ##worddoc.Tables[0].Rows.Add() # 增加一行
    ##
    ### 转换为html
    ##wc = win32com.client.constants
    ##w.ActiveDocument.WebOptions.RelyOnCSS = 1
    ##w.ActiveDocument.WebOptions.OptimizeForBrowser = 1
    ##w.ActiveDocument.WebOptions.BrowserLevel = 0 # constants.wdBrowserLevelV4
    ##w.ActiveDocument.WebOptions.OrganizeInFolder = 0
    ##w.ActiveDocument.WebOptions.UseLongFileNames = 1
    ##w.ActiveDocument.WebOptions.RelyOnVML = 0
    ##w.ActiveDocument.WebOptions.AllowPNG = 1
    ##w.ActiveDocument.SaveAs( FileName = filenameout, FileFormat = wc.wdFormatHTML )
    ##
    ### 打印
    ##doc.PrintOut()
    
    # 关闭
    doc.Close()
    ##w.Documents.Close(w.wdDoNotSaveChanges)
    w.Quit()
    
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:office excel 文件的读操作
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    # -*- coding: utf-8 -*-
    
    ##from pyExcelerator import *
    ##
    ##sheets = parse_xls('mini.xls')
    ##print sheets
    ##print help(sheets)
    
    ##download:http://www.lexicon.net/sjmachin/xlrd.htm
    import xlrd
    
    fname = "mini.xls" 
    bk = xlrd.open_workbook(fname)
    ##print type(bk)
    ##print help(bk)
    shxrange = range(bk.nsheets) 
    try: 
        sh = bk.sheet_by_index(0) 
    except: 
        print "no sheet in %s named Sheet1" % fname 
        
    nrows = sh.nrows 
    ncols = sh.ncols 
    print "nrows %d, ncols %d" % (nrows,ncols)   
    
    ##这个下标是从0开始的
    ##cell_value = sh.cell_value(6,0) 
    ##print cell_value
    ##print help(cell_value)
    ##aa = u'随碟附送'
    ##print str(cell_value)
    ##print str(aa)
       
    row_list = []
    line = ''
    col = ''
    ##print sh.row_values(0)
    for i in range(nrows): 
        row_data = sh.row_values(i)
        row_list.append(row_data)
        line = ''
        for rd in row_data:
            if rd == '':
                rd = 'null'
    
            ##注意 这里处理一下float和字符串输出的区别
            try:
                line += rd + '	'
            except:
                line += str(rd) + '	'
        col += line + '
    '
    print col
    
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:office excel 文件的写操作
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    # -*- coding: utf-8 -*-
    from pyExcelerator import * 
    ##生成一个工作薄 
    w = Workbook() 
    ##加入一个Sheet 
    ws = w.add_sheet('Hey, Dude')
    ws2 = w.add_sheet(u'我是第二个sheet')
    Titles="省份 开机报活 安装报活 使用报活 卸载报活 使用次数 安装次数 win98 win2000 winXP win2003 winVista win7 win2008".split(" ")
    
    
    
    ##字体
    font0 = Font()
    font0.name = u'宋体'
    font0.struck_out = True
    font0.bold = True
    style0 = XFStyle()
    style0.font = font0
    
    print help(style0.font)
    
    ##单元格边框
    font1 = Font()
    font1.name = u'幼圆'
    borders = Borders()
    borders.left = 5
    style = XFStyle()
    style.borders = borders
    style.font = font1
    
    
    ceii=0
    for Title in Titles:
        ws.write(0,ceii,Title.decode('utf-8'),style0) #需要转中文转化
        ws.write(1,ceii,Title.decode('utf-8'),style) #需要转中文转化  ws.write(行、列、内容,样式)
        ceii=ceii+1
    ##    w.save('mini'+str(ceii)+'.xls')
    ##保存 
    w.save('mini.xls')
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:多IP代理的请求网站
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    import urllib
    def url_proxies():
        proxylist = (
                '211.167.112.14:80',
                '210.32.34.115:8080',
                '115.47.8.39:80',
                '211.151.181.41:80',
                '219.239.26.23:80',
                '211.167.112.14:80',
                '210.32.34.115:8080',
                '115.47.8.39:80',
                '211.151.181.41:80',
                '219.239.26.23:80',
                '219.157.200.18:3128',
                '219.159.105.180:8080',
                '1.63.18.22:8080',
                '221.179.173.170:8080',
                '125.39.66.153:80',
                '125.39.66.151:80',
                '61.152.108.187:80',
                '222.217.99.153:9000',
                '125.39.66.146:80',
                '120.132.132.119:8080',
                '119.7.221.137:82',
                '117.41.182.188:8080',
                '202.116.160.89:80',
                '221.7.145.42:8080',
                '211.142.236.131:80',
                '119.7.221.136:80',
                '211.151.181.41:80',
                '125.39.66.131:80',
                '120.132.132.119:8080',
                '112.5.254.30:80',
                '106.3.98.82:80',
                '119.4.250.105:80',
                '123.235.12.118:8080',
                '124.240.187.79:80',
                '182.48.107.219:9000',
                '122.72.2.180:8080',
                '119.254.90.18:8080',
                '124.240.187.80:83',
                '110.153.9.250:80',
                '202.202.1.189:80',
                '58.67.147.205:8080',
                '111.161.30.228:80',
                '122.72.76.130:80',
                '122.72.2.180:80',
                '202.112.113.7:80',
                '218.108.85.59:81',
                '211.144.72.154:80',
                '119.254.88.53:8080',
                '121.14.145.132:82',
                '114.80.149.183:80',
                '111.161.30.239:80',
                '182.48.107.219:9000',
                '122.72.0.28:80',
                '125.39.68.131:80',
                '118.244.190.6:80',
                '120.132.132.119:88',
                '211.167.112.15:82',
                '221.2.80.126:8888',
                '219.137.229.214:3128',
                '125.39.66.131:80',
                '61.181.22.157:80',
                '115.25.216.6:80',
                '119.7.221.137:82',
                '221.195.42.195:8080',
                '119.254.88.53:8080',
                '219.150.254.158:8080',
                '113.9.163.101:8080',
                '222.89.154.14:9000',
                '114.141.162.53:8080',
                '218.5.74.199:3128',
                '61.152.108.187:80',
                '218.76.159.133:80',
                '59.34.57.88:8080',
                '118.244.190.34:80',
                '59.172.208.189:8080',
                '116.236.216.116:8080',
                '111.161.30.233:80',
                '220.248.237.234:8080',
                '121.14.145.132:82',
                '202.114.205.125:8080',
                )
        for proxy in proxylist:
            proxies = {'': proxy}
            opener = urllib.FancyURLopener(proxies)
            f = opener.open("http://www.dianping.com/shanghai")
            print f.read()
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:多个user agents代理的请求网站 http header httpheader
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    #设置多个user_agents,防止百度限制IP
    user_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0', 
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0', 
            'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ 
            (KHTML, like Gecko) Element Browser 5.0', 
            'IBM WebExplorer /v0.94', 'Galaxy/1.0 [en] (Mac OS X 10.5.6; U; en)', 
            'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)', 
            'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14', 
            'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) 
            Version/6.0 Mobile/10A5355d Safari/8536.25', 
            'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) 
            Chrome/28.0.1468.0 Safari/537.36', 
            'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; TheWorld)']
    
    for i in range(10):
        try:
            domain=urllib2.Request(url)
            r=random.randint(0,11)
            domain.add_header('User-agent', user_agents[r])
            domain.add_header('connection','keep-alive')
            response=urllib2.urlopen(domain)
            uri=response.geturl()
            print uri
        except:
            continue
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:关于鼠标的控制,需要安装pywin32 获得鼠标位置,设置鼠标位置,点击鼠标的左右键
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    import ctypes
    def setMousePos(x,y):
        aa = ctypes.windll.user32
        aa.SetCursorPos(x,y)
    
    
    import win32gui
    def getMousePos():
        bb = win32gui.GetCursorPos()
        return bb
    
    import win32api
    import win32con
    import ctypes
    import time
    
    def leftMouseClick(x,y):
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y)
        time.sleep(0.05)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y)
    
    def rightMouseClick(x,y):
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN,x,y)
        time.sleep(0.05)
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP,x,y)
    
    
    ##下面的是鼠标事件捕获  --未测试
    import win32con
    import win32gui
    import ctypes
    from ctypes import wintypes
    
    # container class for global hook
    # this will store the HHOOK id and mouse information
    class Hook:
        def __init__(self):
            self.hook = 0
            self.m_struct = None
    
    class MSLLHOOKSTRUCT(ctypes.Structure):
        _fields_ = [("pt", wintypes.POINT),
                    ("mouseData", ctypes.c_long),
                    ("flags", ctypes.c_long),
                    ("time", ctypes.c_long),
                    ("dwExtraInfo", ctypes.POINTER(ctypes.c_ulong) )]
    
    def CopyMemory( Destination, Source ):
        Source = ctypes.c_void_p(Source)
        ctypes.windll.kernel32.RtlMoveMemory(ctypes.addressof(Destination), Source, ctypes.sizeof(Destination))
    
    def PostQuitMessage( nMsg ):
        return ctypes.windll.user32.PostQuitMessage(nMsg)
    
    def GetModuleHandle( lpModuleName ):
        return ctypes.windll.kernel32.GetModuleHandleA(lpModuleName)
    
    def CallNextHookEx( hhk, nCode, wParam, lParam ):
         return ctypes.windll.user32.CallNextHookEx(hhk, nCode, wParam, lParam)
    
    def SetWindowsHookEx( idHook, lpFunc, hMod, dwThreadId ):
         WINFUNC = ctypes.WINFUNCTYPE(ctypes.c_long, ctypes.c_long, ctypes.c_long, ctypes.c_long)
         return ctypes.windll.user32.SetWindowsHookExA( idHook, WINFUNC(lpFunc), hMod, dwThreadId)
    
    def UnhookWindowsHookEx( hhk ):
         return ctypes.windll.user32.UnhookWindowsHookEx(hhk)
    
    
    # create instance of global mouse hook class
    mll_hook = Hook()
    mll_hook.m_struct = MSLLHOOKSTRUCT()
    
    # mouse hook callback. intercept mouse events
    def LowLevelMouseProc( nCode, wParam, lParam ):
       
        if nCode == win32con.HC_ACTION:     
            # lparam holds the starting address of the mouse hook structure
            # call copymemory so that m_struct class points to the mouse structure pool
            CopyMemory( mll_hook.m_struct, lParam )
            # print out the cursors x and y screen position
            if wParam == win32con.WM_MBUTTONUP:
                PostQuitMessage(0)  
                
            if wParam == win32con.WM_LBUTTONUP:    # WM_RBUTTONUP
                print "x = [%d]/ty = [%d]" % (mll_hook.m_struct.pt.x,mll_hook.m_struct.pt.y)
         
       
        return CallNextHookEx( mll_hook.hook, nCode, wParam, lParam )
         
    
    if __name__ == '__main__':
        print "Press the middle mouse button to exit "
        try:
            mll_hook.hook = SetWindowsHookEx(win32con.WH_MOUSE_LL,
                                             LowLevelMouseProc,
                                             GetModuleHandle(0),
                                             0)
        except Exception, err:
            print err
        # set up a message queue, you can use any valid message loop tkinter, pygtk and wxpythons message loops all work
        win32gui.PumpMessages()
        # unhook the mouse hook
        UnhookWindowsHookEx(mll_hook.hook)
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:PycURL模块的使用,这个模块功能和urllib一样,是C语言写的,速度非常快
    参数数量:太多
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
      
    '''
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import StringIO
    import pycurl 
    
    def getHtml(myurl): 
        html = StringIO.StringIO()
        c = pycurl.Curl()
    ##    myurl='http://www.lpfrx.com'
         
        c.setopt(pycurl.URL, myurl)
         
        #写的回调
        c.setopt(pycurl.WRITEFUNCTION, html.write)
         
        c.setopt(pycurl.FOLLOWLOCATION, 1)
         
        #最大重定向次数,可以预防重定向陷阱
        c.setopt(pycurl.MAXREDIRS, 5)
         
        #连接超时设置
        c.setopt(pycurl.CONNECTTIMEOUT, 60)
        c.setopt(pycurl.TIMEOUT, 300)
         
        #模拟浏览器
        c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")
    
         
        #访问,阻塞到访问结束
        c.perform()
         
        #打印出 200(HTTP状态码)
        print c.getinfo(pycurl.HTTP_CODE)
         
        #输出网页的内容
        ##print html.getvalue()
         
        #输出网页类型
        print "Content-type:", c.getinfo(c.CONTENT_TYPE)
        return html.getvalue()
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:给你一个域名列表,你可以获得他的ip,以及地理位置
    参数数量:1
    参数列表:
        
    返回数量:
    返回值列表:
    
    
    使用方法:
        if "__main__" == __name__:
            fw = open('shsihsi.txt','w')
            fw.write(str(getIPByDomain('adhotspot.biz')[0]) + '
    ')
            bb = getAddrByIP('78.46.253.75')
            if bb.find('德国')+1:
                print 'aaaa'
            fw.write( bb+ '
    ')
            fw.close()
    '''
    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-
    
    import re
    import time
    import urllib2
    import cookielib
    
    def getIPByDomain(domain):
        data = ''
        relist = []
        urlPathOne = "http://www.ip138.com/ips1388.asp?ip=" + domain + "&action=2"
        cj = cookielib.CookieJar()
        auth_handler = urllib2.HTTPBasicAuthHandler()
        opener = urllib2.build_opener(urllib2.HTTPSHandler(),auth_handler,urllib2.HTTPCookieProcessor(cj))
        urllib2.install_opener(opener)
        URL_Start = urlPathOne
        try:
            handle = urllib2.urlopen(URL_Start)
            handle.close()
        except IOError, e:
            print e
            relist.append('error')
            return relist
        time.sleep(0.5)
        try:
            a = urllib2.urlopen(URL_Start)
            html = a.read()
            a.close()
            if html.find('<h1>') +1:
                temp = html[html.find('<h1>') : html.find('</h1>')]
    ##            iptem = temp[ : temp.find('<tr class="grey-bg bottom-border" >')]
                sdata = temp
    
                p = r'(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
                mo = re.compile(p)
                m = mo.search(sdata)
                if not m:
                    relist.append('NULL')
                    return relist
                else:
                    iplist = mo.findall(sdata)
                    return iplist
            else:
                relist.append('NULL')
                return relist
        except:
            return ['error']
    
    
    def getAddrByIP(ip):
        data = ''
        addr = ''
        urlPathOne = "http://www.ip.cn/index.php?ip="+ip
        req_header = {  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0',
                        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                        'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
                        'Cookie':'anonymid=hwyz9f6r-ipg7xm; jebe_key=f7c92a91-c7e9-4b69-bdc1-bf5f766b8132%7Ca22b0134bed0e5baa9f32a412aad1b46%7C1403968344919%7C1%7C1403968331677; depovince=JL; _r01_=1; jebecookies=39fccb4d-c041-4891-af90-ab5c553d21c7|||||; ick_login=5449ca00-3317-47c1-b668-c56cca3ab128; _de=37E78EAE52CFD393416FD9B685238F34F4489C1C70DDCBF9; p=ba366aeeaba84cca4169e2c0d286811a1; ap=341251011; first_login_flag=1; t=6f2c8f21365082101c61dbf5f01bb20f1; societyguester=6f2c8f21365082101c61dbf5f01bb20f1; id=341251011; xnsid=1cf75790; loginfrom=null',
                        'Accept-Encoding':'deflate',  ##这个地方要注意 不能使压缩的 
                        'Connection':'keep-alive',
                        'Referer':'http://page.renren.com' ##注意如果依然不能抓取的话,这里可以设置抓取网站的host
                      }
        req_timeout = 3
        try:
            req = urllib2.Request(urlPathOne,None,req_header)
            resp = urllib2.urlopen(req,None,req_timeout)
            data = resp.read()
            resp.close()
    
            raws = data.split('
    ')
            dedao = ''
            for raw in raws:
                if raw.find(r'查询的 IP:')+1:
                    dedao = raw
                    break
        ##            print dedao
            addr = dedao.replace(r'<div id="result"><div class="well">',' ').replace(r'&nbsp;','')
            addr = addr.replace(r'<p>',' ').replace(r'</p>',' ')
            addr = addr.replace(r'<code>',' ').replace(r'</code>',' ')
            addr = addr.replace(r'<div>',' ').replace(r'</div>',' ')
            addr = addr[addr.find(r'来自:')+6:].replace(r'','')
        except:
            print 'error'
        return addr
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:给你一个域名列表,你可以获得他的ip,以及地理位置
    参数数量:域名orip
    参数列表:
        
    返回数量:2
    返回值列表:
        返回ip和地址
    
    使用方法:
    
    '''
    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-
    
    import re
    import time
    import urllib2
    import cookielib
    
    
    def getIPandAddrByDomain(ip):
        time.sleep(0.1)
        data = ''
        addr = ''
        iip = ''
        urlPathOne = "http://www.ip.cn/index.php?ip="+ip
        req_header = {  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0',
                        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                        'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
                        'Cookie':'anonymid=hwyz9f6r-ipg7xm; jebe_key=f7c92a91-c7e9-4b69-bdc1-bf5f766b8132%7Ca22b0134bed0e5baa9f32a412aad1b46%7C1403968344919%7C1%7C1403968331677; depovince=JL; _r01_=1; jebecookies=39fccb4d-c041-4891-af90-ab5c553d21c7|||||; ick_login=5449ca00-3317-47c1-b668-c56cca3ab128; _de=37E78EAE52CFD393416FD9B685238F34F4489C1C70DDCBF9; p=ba366aeeaba84cca4169e2c0d286811a1; ap=341251011; first_login_flag=1; t=6f2c8f21365082101c61dbf5f01bb20f1; societyguester=6f2c8f21365082101c61dbf5f01bb20f1; id=341251011; xnsid=1cf75790; loginfrom=null',
                        'Accept-Encoding':'deflate',  ##这个地方要注意 不能使压缩的 
                        'Connection':'keep-alive',
                        'Referer':'http://page.renren.com' ##注意如果依然不能抓取的话,这里可以设置抓取网站的host
                      }
        req_timeout = 3
        try:
            req = urllib2.Request(urlPathOne,None,req_header)
            resp = urllib2.urlopen(req,None,req_timeout)
            data = resp.read()
            resp.close()
    
            raws = data.split('
    ')
            dedao = ''
            for raw in raws:
                if raw.find(r'查询的 IP:')+1:
                    dedao = raw
                    break
        ##            print dedao
            addr = dedao.replace(r'<div id="result"><div class="well">',' ').replace(r'&nbsp;','')
            addr = addr.replace(r'<p>',' ').replace(r'</p>',' ')
            iip = addr[: addr.find('</code>')]
            iip = iip.strip().replace('查询的 IP:<code>','')
            addr = addr.replace(r'<code>',' ').replace(r'</code>',' ')
            addr = addr.replace(r'<div>',' ').replace(r'</div>',' ')
            addr = addr[addr.find(r'来自:')+6:].replace(r'','')
        except:
            print str(ip) + ' error'
        return iip,addr
    ##====================================================================
    
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:让另一个窗口抖动
    参数数量:
    参数列表:
        
    返回数量:
    返回值列表:
        
    
    使用方法:
    
    '''
    # -*- coding: cp936 -*-
    import random
    import win32gui
    import win32api,win32con
    import ctypes
    
    #定义结构体,存储当前窗口坐标
    class RECT(ctypes.Structure):
        _fields_ = [('left', ctypes.c_int),
                    ('top', ctypes.c_int),
                    ('right', ctypes.c_int),
                    ('bottom', ctypes.c_int)]
    rect = RECT()
    ##HWND = 0x0002015E         ##spy++直接获得句柄
    ##HWND = win32gui.FindWindow(0, u'下载')
    HWND = win32gui.GetForegroundWindow()#获取当前窗口句柄
    
    if HWND == 0:
        print 'error'
        print HWND
    else:
        ctypes.windll.user32.GetWindowRect(HWND, ctypes.byref(rect))#获取当前窗口坐标
        step = 2
        for i in range(2,200):
            win32gui.SetWindowPos(HWND, None, rect.left+step*random.randint(1,i%6+2), rect.top-step*random.randint(1,i%6+2), rect.right-rect.left, rect.bottom-rect.top, win32con.SWP_NOSENDCHANGING|win32con.SWP_SHOWWINDOW)#实现更改当前窗口位置
        win32gui.SetWindowPos(HWND, None, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, win32con.SWP_NOSENDCHANGING|win32con.SWP_SHOWWINDOW)#将窗口恢复至初始位置
    
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    功能:NTFS备用数据流,能隐藏文件
    参数数量:
    参数列表:
        
    
    返回数量:
    返回值列表:
    
    '''
    fr = open('cmd.exe','rb')
    data = fr.read()
    fr.close()
    
    fw = open('cmd.exe:cmdliu2.exe','wb')
    fw.write(data)
    fw.close()
    ##====================================================================
    ##---------------------------------------------------------------------
    '''
    注意:
    
    功能:对字符串进行url过滤,提取url
    参数数量:1
    参数列表:
        待提取字串
    返回数量:1
    返回值列表:
        一个url列表
    
    使用方法:
    
    '''
    import re
    
    sdata ='www.baidu.cn
    
    http://218.76.201.87/file/MDAwMDAwMDHEp9A5DFfuXUbmT5AwgkswSnKWacB4rSbdYM1Sd4tR3g../e274bd63acfe3479ef1720967821086e2c739c/VA_X_dll.rar?key=AAABQFQAKrP7x5NA&p=&a=2625127-13e635d-48049-0/010100&mode=download 
    http://blog.sina.com.cn/s/blog_a15aa56901017liq.html 
    baidu.com/img/baidu_aa.gif 
    http://www.baidu.com/s?wd=python%20url%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F&ie=utf-8&tn=baiduhome_pg&oq=url%20zhengze&f=8&rsv_bp=1&rsv_spt=1&rsv_sug3=7&rsv_sug4=1315&rsv_sug1=1&rsv_sug2=0&inputT=1331&rsv_sug=1&bs=url%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F 
    http://baidu.com/aa.gif 
    baidu.com.cn.org/bb/cc.asp 
    www.baidu.org/dd/ee/ff.php?n=44&m=yy sdfsdfsdf'
    
    
    def findAllUrl(p_strings):
        iplist = []
        relist = []
        #       http://    baidu    . com      /aa/bb       .  php        ?  a      =  cc           & ee        =  ss
        p = r'(([w]+://)*[w]+(?:.[w]+)+(?:/[w\_]+)*((.)[w]+)*((?[w\%-\_]+=[w\%-\_/]*)*(&[w\%-\_]+=[w\%-\_/]*)*))'
        mo = re.compile(p)
        m = mo.search(p_strings)
        if not m:
            iplist.append('NULL')
        else:
            iplist = mo.findall(p_strings)
        for il in iplist:
            relist.append(il[0])
        return relist
    ##====================================================================
    Starry starry night ....
  • 相关阅读:
    常用正则表达式
    MySQL在大型网站的应用架构演变
    TCP窗口和拥塞控制
    【leetcode】1486. XOR Operation in an Array
    【leetcode】1481. Least Number of Unique Integers after K Removals
    【leetcode】1480. Running Sum of 1d Array
    【leetcode】1466. Reorder Routes to Make All Paths Lead to the City Zero
    【leetcode】1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
    【leetcode】1464. Maximum Product of Two Elements in an Array
    【leetcode】1461. Check If a String Contains All Binary Codes of Size K
  • 原文地址:https://www.cnblogs.com/BlueAndGray/p/3974802.html
Copyright © 2011-2022 走看看