Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@bortzmeyer
Last active December 18, 2017 10:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bortzmeyer/0ac5e8f3bd5e88d0608bcee7a04973d3 to your computer and use it in GitHub Desktop.
Save bortzmeyer/0ac5e8f3bd5e88d0608bcee7a04973d3 to your computer and use it in GitHub Desktop.
Behaviour of Alexa Top 1000 name servers when queried about a domain for which they are not authoritative

SERVFAIL and REFUSED are regarded as acceptable rcodes. Timeout or another rcode is not. (NOERROR sometimes mean upward referral which is bad)

We test all name servers of a domain, but only with their IPv4 address(es).

SUSPICIOUS: live.com at ns4.msft.net./208.76.45.53: return code is 0
SUSPICIOUS: live.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: live.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: live.com at ns3.msft.net./193.221.113.53: return code is 0
TIMEOUT: sina.com.cn at ns1.sina.com.cn./202.106.184.166
TIMEOUT: weibo.com at ns1.sina.com.cn./202.106.184.166
TIMEOUT: 360.cn at dns8.360safe.com./60.28.115.6
TIMEOUT: 360.cn at dns9.360safe.com./104.192.109.6
TIMEOUT: 360.cn at dns2.360safe.com./106.120.161.6
TIMEOUT: 360.cn at dns1.360safe.com./111.206.53.6
TIMEOUT: 360.cn at dns3.360safe.com./180.153.228.6
TIMEOUT: 360.cn at dns7.360safe.com./180.97.61.6
SUSPICIOUS: microsoft.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: microsoft.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: microsoft.com at ns3.msft.net./193.221.113.53: return code is 0
SUSPICIOUS: microsoft.com at ns4.msft.net./208.76.45.53: return code is 0
TIMEOUT: ok.ru at ns3.ok.ru./217.20.155.93
TIMEOUT: ok.ru at ns2.ok.ru./217.20.156.50
TIMEOUT: ok.ru at ns1.ok.ru./5.61.23.9
SUSPICIOUS: office.com at ns3.msft.net./193.221.113.53: return code is 0
SUSPICIOUS: office.com at ns4.msft.net./208.76.45.53: return code is 0
SUSPICIOUS: office.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: office.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: msn.com at ns4.msft.net./208.76.45.53: return code is 0
SUSPICIOUS: msn.com at ns3.msft.net./193.221.113.53: return code is 0
SUSPICIOUS: msn.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: msn.com at ns2.msft.net./208.84.2.53: return code is 0
TIMEOUT: csdn.net at ns3.dnsv3.com./52.221.20.79
TIMEOUT: csdn.net at ns4.dnsv3.com./125.39.213.167
SUSPICIOUS: microsoftonline.com at ns3.msft.net./193.221.113.53: return code is 0
SUSPICIOUS: microsoftonline.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: microsoftonline.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: microsoftonline.com at ns4.msft.net./208.76.45.53: return code is 0
TIMEOUT: adobe.com at adobe-dns-04.adobe.com./192.147.130.168
TIMEOUT: so.com at dns8.360safe.com./60.28.115.6
TIMEOUT: so.com at dns9.360safe.com./104.192.109.6
TIMEOUT: so.com at dns2.360safe.com./106.120.161.6
TIMEOUT: so.com at dns1.360safe.com./111.206.53.6
TIMEOUT: so.com at dns3.360safe.com./180.153.228.6
TIMEOUT: so.com at dns7.360safe.com./180.97.61.6
TIMEOUT: tianya.cn at ns2.tianya.cn./221.11.172.10
SUSPICIOUS: tianya.cn at ns3.tianya.cn./124.225.214.10: return code is 0
TIMEOUT: tianya.cn at ns1.tianya.cn./218.77.130.10
TIMEOUT: onlinesbi.com at pdns.satyam.net.in./202.144.63.4
TIMEOUT: onlinesbi.com at sdns.satyam.net.in./202.144.63.12
TIMEOUT: youth.cn at ns4.k618.cn./113.5.80.47
TIMEOUT: youth.cn at ns5.k618.cn./103.254.191.125
TIMEOUT: youth.cn at ns2.k618.cn./60.220.194.228
TIMEOUT: youth.cn at ns3.k618.cn./125.39.1.110
TIMEOUT: youth.cn at ns1.k618.cn./183.131.192.157
TIMEOUT: zhihu.com at ns4.dnsv4.com./61.151.180.50
TIMEOUT: zhihu.com at ns3.dnsv4.com./61.151.180.49
SUSPICIOUS: ettoday.net at ns2.ettoday.net./219.85.79.135: return code is 0
SUSPICIOUS: ettoday.net at ns1.ettoday.net./219.85.79.134: return code is 0
TIMEOUT: douyu.com at ns4.dnsv4.com./61.151.180.50
TIMEOUT: douyu.com at ns3.dnsv4.com./61.151.180.49
TIMEOUT: providr.com at ns-2024.awsdns-61.co.uk./205.251.199.232
TIMEOUT: babytree.com at ns1.dnsv5.com./117.135.170.109
TIMEOUT: babytree.com at ns2.dnsv5.com./117.135.170.109
TIMEOUT: adf.ly at jim.ns.cloudflare.com./173.245.59.125
SUSPICIOUS: w3schools.com at ns1.maximumasp.com./216.128.31.5: return code is 0
SUSPICIOUS: w3schools.com at ns2.maximumasp.com./216.128.31.6: return code is 0
TIMEOUT: mama.cn at ns3.dnsv4.com./61.151.180.49
TIMEOUT: mama.cn at ns4.dnsv4.com./61.151.180.50
SUSPICIOUS: people.com.cn at ns3.people.cn./111.206.137.188: return code is 0
TIMEOUT: 39.net at ns1.39.net./219.238.238.39
SUSPICIOUS: 39.net at ns2.39.net./114.67.48.160: return code is 3
SUSPICIOUS: exdynsrv.com at dns1.cloudns.net./185.136.96.77: return code is 0
SUSPICIOUS: exdynsrv.com at dns2.cloudns.net./185.136.97.77: return code is 0
SUSPICIOUS: exdynsrv.com at dns5.cloudns.net./185.136.98.77: return code is 0
SUSPICIOUS: exdynsrv.com at dns6.cloudns.net./185.136.99.77: return code is 0
TIMEOUT: k618.cn at ns1.k618.cn./183.131.192.157
TIMEOUT: k618.cn at ns3.k618.cn./125.39.1.110
TIMEOUT: k618.cn at ns4.k618.cn./113.5.80.47
TIMEOUT: k618.cn at ns5.k618.cn./103.254.191.125
TIMEOUT: k618.cn at ns2.k618.cn./60.220.194.228
TIMEOUT: huanqiu.com at ns4.dnsv4.com./61.151.180.50
TIMEOUT: huanqiu.com at ns3.dnsv4.com./61.151.180.49
TIMEOUT: eastday.com at NS.eastday.com./202.101.43.8
TIMEOUT: cnblogs.com at ns3.dnsv4.com./61.151.180.49
TIMEOUT: cnblogs.com at ns4.dnsv4.com./61.151.180.50
SUSPICIOUS: exoclick.com at dns1.cloudns.net./185.136.96.77: return code is 0
SUSPICIOUS: exoclick.com at dns2.cloudns.net./185.136.97.77: return code is 0
SUSPICIOUS: exoclick.com at dns5.cloudns.net./185.136.98.77: return code is 0
SUSPICIOUS: exoclick.com at dns6.cloudns.net./185.136.99.77: return code is 0
SUSPICIOUS: exosrv.com at dns1.cloudns.net./185.136.96.77: return code is 0
SUSPICIOUS: exosrv.com at dns5.cloudns.net./185.136.98.77: return code is 0
SUSPICIOUS: exosrv.com at dns2.cloudns.net./185.136.97.77: return code is 0
SUSPICIOUS: exosrv.com at dns6.cloudns.net./185.136.99.77: return code is 0
SUSPICIOUS: sberbank.ru at ns2.sberbank.ru./194.54.14.187: return code is 0
SUSPICIOUS: sberbank.ru at ns1.sberbank.ru./194.54.14.186: return code is 0
TIMEOUT: slickdeals.net at ns7.slickdeals.net./199.182.50.57
TIMEOUT: slickdeals.net at ns8.slickdeals.net./199.182.50.58
SUSPICIOUS: ci123.com at dns2.ci123.com./42.62.12.18: return code is 0
SUSPICIOUS: varzesh3.com at dns6.cloudns.net./185.136.99.77: return code is 0
SUSPICIOUS: varzesh3.com at dns1.cloudns.net./185.136.96.77: return code is 0
SUSPICIOUS: varzesh3.com at dns5.cloudns.net./185.136.98.77: return code is 0
SUSPICIOUS: varzesh3.com at dns2.cloudns.net./185.136.97.77: return code is 0
TIMEOUT: rednet.cn at ns3.dnsv3.com./52.221.20.79
TIMEOUT: rednet.cn at ns4.dnsv3.com./125.39.213.167
TIMEOUT: utorrent.com at ens-07.bittorrent.com./208.72.192.176
SUSPICIOUS: skype.com at ns3.msft.net./193.221.113.53: return code is 0
SUSPICIOUS: skype.com at ns4.msft.net./208.76.45.53: return code is 0
SUSPICIOUS: skype.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: skype.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: fedex.com at kate.fedex.com./199.81.212.13: return code is 3
SUSPICIOUS: fedex.com at grace.fedex.com./199.81.217.100: return code is 3
SUSPICIOUS: fedex.com at land.fedex.com./204.135.12.100: return code is 3
SUSPICIOUS: office365.com at ns3.msft.net./193.221.113.53: return code is 0
SUSPICIOUS: office365.com at ns4.msft.net./208.76.45.53: return code is 0
SUSPICIOUS: office365.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: office365.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: pixabay.com at ns3.inwx.eu./46.165.212.97: return code is 0
SUSPICIOUS: pixabay.com at ns4.inwx.com./95.211.1.145: return code is 0
SUSPICIOUS: pixabay.com at ns5.inwx.net./108.59.8.65: return code is 0
SUSPICIOUS: free.fr at freens2-g20.free.fr./212.27.60.20: return code is 0
SUSPICIOUS: free.fr at freens1-g20.free.fr./212.27.60.19: return code is 0
SUSPICIOUS: uidai.gov.in at ns3.uidai.net.in./103.57.226.133: return code is 0
TIMEOUT: jianshu.com at ns3.dnsv3.com./52.221.20.79
TIMEOUT: jianshu.com at ns4.dnsv3.com./125.39.213.167
TIMEOUT: informationvine.com at dns4.p05.nsone.net./198.51.45.69
SUSPICIOUS: kooora.com at dns017.c.register.com./216.21.235.17: return code is 0
SUSPICIOUS: kooora.com at dns241.a.register.com./216.21.231.241: return code is 0
SUSPICIOUS: kooora.com at dns010.d.register.com./216.21.236.10: return code is 0
SUSPICIOUS: kooora.com at dns010.b.register.com./216.21.232.10: return code is 0
TIMEOUT: mi.com at ns4.dnsv5.com./180.163.19.12
TIMEOUT: mi.com at ns3.dnsv5.com./58.251.86.12
TIMEOUT: icicibank.com at ns1.icicibank.com./172.16.11.252
TIMEOUT: icicibank.com at ns.icicibank.com./172.16.11.251
TIMEOUT: icicibank.com at DNSPRIM.ICICI.com./203.197.18.91
TIMEOUT: icicibank.com at ns3.icicibank.com./172.16.82.101
SUSPICIOUS: baskino.co at pns23.cloudns.net./185.136.98.96: return code is 0
SUSPICIOUS: baskino.co at pns24.cloudns.net./185.136.99.96: return code is 0
SUSPICIOUS: baskino.co at pns22.cloudns.net./185.136.97.96: return code is 0
SUSPICIOUS: baskino.co at pns21.cloudns.net./185.136.96.96: return code is 0
TIMEOUT: suning.com at gns2.zdnscloud.net.cn./1.8.153.1
TIMEOUT: 51sole.com at ns3.dnsv4.com./61.151.180.49
TIMEOUT: 51sole.com at ns4.dnsv4.com./61.151.180.50
TIMEOUT: sahibinden.com at dns01.sahibinden.com./85.111.30.101
TIMEOUT: sahibinden.com at dns02.sahibinden.com./85.111.30.102
TIMEOUT: sahibinden.com at dns03.sahibinden.com./91.220.182.21
TIMEOUT: sahibinden.com at dns04.sahibinden.com./85.111.39.101
TIMEOUT: sahibinden.com at dns05.sahibinden.com./85.111.39.102
SUSPICIOUS: fwbntw.com at ddns2.dditservices.com./5.159.216.3: return code is 0
SUSPICIOUS: fwbntw.com at ddns1.dditservices.com./185.13.90.1: return code is 0
TIMEOUT: billdesk.com at pdns.satyamhosting.net./202.144.63.4
TIMEOUT: billdesk.com at sdns.satyamhosting.net./202.144.63.12
SUSPICIOUS: hurriyet.com.tr at hurdns01.hurriyet.com.tr./212.31.1.1: return code is 0
SUSPICIOUS: hurriyet.com.tr at hurdns02.hurriyet.com.tr./213.243.16.240: return code is 0
TIMEOUT: ebc.net.tw at ns1.ebc.net.tw./220.228.205.189
TIMEOUT: ebc.net.tw at ns2.ebc.net.tw./61.219.52.126
SUSPICIOUS: xda-developers.com at ns1176.dns.dyn.com./208.76.58.176: return code is 0
SUSPICIOUS: xda-developers.com at ns4195.dns.dyn.com./208.76.61.195: return code is 0
SUSPICIOUS: xda-developers.com at ns2190.dns.dyn.com./208.76.59.190: return code is 0
SUSPICIOUS: xda-developers.com at ns3199.dns.dyn.com./208.76.60.199: return code is 0
SUSPICIOUS: gsmarena.com at ns2.tetracom-bg.com./79.124.31.180: return code is 0
SUSPICIOUS: gsmarena.com at ns.tetracom.com./104.236.83.234: return code is 0
SUSPICIOUS: stockstar.com at ns.stockstar.com./202.96.215.188: return code is 3
TIMEOUT: stockstar.com at ns1.stockstar.com./202.96.215.179
TIMEOUT: wiley.com at aus-ib-p-dns-002.wiley.com./10.203.0.53
TIMEOUT: wiley.com at sg-ns01.wiley.com./61.14.139.154
TIMEOUT: wiley.com at bri-ns01.wiley.com./203.46.70.133
TIMEOUT: wiley.com at ns.wiley.co.uk./193.130.68.19
SUSPICIOUS: wiley.com at ns2.wiley.co.uk./193.130.68.21: return code is 3
TIMEOUT: wiley.com at aus-ib-p-dns-001.wiley.com./10.201.0.53
TIMEOUT: wiley.com at car-ib-p-dns-002.wiley.com./10.202.0.53
TIMEOUT: 163.com at ns5.nease.net./121.195.179.18
TIMEOUT: verizonwireless.com at NS-DBLN.verizonwireless.com./162.115.99.17
SUSPICIOUS: beytoote.com at ns44.hannoverit.com./209.62.124.74: return code is 0
SUSPICIOUS: beytoote.com at ns88.hannoverit.com./173.236.52.28: return code is 0
TIMEOUT: ieee.org at ns20qa.ieee.org./10.149.128.206
TIMEOUT: zhanqi.tv at ns3.dnsv5.com./58.251.86.12
TIMEOUT: zhanqi.tv at ns4.dnsv5.com./180.163.19.12
TIMEOUT: adp.com at dns1.adp.com./170.146.170.146
TIMEOUT: adp.com at dns2.adp.com./170.146.146.170
SUSPICIOUS: merriam-webster.com at ns3.eb.com./208.185.238.32: return code is 0
SUSPICIOUS: merriam-webster.com at ns1.eb.com./38.69.47.32: return code is 0
TIMEOUT: chinaz.com at ns1.dnsv5.com./117.135.170.109
TIMEOUT: chinaz.com at ns2.dnsv5.com./117.135.170.109
TIMEOUT: gongchang.com at ns2.dnsv2.com./183.60.57.177
TIMEOUT: gongchang.com at ns1.dnsv2.com./223.166.151.17
TIMEOUT: qingdaonews.com at ns2.dnsv4.com./14.215.150.15
TIMEOUT: qingdaonews.com at ns1.dnsv4.com./183.232.90.141
SUSPICIOUS: yaplakal.com at ns1.netmediadata.com./91.228.152.244: return code is 0
SUSPICIOUS: yaplakal.com at ns2.netmediadata.com./185.26.97.122: return code is 0
SUSPICIOUS: intel.com at ns1.intel.com./192.55.52.33: return code is 0
SUSPICIOUS: intel.com at ns4.intel.com./192.102.198.240: return code is 0
SUSPICIOUS: intel.com at ns2.intel.com./192.198.151.13: return code is 0
SUSPICIOUS: intel.com at ns3.intel.com./192.198.147.13: return code is 0
SUSPICIOUS: banesconline.com at dns1.banesco.com./200.6.27.151: return code is 3
SUSPICIOUS: banesconline.com at dns.banesco.com./200.6.27.132: return code is 3
SUSPICIOUS: tempo.co at dns010.d.register.com./216.21.236.10: return code is 0
SUSPICIOUS: tempo.co at dns181.a.register.com./216.21.231.181: return code is 0
SUSPICIOUS: tempo.co at dns054.c.register.com./216.21.235.54: return code is 0
SUSPICIOUS: tempo.co at dns218.b.register.com./216.21.232.218: return code is 0
TIMEOUT: ea.com at a72-246-0-10.deploy.akamaitechnologies.com./72.246.0.10
TIMEOUT: segmentfault.com at ns4.dnsv3.com./125.39.213.167
TIMEOUT: segmentfault.com at ns3.dnsv3.com./52.221.20.79
SUSPICIOUS: junbi-tracker.com at ns2.iptox.net./85.10.205.81: return code is 0
SUSPICIOUS: junbi-tracker.com at ns3.iptox.net./95.128.200.7: return code is 0
SUSPICIOUS: perfectgirls.net at ns1.perfectgirls.net./104.254.87.91: return code is 0
SUSPICIOUS: perfectgirls.net at ns2.perfectgirls.net./104.254.87.92: return code is 0
SUSPICIOUS: perfectgirls.net at ns3.perfectgirls.net./104.254.87.93: return code is 0
SUSPICIOUS: perfectgirls.net at ns4.perfectgirls.net./104.254.87.94: return code is 0
SUSPICIOUS: myfreecams.com at ns4.metapeer.com./163.237.254.1: return code is 0
TIMEOUT: myfreecams.com at ns1.metapeer.com./207.229.73.100
SUSPICIOUS: myfreecams.com at ns3.metapeer.com./162.249.19.11: return code is 0
SUSPICIOUS: myfreecams.com at ns5.metapeer.com./209.222.68.82: return code is 0
SUSPICIOUS: gov.uk at ns4.ja.net./193.62.157.66: return code is 0
SUSPICIOUS: gov.uk at ns3.ja.net./193.63.106.103: return code is 0
SUSPICIOUS: avast.com at pns.avast.com./91.213.143.1: return code is 0
SUSPICIOUS: xbox.com at ns4.msft.net./208.76.45.53: return code is 0
SUSPICIOUS: xbox.com at ns1.msft.net./208.84.0.53: return code is 0
SUSPICIOUS: xbox.com at ns2.msft.net./208.84.2.53: return code is 0
SUSPICIOUS: xbox.com at ns3.msft.net./193.221.113.53: return code is 0
TIMEOUT: epwk.com at f1g1ns2.dnspod.net./61.129.8.159
TIMEOUT: epwk.com at f1g1ns1.dnspod.net./61.151.180.44
TIMEOUT: labanquepostale.fr at ns2.labanquepostale.fr./83.206.67.134
TIMEOUT: trustpilot.com at ns-507.awsdns-63.com./205.251.193.251
TIMEOUT: familydoctor.com.cn at ns2.dnsv5.com./117.135.170.109
TIMEOUT: familydoctor.com.cn at ns1.dnsv5.com./117.135.170.109
TIMEOUT: drtuber.com at ns2.drtuber.com./78.140.187.210
TIMEOUT: jiameng.com at ns4.dnsv4.com./183.60.57.188
TIMEOUT: jiameng.com at ns3.dnsv4.com./183.60.57.179
SUSPICIOUS: donga.com at ns0.donga.com./210.115.150.60: return code is 0
TIMEOUT: sapo.pt at ns.sapo.pt./212.55.154.202
TIMEOUT: sapo.pt at ns2.sapo.pt./212.55.154.194
TIMEOUT: sapo.pt at dns01.sapo.pt./213.13.28.116
TIMEOUT: sapo.pt at dns02.sapo.pt./213.13.30.116
TIMEOUT: 17track.net at ns4.dnsv4.com./183.60.57.188
TIMEOUT: 17track.net at ns3.dnsv4.com./183.60.57.179
SUSPICIOUS: clipconverter.cc at ns1.wmn.eu./5.135.203.33: return code is 0
SUSPICIOUS: clipconverter.cc at ns2.wmn.eu./176.31.133.187: return code is 0
TIMEOUT: 58.com at ns4.dnsv5.com./180.163.19.12
TIMEOUT: 58.com at ns3.dnsv5.com./58.251.86.12
@bortzmeyer
Copy link
Author

