Exemplo n.º 1
0
def test_city_ipv6():
    db4 = ipdb.City("c:/tiantexin/download/mydata4vipday4_cn.ipdb")
    db = ipdb.City("c:/work/ipdb/mydata6vipday2.ipdb")

    df = pd.read_csv("C:\\Users\\GAOCHUNHUI\\Documents\\WeChat Files\\daxime\\FileStorage\\File\\2019-10\\ipiptest\\ip_data.csv")
    for i, row in df.iterrows():
        if ipaddress.ip_address(row['request_ip']).version == 4:

            db4.find(row['request_ip'], "CN")
        else:
            print(db.find(row['request_ip'], "CN"), row['request_ip'])

    try:
        print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN"))
    except Exception as e:
        print(e)
Exemplo n.º 2
0
def get_city(ip):
    db = ipdb.City(db_dir)
    # 是否支持ipv4,ipv6
    # print(db.is_ipv4(), db.is_ipv6())
    # 查看构建时间
    # print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(db.build_time())))
    # print(db.languages())
    # print(db.fields())
    # print(db.build_time())
    # print(db.find(ip, "CN"))
    # print(db.find_map(ip, "CN"))
    # print(db.find_info(ip, 'CN').country_name)
    # print(db.find_info(ip, "CN").city_name)

    data_list = db.find(ip, "CN")

    country = data_list[0]

    if data_list[2] == '':
        region = data_list[1]
        city = None
        isp = None
    else:
        region = data_list[1]
        city = data_list[2]
        isp = None

    data_dict = {
        'country': country,
        'region': region,
        'city': city,
        'isp': isp
    }

    return data_dict
Exemplo n.º 3
0
def test_free():

    db = ipdb.City("ipipfree.ipdb")

    print(db.is_ipv4(), db.is_ipv6())

    print(db.languages())

    print(db.fields())

    print(db.build_time())

    print(db.find("123.124.16.83", "CN"))

    print("ipdb reload", db.reload("ipipfree.ipdb"))

    print(db.find("123.124.16.83", "CN"))

    try:

        print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN"))

    except Exception as e:

        print(e)
Exemplo n.º 4
0
def create_app(debug=False, **kwargs):
    log.gen_log.info("debug:{}".format(debug))
    log.gen_log.info("kwargs:{}".format(kwargs))
    log.gen_log.info("port:{}".format(kwargs['port']))
    log.gen_log.info("name:{}".format(kwargs['name']))

    template_path = os.path.join(kwargs['proj_dir'], 'templates')
    if not os.path.exists(template_path):
        raise Exception("template_path {} not exists".format(template_path))

    static_path = os.path.join(kwargs['proj_dir'], 'static')
    if not os.path.exists(static_path):
        raise Exception("static_path {} not exists" .format(static_path))

    import redis
    redis_client = redis.from_url(kwargs['redis_url'], client_name=kwargs['name'])
    workspace_root = os.path.dirname(kwargs['proj_dir'])
    doc_root = os.path.join(workspace_root, 'docs/_build/html')
    db_ip = ipdb.City(os.path.join(kwargs['proj_dir'], 'lib/lib_ip/ipipfree.ipdb'))

    app = web.Application(
        handlers=url_pattern,
        template_path=template_path,
        static_path=static_path,
        redis_client=redis_client,
        db_ip=db_ip,
        doc_root=doc_root,
    )
    return app
Exemplo n.º 5
0
def ipipCheckGeo(ips):
    mylog = set_logger()
    iplis = []
    # ipip查询仅接受unicode编码
    if (type(ips) is unicode):
        iplis.append(ips)
    elif (type(ips) is str):
        iplis.append(ips)
    elif (type(ips) is list):
        iplis = ips
    else:
        mylog.error("[global function] Input type Error in ipipCheckGeo().")
        return 0
    fpath = get_ipipGeo_path()
    realpath = os.path.split(
        __file__)[0] + os.path.sep + ".." + os.path.sep + fpath
    #print realpath
    dbs = ipdb.City(realpath)
    redic = {}
    for ip in iplis:
        if (type(ip) is not unicode):
            ip2 = ip.decode()
        else:
            ip2 = ip
        try:
            # encode,ipip查询仅接受unicode编码
            tmp = dbs.find(ip2, "CN")
            # newtmp=[]
            # for ii in tmp:
            # 	newtmp.append(ii.encode("utf-8"))
            redic[ip] = tmp
        except Exception, e:
            mylog.error(
                "[global function] Check IP by ipdb errors:{0}".format(e))
