Пример #1
0
def dns_cache_install():
    try:
        from dns_cache.resolver import ExceptionCachingResolver
        from dns import resolver as dnspython_resolver_module
        if not dnspython_resolver_module.default_resolver:
            dnspython_resolver_module.default_resolver = ExceptionCachingResolver(
            )
        del dnspython_resolver_module
    except ImportError:
        pass

    try:
        from dns.resolver import LRUCache, Resolver, override_system_resolver, _resolver, default_resolver
    except ImportError:
        return

    if default_resolver:
        if not default_resolver.cache:
            default_resolver.cache = LRUCache()
        resolver = default_resolver
    elif _resolver and _resolver.cache:
        resolver = _resolver
    else:
        resolver = Resolver()
        resolver.cache = LRUCache()
    override_system_resolver(resolver)
Пример #2
0
def get_test_resolver(cls=Resolver, nameserver=None, **kwargs):
    resolver = cls(configure=False, **kwargs)
    try:
        if sys.platform == "win32":
            resolver.read_registry()
        else:
            resolver.read_resolv_conf("/etc/resolv.conf")
    except Exception:
        pass

    if not nameserver:
        if NAMESERVER:
            nameserver = NAMESERVER
        else:
            nameserver = DEFAULT_NAMESERVER

    resolver.nameservers = [nameserver]

    if PORT:
        resolver.nameserver_ports = {nameserver: PORT}

    override_system_resolver(resolver)

    assert socket.getaddrinfo is _getaddrinfo

    return resolver
Пример #3
0
def dns_cache_install():
    try:
        from dns.resolver import LRUCache, Resolver, override_system_resolver, _resolver, default_resolver
    except ImportError:
        return

    if default_resolver and default_resolver.cache:
        resolver = default_resolver
    elif _resolver and _resolver.cache:
        resolver = _resolver
    else:
        resolver = Resolver()
        resolver.cache = LRUCache()
    override_system_resolver(resolver)
Пример #4
0
def nyapass_run_instances(config, *instances):
    detect_nt()
    setup_signal()
    if config.use_custom_dns_resolver:
        try:
            from dns.resolver import (
                Cache, get_default_resolver, override_system_resolver,
            )
        except ImportError:
            log.warning(
                "dnspython3 is not installed, "
                "can't switch to custom resolver"
            )
        else:
            resolver = get_default_resolver()
            resolver.cache = Cache()
            if config.custom_nameservers:
                resolver.nameservers = list(config.custom_nameservers)

            override_system_resolver(resolver)
            import socket
            old_getaddrinfo = socket.getaddrinfo

            def fixed_gai(
                host, port, family=0, type=0, proto=0, flags=0, **kwargs
            ):
                # Workaround for different parameter name in dnspython
                # (issue 123)
                return old_getaddrinfo(
                    host, port, family, type, proto, flags, **kwargs
                )

            socket.getaddrinfo = fixed_gai

    loop = asyncio.get_event_loop()
    if config.threadpool_workers:
        from concurrent.futures import ThreadPoolExecutor
        loop.set_default_executor(ThreadPoolExecutor(
            max_workers=config.threadpool_workers,
        ))

    loop.run_until_complete(asyncio.gather(
        *[x.init() for x in instances]
    ))

    def _cleanup(disable_pending_task_warnings=False):
        # Close the server
        loop.run_until_complete(asyncio.gather(
            *[x.shutdown() for x in instances]
        ))
        loop.stop()
        if disable_pending_task_warnings:
            [t.result() for t in Task.all_tasks()]

        loop.close()

    try:
        loop.run_forever()
    except SystemExit:
        try:
            _cleanup(True)
        except:
            pass

        raise
    except KeyboardInterrupt:
        pass

    _cleanup()
Пример #5
0
cur_time = datetime.now().strftime("%H-%M")
dns_servers = ["8.8.8.8", "1.1.1.1"]
report_filename = "reports/report_" + cur_date + "_" + cur_time + ".csv"


with open(filename, 'r') as records:
    # prep csv stuff
    with open(report_filename, 'w') as report:
        csvwriter = csv.writer(report)
        fields = ['Record', 'Assumed Address',
                  'Response Address', 'Type', 'DNS Server', 'Result']
        csvwriter.writerow(fields)

        for record in csv.reader(records):
            for dns_server in dns_servers:
                resolver.override_system_resolver(resolver=dns_server)
            # print(record)
                try:
                    answers = resolver.resolve(
                        qname=record[0], rdtype=record[2], search=dns_server)
                    for rdata in answers:
                        # Handle A Records
                        if (record[2] == 'A'):
                            if (record[1] == rdata.address):
                                print('Response from', dns_server, 'Host', record[0], 'Address',
                                      rdata.address, 'matches!')
                                row = [record[0], record[1], rdata.address,
                                       record[2], dns_server, 'Record Matches']
                                csvwriter.writerow(row)
                            else:
                                print('Response from', dns_server, 'Host', record[0], 'Address',
Пример #6
0
                    help="file containing list of DNS resolver to test")

args = parser.parse_args()
#print(args)

dnstypequery = ''
if (args.type):
    dnstypequery = args.type

listresolver = ['8.8.8.8', '1.1.1.1']
# on change de resolver dns : https://dnspython.readthedocs.io/en/stable/resolver-override.html?highlight=resolver
if (args.file_resolver_dns):
    f = open(args.file_resolver_dns)
    listresolver = f.read().strip('\n')
    f.close()

sortie = set()
for i in listresolver:
    dnsresolver.override_system_resolver(i)

    response = dnsresolver.query(args.DOMAIN, dnstypequery)

    for rdata in response:
        sortie.add(rdata)
        #print(type(rdata))
        #print(str(rdata))
        pass

print("Liste des éléments sortis par les resolvers : ")
print('\n'.join([str(elem) for elem in sortie]))