• python例子-Nmap扫描IP并更新


    # (1)、将111.206.217.0/24、218.75.110.0/24两个网段IP地址插入proxy.nmap_ip表中,type字段按照个人序号插入。
    def readIpByAddr():
        ip_list= []
        for i in range(255):
            i = '111.206.217.%s' % i
            j = '218.75.110.%s' % i
            ip_list.append(i)
            ip_list.append(j)
        return ip_list
    
    def readIpByFile(name):
        frlist = open(name,'r').readlines()
        ip_list = []
        for ip in frlist:
            ip = ip.strip()
            ip_list.append(ip)
    
        return ip_list
    
    def insertIP():
        #iplist = readIpByAddr()
        iplist = readIpByFile('iplist.txt');
        conn = db_conn('192.168.88.103','root','cosmysql','proxy')
        cursor = conn.cursor()
        for j in iplist:
            cmdsql = "insert into nmap_ip(ip) values('%s')" % (j)
            print cmdsql
            cursor.execute(cmdsql)
        cursor.close()
        conn.close()
        
    # (2)、使用nmap扫描上述IP的开放端口,并区分http端口和其它端口,并更新数据库;
    def scan_ip():
        conn = db_conn('192.168.88.103','root','cosmysql','proxy')
        cursor = conn.cursor()
        cursor.execute('select ip from nmap_ip')
        result = cursor.fetchall()                        #获取所有IP列表
        for ip in result:
            nmap = "nmap %s | grep 'open'" %ip[0]        #构造namp扫描语句
            nmap_result = os.popen(nmap).readlines()    #扫描并获取结果
            if nmap_result == []:                            #Host 未开启
                print ip[0],':NoOpen!'
            else :
                print ip[0],':Uped,next updateDB'  #format like :['80/tcp  open  http
    ', '443/tcp open  https
    ']; DB like: ip,http_port,other_port,title,type
                http_port = ''
                other_port =''
                for port_result in nmap_result:            #遍历扫描结果.并构造sql更新语句.
                    port_result = port_result.strip().replace('/tcp','').split(' ')
                    if port_result[len(port_result)-1] == 'http':
                        http_port = port_result[0]
                    else:
                        other_port = other_port + port_result[0] + ','
                update_sql = "update nmap_ip set http_port='%s',other_port='%s' where ip='%s';" % (http_port,other_port,ip[0])
                print update_sql
                update_reslut = cursor.execute(update_sql)
        cursor.close()    #关闭光标.
        conn.close()    #关闭连接.
    
    # (3)、访问上述IP的http端口,取得title并更新数据库。
    def update_title():
        try:
            conn = db_conn('192.168.88.103','root','cosmysql','proxy')
            cursor = conn.cursor()
            cursor.execute("select IP,http_port from nmap_ip where length(http_port) > 0 ;")
            result = cursor.fetchall()
            pattern = re.compile('<title>(.*?)</title>')
            for ip in result:
                url = 'http://%s:%s' % (ip[0],ip[1].replace('/tcp',''))
                print url
                try:
                    response = urllib2.urlopen(url)
                    html = response.read()
                    items = re.findall(pattern,html)
                    update_sql = "'update nmap_ip set title='%s' where id='%s' ;" % (items[0][0],ip)
                    print 'update title:',update_sql
                    cursor.execute(update_sql)
    
                except Exception, e:
                    print e
                    pass
        except Exception, e:
            print e
            pass
    
    def main4():
        #insertIP()
        #scan_ip()
        update_title()
    if __name__ == '__main__':
        main4()

    其中iplist.txt类似于如下:

    101.1.16.123
    101.227.252.130
    101.4.136.34
    101.4.136.66
    101.4.60.43
    101.4.60.46
    101.4.60.47
    101.71.27.120
    103.246.244.161
    103.248.254.172
    103.248.254.173
    103.248.254.174
    103.248.254.175
    103.27.24.113
    103.27.24.114
    103.27.24.114
    106.37.177.251
    110.173.0.58
    110.173.0.58
    110.173.54.154
    110.75.120.170
    111.12.128.167
  • 相关阅读:
    统计单词Java
    信息反馈—冲刺08
    信息反馈—冲刺07
    PHP连接MySQL创建表
    phpstrom php出现404
    第十周总结
    信息反馈—冲刺06
    信息反馈—冲刺05
    无所心态,没环境下的自学
    centos6.5 nginx安装pcre错误
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4894457.html
Copyright © 2020-2023  润新知