Ejemplo n.º 1
0
 def test_get_asn_dns(self):
     result = Net('74.125.225.229')
     try:
         self.assertIsInstance(result.get_asn_dns(), dict)
     except (ASNLookupError, ASNRegistryError):
         pass
     except AssertionError as e:
         raise e
     except Exception as e:
         self.fail('Unexpected exception raised: {0}'.format(e))
Ejemplo n.º 2
0
    def test_get_asn_dns(self):
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_asn_dns(), list)
        except ASNLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        result.dns_zone = 'a'
        self.assertRaises(ASNLookupError, result.get_asn_dns)
Ejemplo n.º 3
0
    def test_get_asn_verbose_dns(self):
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_asn_verbose_dns(asn='15169'), str)
        except ASNLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(ASNLookupError, result.get_asn_verbose_dns, **dict(
            asn='a'
        ))
Ejemplo n.º 4
0
    def test_get_asn_http(self):
        data = {
            'nets': {
                'net': {
                    'orgRef': {
                        '@handle': 'APNIC'
                    }
                }
            }
        }
        result = Net('1.2.3.4')
        try:
            self.assertIsInstance(result.get_asn_http(result=data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data['nets']['net']['orgRef']['@handle'] = 'RIPE'
        try:
            self.assertIsInstance(result.get_asn_http(result=data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data['nets']['net']['orgRef']['@handle'] = 'DNIC'
        try:
            self.assertIsInstance(result.get_asn_http(result=data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data['nets']['net']['orgRef']['@handle'] = 'INVALID'
        try:
            self.assertRaises(ASNRegistryError, result.get_asn_http,
                              result=data)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data = ''
        try:
            self.assertIsInstance(result.get_asn_http(result=data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))
Ejemplo n.º 5
0
    def test_get_asn_whois(self):
        data = ('15169   | 74.125.225.229   | 74.125.225.0/24     | US | arin'
                '     | 2007-03-13')
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_asn_whois(result=data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data = ('15169   | 74.125.225.229   | 74.125.225.0/24     | US | rdm'
                '     | 2007-03-13')
        result = Net('74.125.225.229')
        self.assertRaises(ASNRegistryError, result.get_asn_whois, 3, data)
Ejemplo n.º 6
0
    def test_get_asn_dns(self):
        data = ['"15169 ', ' 74.125.225.0/24 ', ' US ', ' arin ',
                ' 2007-03-13"']
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_asn_dns(result=data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data = ['"15169 ', ' 74.125.225.0/24 ', ' US ', ' random ',
                ' 2007-03-13"']
        result = Net('74.125.225.229')
        self.assertRaises(ASNRegistryError, result.get_asn_dns, data)

        data = []
        result = Net('74.125.225.229')
        self.assertRaises(ASNLookupError, result.get_asn_dns, data)
Ejemplo n.º 7
0
    def test_get_nets_other(self):

        net = Net('210.107.73.73')
        obj = Whois(net)

        # No exception raised, but should provide code coverage for inetnum
        # invalid IP ValueError.
        multi_net_response = (
            '\ninetnum:        210.107.0.0 - 210.107.127.256\n'
            '\n')
        obj.get_nets_other(multi_net_response)
Ejemplo n.º 8
0
    def test_get_host(self):
        ips = [
            '74.125.225.229',  # ARIN
            '2001:4860:4860::8888'
        ]

        for ip in ips:
            result = Net(ip)
            try:
                self.assertIsInstance(result.get_host(0), tuple)
            except HostLookupError:
                pass
            except AssertionError as e:
                raise e
            except Exception as e:
                self.fail('Unexpected exception raised: {0}'.format(e))

        result = Net('74.125.225.229', 0)
        self.assertRaises(HostLookupError, result.get_host, **dict(
            retry_count=1))
Ejemplo n.º 9
0
    def test_get_whois(self):
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_whois(), str)
        except WhoisLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(WhoisLookupError, result.get_whois, **dict(
            retry_count=0, server='arin.net'))

        self.assertRaises(BlacklistError, result.get_whois, **dict(
            server='whois.arin.net', extra_blacklist=['whois.arin.net']))

        result = Net(address='74.125.225.229', timeout=0)
        self.assertRaises(WhoisLookupError, result.get_whois, **dict(
            retry_count=1))
Ejemplo n.º 10
0
    def test_get_http_json(self):
        from ipwhois.rdap import RIR_RDAP
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_http_json(
                RIR_RDAP['arin']['ip_url'].format('74.125.225.229')), dict)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(HTTPLookupError, result.get_http_json, **dict(
            url='http://255.255.255.255', retry_count=1))

        result = Net(address='74.125.225.229', timeout=0)
        url = RIR_RDAP['arin']['ip_url'].format('74.125.225.229')
        self.assertRaises(HTTPLookupError, result.get_http_json, **dict(
            url=url, retry_count=0))
Ejemplo n.º 11
0
    def test_get_http_json(self):
        from ipwhois.rdap import RIR_RDAP
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_http_json(
                RIR_RDAP['arin']['ip_url'].format('74.125.225.229')), dict)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(HTTPLookupError, result.get_http_json, **dict(
            url='http://255.255.255.255', retry_count=1))

        result = Net(address='74.125.225.229', timeout=0)
        url = RIR_RDAP['arin']['ip_url'].format('74.125.225.229')
        self.assertRaises(HTTPLookupError, result.get_http_json, **dict(
            url=url, retry_count=0))
Ejemplo n.º 12
0
    def test_lookup_asn(self):
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.lookup_asn(), tuple)
        except (HTTPLookupError, ASNRegistryError):
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        result = Net(address='74.125.225.229', timeout=0,
                     allow_permutations=False)
        self.assertRaises(ASNRegistryError, result.lookup_asn)

        result = Net(address='74.125.225.229', timeout=0,
                     allow_permutations=True)
        self.assertRaises(HTTPLookupError, result.lookup_asn, **dict(
            asn_alts=['http']
        ))
Ejemplo n.º 13
0
    def test_get_whois(self):
        result = Net('74.125.225.229')
        try:
            self.assertIsInstance(result.get_whois(), str)
        except WhoisLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(WhoisLookupError, result.get_whois, **dict(
            retry_count=0, server='arin.net'))

        self.assertRaises(BlacklistError, result.get_whois, **dict(
            server='whois.arin.net', extra_blacklist=['whois.arin.net']))

        result = Net(address='74.125.225.229', timeout=0)
        self.assertRaises(WhoisLookupError, result.get_whois, **dict(
            retry_count=1))
Ejemplo n.º 14
0
    def test__get_nets_lacnic(self):

        net = Net('200.57.141.161')
        obj = Whois(net)

        # No exception raised, but should provide code coverage for inetnum
        # invalid IP ValueError.
        multi_net_response = (
            '\ninetnum:     200.57.256/19\r\n'
            '\n'
        )
        obj._get_nets_lacnic(multi_net_response)
Ejemplo n.º 15
0
def locate_asn_info(ip):
    """
    @IP: 147.229.2.90
    """
    try:
        net = Net(ip)
        ipasn = IPASN(net)
        results = ipasn.lookup()
    except Exception:
        return None
    else:
        return results
Ejemplo n.º 16
0
    def test_get_asn_origin_whois(self):
        # IP doesn't matter here
        result = Net('74.125.225.229')

        try:
            self.assertIsInstance(result.get_asn_origin_whois(asn='AS15169'),
                                  str)
        except WhoisLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(
            WhoisLookupError, result.get_asn_origin_whois,
            **dict(asn='AS15169', retry_count=0, server='radb.net'))

        # IP doesn't matter here
        result = Net(address='74.125.225.229', timeout=0)
        self.assertRaises(WhoisLookupError, result.get_asn_origin_whois,
                          **dict(asn='AS15169', retry_count=1))
Ejemplo n.º 17
0
    def test_get_asn_origin_whois(self):
        # IP doesn't matter here
        result = Net('74.125.225.229')

        try:
            self.assertIsInstance(result.get_asn_origin_whois(
                asn='AS15169'), str)
        except WhoisLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(WhoisLookupError, result.get_asn_origin_whois,
                          **dict(asn='AS15169', retry_count=0,
                                 server='radb.net'))

        # IP doesn't matter here
        result = Net(address='74.125.225.229', timeout=0)
        self.assertRaises(WhoisLookupError, result.get_asn_origin_whois,
                          **dict(asn='AS15169', retry_count=1))
Ejemplo n.º 18
0
    def test_lookup_asn(self):

        net = Net('74.125.225.229')
        ipasn = IPASN(net)

        try:
            self.assertIsInstance(ipasn.lookup(), dict)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))
Ejemplo n.º 19
0
    def test_get_nets_jpnic(self):

        net = Net('133.1.2.5')
        obj = NIRWhois(net)

        # No exception raised, but should provide code coverage for multiple
        # network scenarios and CIDR invalid IP ValueError.
        multi_net_response = ('a. [Network Number] asd>133.1.0.0/16</A>'
                              'a. [Network Number] asd>133.1.0.0/24</A>')
        obj.get_nets_jpnic(multi_net_response)

        self.assertFalse(
            obj.get_nets_jpnic('a. [Network Number] asd>asd/16</A>'))
Ejemplo n.º 20
0
    def test_get_http_raw(self):
        from ipwhois.nir import NIR_WHOIS

        # GET
        result = Net('133.1.2.5')
        try:
            self.assertIsInstance(result.get_http_raw(
                NIR_WHOIS['jpnic']['url'].format('133.1.2.5')), str)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        # POST
        result = Net('115.1.2.3')
        try:
            self.assertIsInstance(result.get_http_raw(
                url=NIR_WHOIS['krnic']['url'].format('115.1.2.3'),
                request_type=NIR_WHOIS['krnic']['request_type'],
                form_data={
                    NIR_WHOIS['krnic']['form_data_ip_field']: '115.1.2.3'
                }
            ), str)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(HTTPLookupError, result.get_http_raw, **dict(
            url='http://255.255.255.255', retry_count=1))

        result = Net(address='133.1.2.5', timeout=0)
        url = NIR_WHOIS['jpnic']['url'].format('133.1.2.5')
        self.assertRaises(HTTPLookupError, result.get_http_raw, **dict(
            url=url, retry_count=0))
Ejemplo n.º 21
0
 def addressRegistry(self):
     if self.results is None:
         try:
             ip = socket.gethostbyname(self.parseResults.hostname)
             net = Net(ip)
             obj = IPASN(net)
             self.results = obj.lookup()
             registry = self.results['asn_registry']
             return registry
         except:
             return 0
     else:
         registry = self.results['asn_registry']
         return registry
Ejemplo n.º 22
0
 def addressLocation(self):
     if self.results is None:
         try:
             ip = socket.gethostbyname(self.parseResults.hostname)
             net = Net(ip)
             obj = IPASN(net)
             self.results = obj.lookup()
             country = self.results['asn_country_code']
             return country
         except:
             return 0
     else:
         country = self.results['asn_country_code']
         return country
Ejemplo n.º 23
0
 def GetASN(self, IPaddress):
     '''Retrieve AS Number of an IP address'''
     try:
         if IPaddress:
             net = Net(IPaddress)
             obj = IPASN(net)
             res = obj.lookup()
             IPasn = json.dumps(res["asn"])
         else:
             IPasn = None
         return IPasn
     except:
         err = sys.exc_info()
         print("[!!!] Problem with NetInfo Class: " + str(err))
Ejemplo n.º 24
0
    def lookup(self, ipaddr):

        val = self._conn.get(ipaddr)
        if val:
            return json.loads(val)

        try:
            net = Net(ipaddr)
            obj = IPASN(net)
            result = obj.lookup()
        except Exception as e:
            result = {"asn":"private"}
        self._conn.setnx(ipaddr, json.dumps(result))
        return result
Ejemplo n.º 25
0
    def test__get_nets_arin(self):

        net = Net('74.125.225.229')
        obj = Whois(net)

        # No exception raised, but should provide code coverage for multiple
        # network scenarios and CIDR invalid IP ValueError.
        multi_net_response = (
            '\n#\n\nNetRange:       74.125.0.0 - 74.125.255.255'
            '\nCIDR:           74.125.0.0/16\nNetName:        TEST'
            '\nCIDR:           74.125.1.256/24\nNetName:        TEST2'
            '\nNetRange:       74.125.1.0 - 74.125.1.0'
            '\n')
        obj._get_nets_arin(multi_net_response)
Ejemplo n.º 26
0
    def test_get_contact(self):

        net = Net('115.1.2.3')
        obj = NIRWhois(net)

        contact_response = ('Name               : IP Manager'
                            'Phone              : +82-2-500-6630'
                            'E-Mail             : [email protected]')

        # No exception raised.
        obj.get_contact(response=contact_response,
                        handle=None,
                        nir='krnic',
                        dt_format=NIR_WHOIS['krnic']['dt_format'])
Ejemplo n.º 27
0
def myfunc(self):
    import pandas as pd
    import csv
    import sys
    import numpy as np
    from csv import DictReader
    from datetime import datetime
    import ipaddress
    from aslookup import get_as_data
    import pyasn
    from ipwhois import IPWhois
    import multiprocessing as mp
    from joblib import Parallel, delayed
    from tqdm import tqdm
    import ipinfo
    from ipwhois.net import Net
    from ipwhois.asn import IPASN
    with open(Output, "a", newline='') as out:
        writer = csv.writer(out)
        if self[3] in dict_from_csv.keys():
            #pos=np.where(FamousDNS["ip"]==self[3])
            #as_pub=FamousDNS.iloc[pos[0][0],0]
            ASN_dest = dict_from_csv[self[3]]
            Type = 'Public'
            #writer.writerow((self['prb_id'],self['timestamp'],self['resultset.result.rt'],self['dst_addr'],self['country_code'],self['asn_v4'],ASN_dest,Type))

        elif (ipaddress.ip_address(self[3]).is_private):
            ASN_dest = self[6]
            Type = 'Private'
            #writer.writerow((self['prb_id'],self['timestamp'],self['resultset.result.rt'],self['dst_addr'],self['country_code'],self['asn_v4'],ASN_dest,Type))

        else:
            try:
                net = Net(self[3])
                obj = IPASN(net)
                results = obj.lookup(retry_count=0, asn_methods=['whois'])
                as_unkn = results['asn']
                ASN_dest = as_unkn
                #self['ASN_dest']= as_unkn
                Type = 'UnknownPublic'
                #print(self['Type'])
                #writer.writerow((self['prb_id'],self['timestamp'],self['resultset.result.rt'],self['dst_addr'],self['country_code'],self['asn_v4'],self['ASN_dest'],self['Type']))

            except:
                asnn = float(self[6])
                ASN_dest = asnn
                Type = 'Private'
        writer.writerow((self[0], self[1], self[2], self[3], self[5], self[6],
                         ASN_dest, Type))
        out.close()
Ejemplo n.º 28
0
    def test__parse_fields_http(self):

        data = {'nets': {'net': {'orgRef': {'@handle': 'APNIC'}}}}
        net = Net('1.2.3.4')
        ipasn = IPASN(net)
        try:
            self.assertIsInstance(ipasn._parse_fields_http(response=data),
                                  dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data['nets']['net']['orgRef']['@handle'] = 'RIPE'
        try:
            self.assertIsInstance(ipasn._parse_fields_http(response=data),
                                  dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data['nets']['net']['orgRef']['@handle'] = 'DNIC'
        try:
            self.assertIsInstance(ipasn._parse_fields_http(response=data),
                                  dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data['nets']['net']['orgRef']['@handle'] = 'INVALID'
        try:
            self.assertRaises(ASNRegistryError,
                              ipasn._parse_fields_http,
                              response=data)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data = ''
        try:
            self.assertIsInstance(ipasn._parse_fields_http(response=data),
                                  dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))
Ejemplo n.º 29
0
def get_cidr(ip, asn):
    try:
        x = []

        cidr = ASNOrigin(Net(ip)).lookup(asn=str(asn),
                                         retry_count=10,
                                         asn_methods=['whois'])

        if cidr and len(cidr['nets']) > 0:
            for c in cidr['nets']:
                x.append(c['cidr'])

        return x
    except ASNOriginLookupError:
        pass
Ejemplo n.º 30
0
    def test__TestIPASNLookup(self):

        net = Net('74.125.225.229')
        ipasn = IPASN(net)

        try:
            self.assertIsInstance(ipasn.lookup(inc_raw=True), dict)
        except (HTTPLookupError, ASNRegistryError):
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        net = Net(address='74.125.225.229',
                  timeout=0,
                  allow_permutations=False)
        ipasn = IPASN(net)
        self.assertRaises(ASNRegistryError, ipasn.lookup)

        net = Net(address='74.125.225.229', timeout=0, allow_permutations=True)
        ipasn = IPASN(net)
        self.assertRaises(HTTPLookupError, ipasn.lookup,
                          **dict(asn_alts=['http']))
Ejemplo n.º 31
0
    def test__TestASNOriginLookup(self):

        data_dir = path.abspath(path.join(path.dirname(__file__), '..'))

        with io.open(str(data_dir) + '/asn.json', 'r') as \
                data_file:
            data = json.load(data_file)

        # IP doesn't matter here
        net = Net('74.125.225.229')

        for key, val in data.items():

            log.debug('Testing: {0} - {1}'.format(key, val['asn']))

            obj = ASNOrigin(net)
            try:

                self.assertIsInstance(obj.lookup(asn=val['asn']), dict)

            except WhoisLookupError:

                pass

            except AssertionError as e:

                raise e

            except Exception as e:

                self.fail('Unexpected exception raised: {0}'.format(e))

        net = Net(address='74.125.225.229', timeout=0, allow_permutations=True)
        asnorigin = ASNOrigin(net)
        self.assertRaises(HTTPLookupError, asnorigin.lookup,
                          **dict(asn='15169', asn_alts=['http']))
Ejemplo n.º 32
0
    def test_parse_fields_dns(self):

        data = '"15169 | 74.125.225.0/24 | US | arin | 2007-03-13"'
        net = Net('74.125.225.229')
        ipasn = IPASN(net)
        try:
            self.assertIsInstance(ipasn.parse_fields_dns(data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data = '"15169 | 74.125.225.0/24 | US | random | 2007-03-13"'
        self.assertRaises(ASNRegistryError, ipasn.parse_fields_dns, data)

        data = ''
        self.assertRaises(ASNParseError, ipasn.parse_fields_dns, data)
Ejemplo n.º 33
0
 def dateRegistered(self):
     if self.results is None:
         try:
             ip = socket.gethostbyname(self.parseResults.hostname)
             net = Net(ip)
             obj = IPASN(net)
             self.results = obj.lookup()
             today = datetime.today()
             date_registered = datetime.strptime(self.results['asn_date'],
                                                 '%Y-%m-%d')
             return (today - date_registered).days
         except:
             return 0
     else:
         today = datetime.today()
         date_registered = datetime.strptime(self.results['asn_date'],
                                             '%Y-%m-%d')
         return (today - date_registered).days
Ejemplo n.º 34
0
    def test__get_nets_krnic(self):

        net = Net('115.1.2.3')
        obj = NIRWhois(net)

        # No exception raised, but should provide code coverage for multiple
        # network scenarios and CIDR invalid IP ValueError.
        multi_net_response = (
            'IPv4 Address       : 115.0.0.0 - 115.23.255.255 (/12+/13)'
            'IPv4 Address       : 115.1.2.0 - 115.1.2.63 (/26)')
        obj.get_nets_krnic(multi_net_response)

        # ip_network ValueError
        self.assertFalse(
            obj.get_nets_krnic('IPv4 Address       : asd - asd (/12+/13)'))

        # Expected IP range regex not found, but some value found
        self.assertFalse(obj.get_nets_krnic('IPv4 Address       : asd'))
Ejemplo n.º 35
0
    def test_parse_fields_whois(self):

        data = ('15169   | 74.125.225.229   | 74.125.225.0/24     | US | arin'
                '     | 2007-03-13 | GOOGLE - Google Inc., US')
        net = Net('74.125.225.229')
        ipasn = IPASN(net)
        try:
            self.assertIsInstance(ipasn.parse_fields_whois(data), dict)
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        data = ('15169   | 74.125.225.229   | 74.125.225.0/24     | US | rdm'
                '     | 2007-03-13 | GOOGLE - Google Inc., US')
        self.assertRaises(ASNRegistryError, ipasn.parse_fields_whois, data)

        data = '15169   | 74.125.225.229   | 74.125.225.0/24     | US'
        self.assertRaises(ASNParseError, ipasn.parse_fields_whois, data)
Ejemplo n.º 36
0
    def crawling(self):
        ip_list = self._get_ip_list()

        ip_result = []
        for ip in ip_list:
            if ip:
                net = Net(ip)
                obj = IPASN(net)
                result = {'ip': ip}
                result.update(obj.lookup())
                result['asn_date'] = datetime.strptime(result['asn_date'],
                                                       '%Y-%m-%d')
                ip_result.append(result)

                if len(ip_result) % 100 == 0:
                    self._output_database(ip_result)
                    ip_result = []

        self._output_database(ip_result)
Ejemplo n.º 37
0
    def test_get_http_raw(self):
        from ipwhois.nir import NIR_WHOIS

        # GET
        result = Net('133.1.2.5')
        try:
            self.assertIsInstance(
                result.get_http_raw(
                    NIR_WHOIS['jpnic']['url'].format('133.1.2.5')), str)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        # POST
        result = Net('115.1.2.3')
        try:
            self.assertIsInstance(
                result.get_http_raw(
                    url=NIR_WHOIS['krnic']['url'].format('115.1.2.3'),
                    request_type=NIR_WHOIS['krnic']['request_type'],
                    form_data={
                        NIR_WHOIS['krnic']['form_data_ip_field']: '115.1.2.3'
                    }), str)
        except HTTPLookupError:
            pass
        except AssertionError as e:
            raise e
        except Exception as e:
            self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(HTTPLookupError, result.get_http_raw,
                          **dict(url='http://255.255.255.255', retry_count=1))

        result = Net(address='133.1.2.5', timeout=0)
        url = NIR_WHOIS['jpnic']['url'].format('133.1.2.5')
        self.assertRaises(HTTPLookupError, result.get_http_raw,
                          **dict(url=url, retry_count=0))
Ejemplo n.º 38
0
    def test_lookup(self):

        data_dir = path.dirname(__file__)

        with io.open(str(data_dir) + '/jpnic.json', 'r') as data_jpnic:
            data = json.load(data_jpnic)

        with io.open(str(data_dir) + '/krnic.json', 'r') as data_krnic:
            data.update(json.load(data_krnic))

        for key, val in data.items():

            log.debug('Testing: {0}'.format(key))
            net = Net(key)
            obj = NIRWhois(net)

            self.assertRaises(
                KeyError, obj.lookup,
                **dict(nir=val['nir'], response=None, is_offline=True))

            try:

                self.assertIsInstance(
                    obj.lookup(nir=val['nir'],
                               response=val['response'],
                               is_offline=True,
                               inc_raw=True), dict)

                self.assertIsInstance(
                    obj.lookup(nir=val['nir'], response=val['response']), dict)

            except AssertionError as e:

                raise e

            except Exception as e:

                self.fail('Unexpected exception raised: {0}'.format(e))

        self.assertRaises(NetError, NIRWhois, 'a')
        self.assertRaises(KeyError, obj.lookup)
        self.assertRaises(KeyError, obj.lookup, **dict(nir='a'))
Ejemplo n.º 39
0
def run(hostname, list_of_NS, ipv6):
    listASN = []

    try:
        for x in list_of_NS:
            ip_address = helpers.getTheIPofAServer(x, ipv6,
                                                   DESCRIPTION())["result"]
            if isinstance(
                    helpers.getTheIPofAServer(x, ipv6,
                                              DESCRIPTION())["result"], bool):
                return helpers.getTheIPofAServer(x, ipv6, DESCRIPTION())
            # Getting IPs of nameservers
            net = Net(ip_address)
            obj = IPASN(net)
            # Getting dictionary with AS info for specific IP
            results = obj.lookup()
            # Extracts only ASN from dictionary and adds them to a list
            listASN.append(results.get('asn'))
    except Exception as err:
        return {
            "description": DESCRIPTION(),
            "result": False,
            "details": str(err) + f": could not resolve IP of nameserver {x}"
        }

    # Checks if nameservers ar located in at least 2 different Autonomous Systems
    if len(set(listASN)) < 2:
        return {
            "description": DESCRIPTION(),
            "result": False,
            "details":
            "All nameservers are located in the same Autonomous System"
        }
    else:
        return {
            "description":
            DESCRIPTION(),
            "result":
            True,
            "details":
            f"Nameserver are located at {len(set(listASN))} different Autonumous Systems"
        }
Ejemplo n.º 40
0
    def test_parse_fields(self):

        net = Net('74.125.225.229')
        obj = ASNOrigin(net)

        # No exception raised, but should provide code coverage for if regex
        # groups are messed up.
        tmp_dict = ASN_ORIGIN_WHOIS['radb']['fields']
        tmp_dict['route'] = r'(route):[^\S\n]+(?P<val1>.+?)\n'
        obj.parse_fields(
            response="\nroute:        66.249.64.0/20\n",
            fields_dict=tmp_dict
        )

        obj.parse_fields(
            response="\nchanged:        [email protected] 20110301\n",
            fields_dict=ASN_ORIGIN_WHOIS['radb']['fields']
        )

        multi_net_response = (
            '\n\nroute:      66.249.64.0/20'
            '\ndescr:      Google'
            '\norigin:     AS15169'
            '\nnotify:     [email protected]'
            '\nmnt-by:     MAINT-AS15169'
            '\nchanged:    [email protected] 20110301'
            '\nsource:     RADB'
            '\n\nroute:      66.249.80.0/20'
            '\ndescr:      Google'
            '\norigin:     AS15169'
            '\nnotify:     [email protected]'
            '\nmnt-by:     MAINT-AS15169'
            '\nchanged:    [email protected] 20110301'
            '\nsource:     RADB'
            '\n\n'
        )
        obj.parse_fields(
            response=multi_net_response,
            fields_dict=ASN_ORIGIN_WHOIS['radb']['fields']
        )
Ejemplo n.º 41
0
    def test_parse_fields(self):

        net = Net('133.1.2.5')
        obj = NIRWhois(net)

        # No exception raised, but should provide code coverage for if regex
        # groups are messed up.
        tmp_dict = NIR_WHOIS['jpnic']['fields']
        tmp_dict['name'] = r'(NetName):[^\S\n]+(?P<val1>.+?)\n'
        obj.parse_fields(response='\nNetName:        TEST\n',
                         fields_dict=tmp_dict,
                         dt_format=NIR_WHOIS['jpnic']['dt_format'])

        obj.parse_fields(response='\nUpdated:        2012-02-24\n',
                         fields_dict=NIR_WHOIS['jpnic']['fields'],
                         dt_format=NIR_WHOIS['jpnic']['dt_format'])

        log.debug('Testing field parse error. This should be followed by a '
                  'debug log.')
        obj.parse_fields(response='\nUpdated:        2012-02-244\n',
                         fields_dict=NIR_WHOIS['jpnic']['fields'],
                         dt_format=NIR_WHOIS['jpnic']['dt_format'])