There are probably a few false positives, when it timeouted for a network issue.

@bortzmeyer
Copy link
Author

Example with dig:

% dig @ns3.dnsv4.com A jiameng.com

; <<>> DiG 9.10.3-P4-Debian <<>> @ns3.dnsv4.com A jiameng.com
; (9 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20914
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;jiameng.com.		IN A

;; ANSWER SECTION:
jiameng.com.		600 IN A 117.78.42.66

;; AUTHORITY SECTION:
jiameng.com.		86400 IN NS ns3.dnsv4.com.
jiameng.com.		86400 IN NS ns4.dnsv4.com.

;; Query time: 206 msec
;; SERVER: 183.60.57.179#53(183.60.57.179)
;; WHEN: Mon Dec 18 09:24:27 CET 2017
;; MSG SIZE  rcvd: 110


% dig @ns3.dnsv4.com A foobar.doesnotexist

; <<>> DiG 9.10.3-P4-Debian <<>> @ns3.dnsv4.com A foobar.doesnotexist
; (9 servers found)
;; global options: +cmd
;; connection timed out; no servers could be reached

@bortzmeyer
Copy link
Author

bortzmeyer commented Dec 18, 2017

The source code for the test:

#!/usr/bin/python3

import sys
import dns.resolver
import dns.exception

TIMEOUT = 0.4
NAME=dns.name.from_text('foobar.doesnotexist')
VERBOSE=False

for domain in sys.stdin.readlines():
    domain = domain[:-1] #chomp
    try:
        answers = dns.resolver.query(domain, dns.rdatatype.NS, raise_on_no_answer=False)
        for ns in answers:
            message = dns.message.make_query(NAME, dns.rdatatype.A, use_edns=None)
            try:
                answers2 = dns.resolver.query(str(ns.target), dns.rdatatype.A, raise_on_no_answer=False)
                if len(answers2) > 0:
                    address = answers2[0].address
                    if VERBOSE:
                        print("Testing %s via %s/%s" % (domain, ns, address))
                    try:
                        response = dns.query.udp(message, address, timeout=TIMEOUT)
                        if response.rcode() != dns.rcode.REFUSED and \
                           response.rcode() != dns.rcode.SERVFAIL:
                            print("SUSPICIOUS: %s at %s/%s: return code is %s" % \
                                  (domain, ns, address, response.rcode()))
                    except dns.resolver.NXDOMAIN:
                        print("SUSPICIOUS: %s at %s/%s: return code is NXDOMAIN" % (domain, ns, address))
                    except dns.exception.Timeout:
                        print("TIMEOUT: %s at %s/%s" % (domain, ns, address))
            except (dns.resolver.NoNameservers, dns.resolver.NXDOMAIN, dns.exception.Timeout) as err:
                # Continue, let's ignore this server
                pass
    except dns.resolver.NXDOMAIN:
        print("%s does not exist" % domain)
    except dns.exception.Timeout:
        print("%s does not work (timeout)" % domain)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment