File: D:/bin/scripts/python3.4/utils/dnstest3.py
# DNS test for spam blacklists
# (SS,02/04/2017)
# (SS,24/05/2019) added time taken
# (SS,29/05/2019) new version which does full specified host
import dns.resolver
import sys
import datetime
import time
def reverse(ip):
if len(ip) <= 1:
return ip
l = ip.split('.')
return '.'.join(l[::-1])
def lookup(is_ip, ip_address, host):
if is_ip:
full_host = reverse(ip_address) + '.' + host
else:
full_host = ip_address + '.' + host
print(full_host)
try:
answers = dns.resolver.query(full_host, 'A')
for rdata in answers:
print(rdata.address)
except:
e = sys.exc_info()[0]
e2 = sys.exc_info()[1]
print( "Error: %s" % e)
print( "Error: %s" % e2)
print()
# (SS,29/5/19) does full specified host
def lookup_full(full_host):
global total_count
global nxdomain_count
global fail_count
total_count += 1
print(full_host)
try:
answers = dns.resolver.query(full_host, 'A')
for rdata in answers:
print(rdata.address)
except:
e = sys.exc_info()[0]
e2 = sys.exc_info()[1]
print( "Error: %s" % e)
print( "Error: %s" % e2)
if 'dns.resolver.NXDOMAIN' in str(e):
nxdomain_count += 1
else:
fail_count += 1
print()
# one second delay
time.sleep(1)
def blacklist_ip_check(ip):
lookup(True, ip, 'zen.spamhaus.org')
lookup(True, ip, 'bl.spamcop.net')
lookup(True, ip, 'b.barracudacentral.org')
lookup(True, ip, 'ubl.unsubscore.com')
lookup(True, ip, 'dnsbl.sorbs.net')
lookup(True, ip, 'truncate.gbudb.net')
lookup(True, ip, 'ix.dnsbl.manitu.net')
lookup(True, ip, 'psbl.surriel.com')
def blacklist_url_check(url):
actual_url = url
if url == '':
actual_url = 'test.surbl.org'
lookup(False, actual_url, 'multi.surbl.org')
if url == '':
actual_url = 'dbltest.com'
lookup(False, actual_url, 'dbl.spamhaus.org')
# lookup('178.243.74.251', 'zen.spamhauszzz.org')
# (SS,29/5/19)
def blacklist_check():
lookup_full('206.53.249.45.zen.spamhaus.org')
lookup_full('14.4.244.170.zen.spamhaus.org')
lookup_full('78.136.74.109.zen.spamhaus.org')
lookup_full('70.188.237.114.zen.spamhaus.org')
lookup_full('70.188.237.114.zen.spamhaus.org')
lookup_full('29.109.237.114.zen.spamhaus.org')
lookup_full('92.139.199.5.zen.spamhaus.org')
lookup_full('10.211.222.185.zen.spamhaus.org')
lookup_full('181.38.89.167.zen.spamhaus.org')
lookup_full('198.124.200.198.zen.spamhaus.org')
# (SS,29/5/19)
def blacklist_check2():
lookup_full('33.76.45.181.zen.spamhaus.org')
lookup_full('183.72.127.103.zen.spamhaus.org')
lookup_full('65.99.19.83.zen.spamhaus.org')
lookup_full('220.37.245.168.zen.spamhaus.org')
lookup_full('19.209.170.185.zen.spamhaus.org')
lookup_full('217.171.140.207.zen.spamhaus.org')
lookup_full('245.241.177.94.zen.spamhaus.org')
lookup_full('156.208.215.112.zen.spamhaus.org')
lookup_full('46.78.132.161.zen.spamhaus.org')
lookup_full('105.186.235.101.zen.spamhaus.org')
# (SS,29/5/19)
def blacklist_check3():
lookup_full('178.41.245.168.zen.spamhaus.org')
lookup_full('212.126.77.51.zen.spamhaus.org')
lookup_full('138.107.104.5.zen.spamhaus.org')
lookup_full('49.124.0.170.zen.spamhaus.org')
lookup_full('18.247.175.185.zen.spamhaus.org')
lookup_full('42.118.51.202.zen.spamhaus.org')
lookup_full('245.254.12.85.zen.spamhaus.org')
lookup_full('99.90.84.112.zen.spamhaus.org')
lookup_full('118.60.117.85.zen.spamhaus.org')
lookup_full('122.252.243.37.zen.spamhaus.org')
start = datetime.datetime.now()
# (SS,29/5/19)
total_count = 0
nxdomain_count = 0
fail_count = 0
# if parameter provided then do the chosen set
if len(sys.argv) == 2:
setno = sys.argv[1]
if setno == '2':
blacklist_check2()
elif setno == '3':
blacklist_check3()
else:
blacklist_check()
else:
# (29/5/19) new check that does a sample with IPs specified in reverse
# all 3 samples
blacklist_check()
blacklist_check2()
blacklist_check3()
#blacklist_ip_check(ip_address)
#blacklist_url_check('')
finish = datetime.datetime.now()
print('time taken: ', round((finish - start).total_seconds(), 3), 'secs')
print('total count: ', total_count)
print('nxdomain count: ', nxdomain_count)
print('fail count: ', fail_count)
#blacklist_url_check('twitter.com')
#blacklist_ip_check('178.243.74.251')
#blacklist_ip_check('8.8.8.8')