HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
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')