diff options
author | 2016-03-21 16:03:47 +0200 | |
---|---|---|
committer | 2016-03-21 16:03:47 +0200 | |
commit | b89efa188810bf95a9d245e69e2961b5721c3b0f (patch) | |
tree | 454273ac6c4ae972ebb8a2c86b893296970b4fa9 /scripts/external_libs/scapy-python3-0.18/scapy/as_resolvers.py | |
parent | f72c6df9d2e9998ae1f3529d729ab7930b35785a (diff) |
scapy python 2/3
Diffstat (limited to 'scripts/external_libs/scapy-python3-0.18/scapy/as_resolvers.py')
-rw-r--r-- | scripts/external_libs/scapy-python3-0.18/scapy/as_resolvers.py | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/scripts/external_libs/scapy-python3-0.18/scapy/as_resolvers.py b/scripts/external_libs/scapy-python3-0.18/scapy/as_resolvers.py deleted file mode 100644 index f04322b8..00000000 --- a/scripts/external_libs/scapy-python3-0.18/scapy/as_resolvers.py +++ /dev/null @@ -1,115 +0,0 @@ -## This file is part of Scapy -## See http://www.secdev.org/projects/scapy for more informations -## Copyright (C) Philippe Biondi <phil@secdev.org> -## This program is published under a GPLv2 license - -""" -Resolve Autonomous Systems (AS). -""" - - -import socket -from .config import conf - -class AS_resolver: - server = None - options = "-k" - def __init__(self, server=None, port=43, options=None): - if server is not None: - self.server = server - self.port = port - if options is not None: - self.options = options - - def _start(self): - self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.s.connect((self.server,self.port)) - if self.options: - self.s.send(self.options+b"\n") - self.s.recv(8192) - def _stop(self): - self.s.close() - - def _parse_whois(self, txt): - asn,desc = None,b"" - for l in txt.splitlines(): - if not asn and l.startswith(b"origin:"): - asn = l[7:].strip().decode('utf-8') - if l.startswith(b"descr:"): - if desc: - desc += br"\n" - desc += l[6:].strip() - if asn is not None and desc.strip(): - desc = desc.strip().decode('utf-8') - break - return asn, desc - - def _resolve_one(self, ip): - self.s.send(b"".join([ip.encode('ascii')])+b"\n") - x = b"" - while not (b"%" in x or b"source" in x): - x += self.s.recv(8192) - asn, desc = self._parse_whois(x) - return ip,asn,desc - def resolve(self, *ips): - self._start() - ret = [] - for ip in ips: - ip,asn,desc = self._resolve_one(ip) - if asn is not None: - ret.append((ip,asn,desc)) - self._stop() - return ret - -class AS_resolver_riswhois(AS_resolver): - server = "riswhois.ripe.net" - options = b"-k -M -1" - - -class AS_resolver_radb(AS_resolver): - server = "whois.ra.net" - options = b"-k -M" - - -class AS_resolver_cymru(AS_resolver): - server = "whois.cymru.com" - options = None - def resolve(self, *ips): - ASNlist = [] - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.connect((self.server,self.port)) - s.send(b"begin\r\n"+b"\r\n".join([ i.encode('ascii') for i in ips])+b"\r\nend\r\n") - r = b"" - while 1: - l = s.recv(8192) - if l == b"": - break - r += l - s.close() - for l in r.splitlines()[1:]: - if b"|" not in l: - continue - asn,ip,desc = [ i.decode('ascii') for i in map(bytes.strip, l.split(b"|")) ] - if asn == "NA": - continue - asn = int(asn) - ASNlist.append((ip,asn,desc)) - return ASNlist - -class AS_resolver_multi(AS_resolver): - resolvers_list = ( AS_resolver_cymru(),AS_resolver_riswhois(),AS_resolver_radb() ) - def __init__(self, *reslist): - if reslist: - self.resolvers_list = reslist - def resolve(self, *ips): - todo = ips - ret = [] - for ASres in self.resolvers_list: - res = ASres.resolve(*todo) - resolved = [ ip for ip,asn,desc in res ] - todo = [ ip for ip in todo if ip not in resolved ] - ret += res - return ret - - -conf.AS_resolver = AS_resolver_multi() |