安云网 - 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]'

//安云网,anyun.org

# __url__     = 'http://0x007.blog.51cto.com/' //内容来自安云网

# __version__ = '0.2' //ANYUN.ORG

import requests

//内容来自安云网

import re //安云网,anyun.org

from threading import Thread,Lock

//copyright AnYun.ORG

import time

//安云网,anyun.org

import sys

//本文来自安云网

import chardet //内容来自AnYun.ORG

import netaddr

//本文来自安云网

import struct //本文来自安云网

import socket //内容来自AnYun.ORG


//安云网咨询系统

lock = Lock() //安云网咨询系统


//安云网,anyun.org

def ip2int(addr):

//ANYUN.ORG

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

def int2ip(addr): //本文来自安云网

        return socket.inet_ntoa(struct.pack("!I", addr)) //ANYUN.ORG

def int_dec(pagehtml):

//内容来自安云网


//copyright AnYun.ORG

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

        if pagehtml != '': //安云网咨询系统

                # print 'use charset dect'

//安云网,anyun.org

                enc = chardet.detect(pagehtml) //ANYUN.ORG

                # print 'enc= ', enc

//ANYUN.ORG

                if enc['encoding'] and enc['confidence'] > 0.9:

//本文来自安云网

                        charset = enc['encoding']

//ANYUN.ORG


//copyright AnYun.ORG

                if charset == None:

//ANYUN.ORG

                        charset_re = re.compile("((^|;)\s*charset\s*=)([^\"']*)", re.M)

//copyright AnYun.ORG

                        charset=charset_re.search(pagehtml[:1000]) 

//安云网,anyun.org

                        charset=charset and charset.group(3) or None

//内容来自安云网


//ANYUN.ORG

                # test charset //内容来自安云网

                try:

//copyright AnYun.ORG

                        if charset: //本文来自安云网

                                unicode('test',charset,errors='replace')

//内容来自安云网

                except Exception,e:

//本文来自安云网

                        print 'Exception',e

//内容来自安云网

                        charset = None

//copyright AnYun.ORG

        # print 'charset=', charset //ANYUN.ORG

        return charset

//本文来自安云网


//内容来自安云网


//安云网咨询系统

def http_banner(url): //安云网,anyun.org

        ip=url //内容来自AnYun.ORG

        try:

//安云网,anyun.org

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

//内容来自AnYun.ORG


//内容来自AnYun.ORG

                body = url.content //copyright AnYun.ORG

                

//安云网,anyun.org

                charset = None //copyright AnYun.ORG

                if body != '': //copyright AnYun.ORG

                        charset = int_dec(body)

//安云网,anyun.org


//ANYUN.ORG

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

//copyright AnYun.ORG

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


//ANYUN.ORG

                if charset and charset != 'ascii' and charset != 'unicode': //copyright AnYun.ORG

                        try: //copyright AnYun.ORG

                                body = unicode(body,charset,errors='replace')

//内容来自AnYun.ORG

                        except Exception, e: //ANYUN.ORG

                                body = '' //copyright AnYun.ORG

                Struts=url.status_code //安云网,anyun.org

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

//安云网咨询系统

                if Struts==200 or Struts==403 or Struts==401: //内容来自安云网

                        title=re.findall(r"<title>(.*)<\/title>",body) //内容来自AnYun.ORG

                        if len(title):

//安云网咨询系统

                                title = title[0].strip()

//copyright AnYun.ORG

                        else:

//内容来自安云网

                                title = ''

//内容来自安云网

                        lock.acquire() //安云网,anyun.org

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

                        lock.release()

//内容来自AnYun.ORG

        except (requests.HTTPError,requests.RequestException,AttributeError,KeyError),e:

//ANYUN.ORG

                pass

//内容来自AnYun.ORG


//安云网,anyun.org


//安云网咨询系统


//本文来自安云网

if __name__ == '__main__': //内容来自AnYun.ORG

        if len(sys.argv) >= 2:

//内容来自安云网

                ips = sys.argv[1]

//内容来自AnYun.ORG

        else: //内容来自AnYun.ORG

                print 'usage: python http_banner.py 192.168.1./24 ' //copyright AnYun.ORG

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

//内容来自AnYun.ORG

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

//本文来自安云网

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

                sys.exit() //安云网,anyun.org

        port = '80' //本文来自安云网

        if len(sys.argv) == 3: //本文来自安云网

                port = sys.argv[2] //copyright AnYun.ORG

                 //本文来自安云网

        if '-' in ips:

//内容来自AnYun.ORG

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

//内容来自安云网

                startlong = ip2int(start) //安云网咨询系统

                endlong = ip2int(end) //内容来自安云网

                ips = netaddr.IPRange(start,end) //copyright AnYun.ORG

                for ip in list(ips):

//ANYUN.ORG

                        url='http://%s:%s'%(ip,port) //copyright AnYun.ORG

                        t = Thread(target=http_banner,args=(url,)) //安云网咨询系统

                        t.daemon=False //本文来自安云网

                        t.start() //安云网,anyun.org

        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 //安云网,anyun.org

                        t.start() //安云网,anyun.org


//copyright AnYun.ORG

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