Last Updated on 2. Juni 2016 by Thomas J. Fehr
Ein einfaches Python-Skript zum Abfragen von DNS-Blacklists, welche adressbasiert sind.
Bei adressbasierten Blacklists wird die zu überprüfende IP-Adresse, in umgekehrter Reihenfolge, an die Domain angehängt. Dann wird eine DNS-Abfrage auf einen A-Record gestartet. Wird ein A-Record zurück geliefert, gilt die IP-Adresse als gelistet. Der A-Record wird eine IP vom Typ 127.0.0.x aufweisen.
Wenn man wissen möchte warum eine IP-Adresse in die Liste aufgenommen wurde, kann der TXT-Record abgefragt werden. In diesem Record wird vom Blacklist Betreiber oft der Grund für die Aufnahme hinterlegt.
SHOW_DEBUG_MSG = 0
import string
import sys
import socket
'''
@return: 0 If the ip-address is not blacklisted
@return: 1 If the ip-address is blacklisted
'''
def checkIfBlacklisted( ip, blacklistURL):
if SHOW_DEBUG_MSG: print "Checking %s on %s" %(ip,blacklistURL)
# turn ip "a.b.c.d" into "d.c.b.a.DNS_BLACKLIST_DOMAIN"
iplist = string.split(ip, ".")
iplist.reverse()
ip = string.join(iplist, ".")
ip += "." + blacklistURL
try:
#if blacklisted, we receive a IP in the range 127.0.0.x
ret = socket.gethostbyname( ip )
if SHOW_DEBUG_MSG: print "Blacklisted! returned: %s" %ret
return 1
except socket.gaierror, message:
if SHOW_DEBUG_MSG: print "Not blacklisted [%s]" % message
return 0
if __name__ == "__main__":
if len(sys.argv) > 2:
print checkIfBlacklisted( sys.argv[1] , sys.argv[2])
Zum Ausführen:
python script x.x.x.x zen.spamhaus.org
Mögliche Blacklists:
- no-more-funn.moensted.dk
- dnsbl.sorbs.net
- zen.spamhaus.org
- spews.dnsbl.net.au
- dnsbl.NJABL.org
- proxies.relays.monkeys.com
- list.dsbl.org