Exemplo n.º 6
0
def test_city_district():
    db = ipdb.City("c:/work/ipdb/test.ipdb")
    print(db.fields())
    city = db.find_info(u"111.199.81.160", "CN")
    qx = city.get_district()
    if qx != None:
        print(qx.city_name, qx.district_name)
Exemplo n.º 7
0
def test_city_ipv6_test():

    db = ipdb.City("c:/work/ipdb/mydata6vipday2.ipdb")

    print(db.find("2001:44c8:4644:1191:3c41:724d:e391:51b0", "CN"))
    print(db.find_map("2a04:3543:1000:2310:ecb3:3eff:fef0:20e1", "CN"))
    print(db.find_info("2a04:3543:1000:2310:ecb3:3eff:fef0:20e1", "CN").country_name)
Exemplo n.º 8
0
def simple_query(ip: str) -> str:
    # TODO: non-Chinese IP may need to query maxmind.
    if ':' in ip:
        # IPv6
        pass
    else:
        db = ipdb.City(os.path.join(DB_PATH, "ipv4_ipip.ipdb"))
        return ' '.join(db.find(ip, "CN"))
Exemplo n.º 9
0
def test_city_ipv4():
    db = ipdb.City("c:/tiantexin/download/mydata4vipday4_cn.ipdb")
    print(db.is_ipv4(), db.is_ipv6())
    print(db.languages())
    print(db.fields())
    print(db.build_time())
    print(db.find("1.1.1.1", "CN"))
    print(db.find_map("8.8.8.8", "CN"))
    print(db.find_info("118.28.1.1", "CN").country_name)
Exemplo n.º 10
0
def get_ip_city(ip):
    global ipip_db
    if ipip_db is None:
        ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb')
        ipip_db = ipdb.City(ipip_db_path)
    info = list(set(ipip_db.find(ip, 'CN')))
    if '' in info:
        info.remove('')
    return ' '.join(info)
Exemplo n.º 11
0
    def _ip_query(self, ip):
        import ipdb

        db = ipdb.City("/www/server/panel/data/data.ipdb")
        if sys.version_info[0] == 2:
            ip_info = db.find_info(unicode(ip), "CN")
        else:
            ip_info = db.find_info(ip, "CN")
        if ip_info.country_name == '中国':
            return ip_info.region_name
        return None
Exemplo n.º 12
0
    def test_city(self):
        print("\n\ntest city start\n\n")
        city = ipdb.City("c:/work/ipdb/city.ipv4.ipdb")
        print("ipdb.build.time:", city.build_time())
        for A in range(224):
            ip_address = u"%d.28.1.1" % A
            print(ip_address, city.find(ip_address, "CN"))
            print(ip_address, city.find_map(ip_address, "CN"))
            print(ip_address, city.find_info(ip_address, "CN"))

        print("\n\ntest city start\n\n")
Exemplo n.º 13
0
def test_city_ipv6():
    db = ipdb.City("c:/work/ipdb/city.ipv6.ipdb")
    print(db.is_ipv4(), db.is_ipv6())
    print(db.languages())
    print(db.fields())
    print(db.build_time())
    print(db.find("2001:250:200::", "CN"))

    try:
        print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN"))
    except Exception as e:
        print(e)
Exemplo n.º 14
0
def test_city_ipv6():
    db = ipdb.City("./mydata4vipweek2.ipdb")
    print(db.is_ipv4(), db.is_ipv6())
    print(db.languages())
    print(db.fields())
    print(db.build_time())
    print(db.find("2001:250:200::", "CN"))

    try:
        print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN"))
    except Exception as e:
        print(e)
Exemplo n.º 15
0
def get_ip_city_by_ipip(ip):
    global ipip_db
    if ipip_db is None:
        ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb')
        ipip_db = ipdb.City(ipip_db_path)
    try:
        info = ipip_db.find_info(ip, 'CN')
    except ValueError:
        return None
    if not info:
        raise None
    return {'city': info.city_name, 'country': info.country_name}
Exemplo n.º 16
0
def get_ip_city(ip):
    global ipip_db
    if not ip or not isinstance(ip, str):
        return _("Invalid ip")
    if ':' in ip:
        return 'IPv6'
    if ipip_db is None:
        ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb')
        ipip_db = ipdb.City(ipip_db_path)
    info = list(set(ipip_db.find(ip, 'CN')))
    if '' in info:
        info.remove('')
    return ' '.join(info)
Exemplo n.º 17
0
def get_country_name(_ip):
    """ 获取 国家名称
    https://www.ipip.net/product/client.html
    :param _ip:
    :return:
    """
    if tools.is_number(_ip):
        _ip = long2ip(int(_ip))
    db = ipdb.City(tools.ROOT_PATH + "/P/ipdb/ipipfree.ipdb")
    info = db.find_map(_ip, "CN")
    info['country_code'] = get_country_code(_ip)

    return info
