安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 编程茶楼 > Python > C段http_banner获取v0.2

C段http_banner获取v0.2

时间:2015-12-15来源:未知 作者:安云网点击:
#-*-coding=utf-8-*- # __author__ = sanr # __email__ = [email protected] # __url__ = http://0x007.blog.51cto.com/ # __version__ = 0.2 import requests import re from threading import Thread,Lock import time import sys import chardet import netaddr import struc

#-*-coding=utf-8-*-

# __author__  = 'sanr'

//本文来自安云网

# __email__   = '[email protected]' //本文来自安云网

# __url__     = 'http://0x007.blog.51cto.com/'

//安云网,anyun.org

# __version__ = '0.2'

//copyright AnYun.ORG

import requests //copyright AnYun.ORG

import re

//安云网咨询系统

from threading import Thread,Lock //ANYUN.ORG

import time

//copyright AnYun.ORG

import sys //copyright AnYun.ORG

import chardet //安云网咨询系统

import netaddr //ANYUN.ORG

import struct //安云网咨询系统

import socket //内容来自AnYun.ORG


//安云网,anyun.org

lock = Lock()

//安云网,anyun.org


//本文来自安云网

def ip2int(addr):

//内容来自AnYun.ORG

        return struct.unpack("!I", socket.inet_aton(addr))[0]

//本文来自安云网

def int2ip(addr): //内容来自AnYun.ORG

        return socket.inet_ntoa(struct.pack("!I", addr)) //本文来自安云网

def int_dec(pagehtml): //安云网咨询系统


//内容来自安云网

        charset = None

//ANYUN.ORG

        if pagehtml != '':

//本文来自安云网

                # print 'use charset dect' //ANYUN.ORG

                enc = chardet.detect(pagehtml)

//copyright AnYun.ORG

                # print 'enc= ', enc

//安云网咨询系统

                if enc['encoding'] and enc['confidence'] > 0.9: //安云网,anyun.org

                        charset = enc['encoding'] //ANYUN.ORG


//本文来自安云网

                if charset == None:

//copyright AnYun.ORG

                        charset_re = re.compile("((^|;)\s*charset\s*=)([^\"']*)", re.M) //内容来自安云网

                        charset=charset_re.search(pagehtml[:1000])  //copyright AnYun.ORG

                        charset=charset and charset.group(3) or None //安云网咨询系统


//内容来自AnYun.ORG

                # test charset

//内容来自AnYun.ORG

                try:

//内容来自安云网

                        if charset: //ANYUN.ORG

                                unicode('test',charset,errors='replace') //ANYUN.ORG

                except Exception,e:

//内容来自安云网

                        print 'Exception',e

//ANYUN.ORG

                        charset = None //本文来自安云网

        # print 'charset=', charset

//内容来自安云网

        return charset

//安云网咨询系统


//ANYUN.ORG


//内容来自AnYun.ORG

def http_banner(url): //内容来自AnYun.ORG

        ip=url //内容来自安云网

        try:

//内容来自AnYun.ORG

                url=requests.get(url,timeout=2)        

//内容来自AnYun.ORG


//copyright AnYun.ORG

                body = url.content //内容来自安云网

                

//ANYUN.ORG

                charset = None //copyright AnYun.ORG

                if body != '': //安云网,anyun.org

                        charset = int_dec(body) //copyright AnYun.ORG


//安云网,anyun.org

                if charset == None or charset == 'ascii':

//安云网,anyun.org

                        charset = 'ISO-8859-1' //本文来自安云网


//安云网咨询系统

                if charset and charset != 'ascii' and charset != 'unicode':

//安云网,anyun.org

                        try: //安云网咨询系统

                                body = unicode(body,charset,errors='replace') //ANYUN.ORG

                        except Exception, e: //ANYUN.ORG

                                body = '' //安云网,anyun.org

                Struts=url.status_code

//ANYUN.ORG

                Server=url.headers['server'][0:13]

//内容来自AnYun.ORG

                if Struts==200 or Struts==403 or Struts==401:

//ANYUN.ORG

                        title=re.findall(r"<title>(.*)<\/title>",body)

//copyright AnYun.ORG

                        if len(title): //安云网咨询系统

                                title = title[0].strip() //copyright AnYun.ORG

                        else: //ANYUN.ORG

                                title = '' //内容来自AnYun.ORG

                        lock.acquire()

//内容来自安云网

                        print ('%s\t%d\t%-10s\t%s'%(ip.lstrip('http://'),Struts,Server,title))

//安云网,anyun.org

                        lock.release() //copyright AnYun.ORG

        except (requests.HTTPError,requests.RequestException,AttributeError,KeyError),e: //内容来自安云网

                pass

//内容来自安云网


//本文来自安云网


//ANYUN.ORG


//安云网咨询系统

if __name__ == '__main__':

//本文来自安云网

        if len(sys.argv) >= 2: //ANYUN.ORG

                ips = sys.argv[1] //本文来自安云网

        else: //安云网,anyun.org

                print 'usage: python http_banner.py 192.168.1./24 ' //安云网咨询系统

                print 'usage: python http_banner.py 192.168.1.1-192.168.1.254 '

//安云网咨询系统

                print 'usage: python http_banner.py 192.168.1./24 8080'

//ANYUN.ORG

                print 'usage: python http_banner.py 192.168.1.1-192.168.1.254 8080'

//内容来自安云网

                sys.exit() //copyright AnYun.ORG

        port = '80' //内容来自AnYun.ORG

        if len(sys.argv) == 3: //copyright AnYun.ORG

                port = sys.argv[2] //内容来自安云网

                 //本文来自安云网

        if '-' in ips: //copyright AnYun.ORG

                start, end = ips.split('-')

//内容来自安云网

                startlong = ip2int(start) //copyright AnYun.ORG

                endlong = ip2int(end) //内容来自AnYun.ORG

                ips = netaddr.IPRange(start,end)

//安云网咨询系统

                for ip in list(ips):

//ANYUN.ORG

                        url='http://%s:%s'%(ip,port) //内容来自安云网

                        t = Thread(target=http_banner,args=(url,))

//安云网咨询系统

                        t.daemon=False //内容来自AnYun.ORG

                        t.start()

//内容来自安云网

        elif '/'        in ips: //安云网,anyun.org

                ips = netaddr.IPNetwork(ips) //内容来自安云网

                for ip in list(ips): //内容来自安云网

                        url='http://%s:%s'%(ip,port) 

//ANYUN.ORG

                        t = Thread(target=http_banner,args=(url,))

//安云网,anyun.org

                        t.daemon=False

//本文来自安云网

                        t.start()

//copyright AnYun.ORG


//ANYUN.ORG

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容