Exemplo n.º 18
0
def test_city_ipv4():
    db = ipdb.City("./mydata4vipweek2.ipdb")
    print(db.is_ipv4(), db.is_ipv6())
    print(db.languages())
    print(db.fields())
    print(db.build_time())
    print(db.find("1.1.1.1", "CN"))
    print(db.find_map("8.8.8.8", "CN"))
    print(db.find_info("8.8.8.8", "CN").country_name)
    print(db.find_info("8.8.8.8", "CN").region_name)
    print(db.find_info("8.8.8.8", "CN").city_name)
    print(db.find_info("8.8.8.8", "CN").owner_name)
    print(db.find_info("8.8.8.8", "CN").isp_domain)
Exemplo n.º 19
0
def test_free():
    db = ipdb.City("c:/work/ipdb/mydata4vipweek2.ipdb")
    print(db.is_ipv4(), db.is_ipv6())
    print(db.languages())
    print(db.fields())
    print(db.build_time())
    print(db.find("1.1.1.1", "CN"))

    print("ipdb reload", db.reload("c:/work/ipdb/city.free.ipdb"))
    print(db.find("118.28.1.1", "CN"))

    try:
        print(db.find("2000:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", "CN"))
    except Exception as e:
        print(e)
Exemplo n.º 20
0
def test_city_ipv4():

    db = ipdb.City("ipipfree.ipdb")

    print(db.is_ipv4(), db.is_ipv6())

    print(db.languages())

    print(db.fields())

    print(db.build_time())

    print(db.find("1.1.1.1", "CN"))

    print(db.find_map("8.8.8.8", "CN"))

    print(db.find_info("118.28.1.1", "CN").country_name)
Exemplo n.º 21
0
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../')

import ipdb
from pathlib import Path

from client.webinfo.wafw00f.main import main1 as WafMain

ipdata = Path(__file__).parent.joinpath('ipdata.ipdb')
if not ipdata.is_file():
    print('[-]web信息收集-ipdata.ipdb IP数据库不存在')
    exit(0)
else:
    IPDB = ipdb.City(ipdata.resolve())


def SelectIP(ip):
    '''查询IP归属地'''
    try:
        result = IPDB.find_map(ip, 'CN')
    except Exception as e:
        print(f'{ip}查询归属地失败:{e}')
        return ''
    else:
        if result['region_name'] == result['city_name']:
            ipinfo = result['country_name'] + result['region_name'] + result[
                'isp_domain']
        else:
            ipinfo = result['country_name'] + result['region_name'] + result[
                'city_name'] + result['isp_domain']
Exemplo n.º 22
0
########################################################################################

IPDB 格式官方解析代码
https://www.ipip.net/support/code.html
https://github.com/ipipdotnet/ipdb-python

qqwry.ipdb   纯真数据库 IPIP.net 格式版,精简并匹配为国家、省、市、运营商。
https://github.com/metowolf/qqwry.ipdb
    
IP 地址库 数据基于纯真数据库分类,更新日期 20201105.
https://github.com/metowolf/iplist
wget https://registry.npmjs.org/qqwry.ipdb/-/qqwry.ipdb-2020.11.5.tgz

#########################################################################################

import ipdb

# db = ipdb.City("/path/to/city.ipv4.ipdb")
db = ipdb.City("qqwry.ipdb")

# db.reload("/path/to/city.ipv4.ipdb") # update ipdb database file reload data
print(db.is_ipv4(), db.is_ipv6())
print(db.languages()) # support language
print(db.fields()) #  support fields
print(db.build_time()) #  build database time
print(db.find("1.1.1.1", "CN")) #  query ip return array
# print(db.find(u"1.1.1.1", "CN")) #  Python 2.7
print(db.find_map("8.8.8.8", "CN")) #  query ip return dict
print(db.find_info("118.28.1.1", "CN").country_name) 
Exemplo n.º 23
0
    '109.86.0.0/15', '182.23.211.0/24', '58.211.2.0/24', '119.36.164.0/24',
    '116.55.250.0/24', '101.227.163.0/24', '13.228.69.0/24',
    '120.221.136.0/24', '119.188.132.0/24', '115.127.235.0/24',
    '42.236.6.0/24', '125.88.190.0/24', '61.54.47.0/24', '103.27.12.0/22',
    '116.193.80.0/21', '101.79.159.0/24', '123.155.158.0/24',
    '111.47.226.0/24', '131.0.72.0/22', '192.230.64.0/18'
]
ASNS = [
    '10576', '10762', '11748', '131099', '132601', '133496', '134409',
    '135295', '136764', '137187', '13777', '13890', '14103', '14520', '17132',
    '199251', '200013', '200325', '200856', '201263', '202294', '203075',
    '203139', '204248', '204286', '204545', '206227', '206734', '206848',
    '206986', '207158', '208559', '209403', '21030', '21257', '23327', '23393',
    '23637', '23794', '24997', '26492', '268843', '28709', '29264', '30282',
    '30637', '328126', '36408', '38107', '397192', '40366', '43303', '44907',
    '46071', '46177', '47542', '49287', '49689', '51286', '55082', '55254',
    '56636', '57363', '58127', '59730', '59776', '60068', '60626', '60922',
    '61107', '61159', '62026', '62229', '63062', '64232', '8868', '9053',
    '55770', '49846', '49249', '48163', '45700', '43639', '39836', '393560',
    '393234', '36183', '35994', '35993', '35204', '34850', '34164', '33905',
    '32787', '31377', '31110', '31109', '31108', '31107', '30675', '24319',
    '23903', '23455', '23454', '22207', '21399', '21357', '21342', '20940',
    '20189', '18717', '18680', '17334', '16702', '16625', '12222', '209101',
    '201585', '135429', '395747', '394536', '209242', '203898', '202623',
    '14789', '133877', '13335', '132892', '21859', '6185', '47823'
]

ip_db = ipdb.City(Path(__file__).parent.joinpath('lib/ipdata.ipdb'))
geo_reader = geoip2.database.Reader(
    Path(__file__).parent.joinpath('lib/GeoLite2-ASN.mmdb').resolve())
Exemplo n.º 24
0
def dns_process(d_a, conf_data, i):
    import logging
    logger = logging.getLogger("DNS")
    logger.setLevel(level=logging.INFO)
    handler = logging.FileHandler("%s/SELENIUM-%d-log.txt" % (conf_data["log"], i), encoding='utf-8')
    handler.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)

    # console set
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)

    logger.addHandler(handler)
    # logger.addHandler(console)

    start = datetime.datetime.now()

    for key, value in d_a.items():
        norm_url = get_url_normalize_single(value[1])
        value.append(norm_url)
        domain = urlparse(norm_url).hostname
        myaddr = []
        if isIP(domain):
            value.append("")
            value.append(domain)
            myaddr.append(domain)
            # logger.info("[%s\t%s\t%s]" % (value[0], domain, domain))
        else:
            value.append(domain)
            try:
                A = socket.gethostbyname(domain)
                myaddr.append(A)
                # logger.info("[%s\t%s\t%s]" % (value[0], domain, myaddr[0]))
            except socket.error:
                myaddr.append("")
                # logger.info("[%s\t%s\t解析失败]" % (value[0], domain))
        time.sleep(0.1)
        if myaddr[0].strip() == "":
            value.append("NULL")
            value.append("NULL")
            value.append("NULL")
            msgstr = "#,#".join(map(str, value))
            logger.info("[%s]" % msgstr)
        else:
            value.append(myaddr[0])
            dbpath = conf_data["conf"] + "/ipipfree.ipdb"
            db = ipdb.City(dbpath)
            city_str = db.find(myaddr[0], "CN")
            jing_nei = "中国,香港,澳门,台湾"
            if city_str[0] in jing_nei:
                if city_str[1] in jing_nei:
                    value.append("境外")
                else:
                    value.append("境内")
            else:
                value.append("境外")
            value.append(city_str[0] + "·" + city_str[1])
    end = datetime.datetime.now()
    # logger.info("%d" % (end-start).seconds)
    return d_a
Exemplo n.º 25
0
 def __init__(self, ipdb_file):
     self.db = ipdb.City(ipdb_file)
Exemplo n.º 26
0
from __future__ import unicode_literals
import ipdb, sys

db = ipdb.City("ipipfree.ipdb")
# db.reload("/path/to/city.ipv4.ipdb") # update ipdb database file reload data
print db.is_ipv4(), db.is_ipv6()
print db.languages()  # support language
print db.fields()  #  support fields
print db.build_time()  #  build database time
#print db.find("1.1.1.1", "CN") #  query ip return array
# print(db.find(u"1.1.1.1", "CN")) #  Python 2.7
#print db.find_map("123.124.16.83", "CN") #  query ip return dict
print db.find_info("123.124.16.83", "CN").region_name
print db.find_info("123.124.16.83", "CN").city_name