def AXFR(self, name): """AXFR for name * name -- name to AXFR for This function is a generator. As it AXFRs it will yield you the records. **Example** Let's get a list of the tlds (gotta catch em all!): >>> tlds = [] >>> for rr in resolver("f.root-servers.net").AXFR("."): >>> if rr.rr_type() == "NS": >>> tlds.append(rr.owner()) """ #Dname seems to be unecessary on some computers, but it is on others. Avoid bugs. if self._ldns_resolver.axfr_start( ldns.ldns_dname(name), ldns.LDNS_RR_CLASS_IN) != ldns.LDNS_STATUS_OK: raise Exception("Starting AXFR failed. Error: %s" % ldns.ldns_get_errorstr_by_id(status)) pres = self._ldns_resolver.axfr_next() while pres: yield resource_record(pres) pres = self._ldns_resolver.axfr_next()
def load_key(session, environment, zone, key, ksk): open(environment.key_file, "w").write(key.private_key) res = ldns.ldns_key.new_frm_fp(open(environment.key_file, "r")) res.set_flags(257 if ksk else 256) res.set_origttl(zone.dnskey_ttl) res.set_pubkey_owner(ldns.ldns_dname(str(zone.apex))) res.set_use(True) return res
def add_nameserver(self, ns): """ Add a nameserver, IPv4/IPv6/name. """ if isValidIP(ns) == 4: address = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_A, ns) self._ldns_resolver.push_nameserver(address) elif isValidIP(ns) == 6: address = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_AAAA, ns) self._ldns_resolver.push_nameserver(address) else: resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") #address = resolver.get_addr_by_name(ns) address = resolver.get_addr_by_name(ldns.ldns_dname(ns)) if not address: address = resolver.get_addr_by_name(ldns.ldns_dname(ns)) if not address: raise Exception("Failed to resolve address for %s" % ns) for rr in address.rrs(): self._ldns_resolver.push_nameserver_rr(rr)
def add_nameserver(self,ns): """ Add a nameserver, IPv4/IPv6/name. """ if isValidIP(ns) == 4: address = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_A,ns) self._ldns_resolver.push_nameserver(address) elif isValidIP(ns) == 6: address = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_AAAA,ns) self._ldns_resolver.push_nameserver(address) else: resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") #address = resolver.get_addr_by_name(ns) address = resolver.get_addr_by_name(ldns.ldns_dname(ns)) if not address: address = resolver.get_addr_by_name(ldns.ldns_dname(ns)) if not address: raise Exception("Failed to resolve address for %s" % ns) for rr in address.rrs(): self._ldns_resolver.push_nameserver_rr(rr)
def AXFR(self,name): """AXFR for name * name -- name to AXFR for This function is a generator. As it AXFRs it will yield you the records. **Example** Let's get a list of the tlds (gotta catch em all!): >>> tlds = [] >>> for rr in resolver("f.root-servers.net").AXFR("."): >>> if rr.rr_type() == "NS": >>> tlds.append(rr.owner()) """ #Dname seems to be unecessary on some computers, but it is on others. Avoid bugs. if self._ldns_resolver.axfr_start(ldns.ldns_dname(name), ldns.LDNS_RR_CLASS_IN) != ldns.LDNS_STATUS_OK: raise Exception("Starting AXFR failed. Error: %s" % ldns.ldns_get_errorstr_by_id(status)) pres = self._ldns_resolver.axfr_next() while pres: yield resource_record(pres) pres = self._ldns_resolver.axfr_next()
#!/usr/bin/python # # MX is a small program that prints out the mx records for a particular domain # import ldns dname = ldns.ldns_dname("nic.cz") print dname resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") pkt = resolver.query(dname, ldns.LDNS_RR_TYPE_MX, ldns.LDNS_RR_CLASS_IN) if (pkt): mx = pkt.rr_list_by_type(ldns.LDNS_RR_TYPE_MX, ldns.LDNS_SECTION_ANSWER) if (mx): mx.sort() print mx
""" global class_name global method_name global error_detected error_detected = True sys.stderr.write("(line %d): malfunctioning method %s.\n" % \ (inspect.currentframe().f_back.f_lineno, method_name)) #if not error_detected: if True: method_name = class_name + ".__init__()" rdf1 = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_DNAME, "test.nic.cz.") rdf2 = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_A, "217.31.205.50") try: dname = ldns.ldns_dname("www.nic.cz.") if not isinstance(dname, ldns.ldns_dname): set_error() except: set_error() # # Error when printing a dname wich was created fron an empty string. # Must find out why. # try: dname = ldns.ldns_dname(rdf1) if not isinstance(dname, ldns.ldns_dname): set_error() except: set_error() # Test whether rdf1 and dname independent.
#!/usr/bin/python # # This example shows how to generate public/private key pair # import ldns algorithm = ldns.LDNS_SIGN_DSA bits = 512 ldns.ldns_init_random(open("/dev/urandom", "rb"), (bits + 7) // 8) domain = ldns.ldns_dname("example.") #generate a new key key = ldns.ldns_key.new_frm_algorithm(algorithm, bits) print key #set owner key.set_pubkey_owner(domain) #create the public from the ldns_key pubkey = key.key_to_rr() #previous command is equivalent to # pubkey = ldns.ldns_key2rr(key) print pubkey #calculate and set the keytag key.set_keytag(ldns.ldns_calc_keytag(pubkey)) #build the DS record ds = ldns.ldns_key_rr2ds(pubkey, ldns.LDNS_SHA1)
#!/usr/bin/python # # This example shows how to generate public/private key pair # import ldns algorithm = ldns.LDNS_SIGN_DSA bits = 512 ldns.ldns_init_random(open("/dev/urandom","rb"), (bits+7)//8) domain = ldns.ldns_dname("example.") #generate a new key key = ldns.ldns_key.new_frm_algorithm(algorithm, bits); print key #set owner key.set_pubkey_owner(domain) #create the public from the ldns_key pubkey = key.key_to_rr() #previous command is equivalent to # pubkey = ldns.ldns_key2rr(key) print pubkey #calculate and set the keytag key.set_keytag(ldns.ldns_calc_keytag(pubkey)) #build the DS record ds = ldns.ldns_key_rr2ds(pubkey, ldns.LDNS_SHA1)
#!/usr/bin/python import ldns resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") dnn = ldns.ldns_dname("www.google.com") print(dnn.get_type_str(), dnn) dna = ldns.ldns_rdf.new_frm_str("74.125.43.99", ldns.LDNS_RDF_TYPE_A) print(dna.get_type_str(), dna) name = resolver.get_name_by_addr(dna) if (not name): raise Exception("Can't retrieve server name") for rr in name.rrs(): print(rr) name = resolver.get_name_by_addr("74.125.43.99") if (not name): raise Exception("Can't retrieve server name") for rr in name.rrs(): print(rr) addr = resolver.get_addr_by_name(dnn) if (not addr): raise Exception("Can't retrieve server address") for rr in addr.rrs(): print(rr) addr = resolver.get_addr_by_name("www.google.com") if (not addr): raise Exception("Can't retrieve server address") for rr in addr.rrs(): print(rr)
#!/usr/bin/python import ldns resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") dnn = ldns.ldns_dname("www.google.com") print(dnn.get_type_str(), dnn) dna = ldns.ldns_rdf.new_frm_str("74.125.43.99",ldns.LDNS_RDF_TYPE_A) print(dna.get_type_str(), dna) name = resolver.get_name_by_addr(dna) if (not name): raise Exception("Can't retrieve server name") for rr in name.rrs(): print(rr) name = resolver.get_name_by_addr("74.125.43.99") if (not name): raise Exception("Can't retrieve server name") for rr in name.rrs(): print(rr) addr = resolver.get_addr_by_name(dnn) if (not addr): raise Exception("Can't retrieve server address") for rr in addr.rrs(): print(rr) addr = resolver.get_addr_by_name("www.google.com") if (not addr): raise Exception("Can't retrieve server address") for rr in addr.rrs(): print(rr)
PrivateExponent: {4:s} Prime1: {5:s} Prime2: {6:s} Exponent1: {7:s} Exponent2: {8:s} Coefficient: {9:s}""".format(str(algorithm), getAlgorithmName(algorithm), format(n), format(e), format(d), format(p), format(q), format(d % p_factor), format(d % q_factor), format(u) ) fw.write(file) fw.close() #construct DNSKEY and DS record fw = open("key.priv", "r") key = ldns.ldns_key.new_frm_fp(fw) key.set_pubkey_owner(ldns.ldns_dname(domain)) key.set_flags(flags) pubkey = key.key_to_rr() ds = ldns.ldns_key_rr2ds(pubkey, getDigestType(algorithm)) owner, algo, tag = pubkey.owner(), str(algorithm).zfill(3), key.keytag() fw = open(sys.argv[1] + "/K%s+%s+%d.key" % (owner,algo,tag), "wb") pubkey.print_to_file(fw) fw = open(sys.argv[1] + "/K%s+%s+%d.private" % (owner,algo,tag), "wb") key.print_to_file(fw) fw = open(sys.argv[1] + "/K%s+%s+%d.ds" % (owner,algo,tag), "wb") ds.print_to_file(fw)
#if not error_detected: if True: method_name = class_name + ".new()" try: pkt = ldns.ldns_pkt.new() if not isinstance(pkt, ldns.ldns_pkt): set_error() except: set_error() #if not error_detected: if True: method_name = class_name + ".new_query()" dname = ldns.ldns_dname("test.nic.cz.") try: pkt = ldns.ldns_pkt.new_query(dname, ldns.LDNS_RR_TYPE_A, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_QR | ldns.LDNS_RD) if not isinstance(pkt, ldns.ldns_pkt): set_error() except: set_error() rdf = ldns.ldns_rdf_new_frm_str(ldns.LDNS_RDF_TYPE_DNAME, "test.nic.cz.") try: pkt = ldns.ldns_pkt.new_query(rdf, ldns.LDNS_RR_TYPE_A, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_QR | ldns.LDNS_RD) if not isinstance(pkt, ldns.ldns_pkt): set_error() except: set_error() try: pkt = ldns.ldns_pkt.new_query("bad argument", ldns.LDNS_RR_TYPE_A, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_QR | ldns.LDNS_RD)
except: set_error() #if not error_detected: if True: method_name = class_name + ".domain()" resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") resolver.set_domain(None) try: ret = resolver.domain() if ret != None: set_error() except: set_error() dname = ldns.ldns_dname("example.com.") resolver.set_domain(dname) try: ret = resolver.domain() if not isinstance(ret, ldns.ldns_dname): set_error() if ret != dname: set_error() except: set_error() #if not error_detected: if True: method_name = class_name + ".edns_udp_size()" try:
#!/usr/bin/python # # MX is a small program that prints out the mx records for a particular domain # import ldns dname = ldns.ldns_dname("nic.cz") print(dname) resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf") pkt = resolver.query(dname, ldns.LDNS_RR_TYPE_MX,ldns.LDNS_RR_CLASS_IN) if (pkt): mx = pkt.rr_list_by_type(ldns.LDNS_RR_TYPE_MX, ldns.LDNS_SECTION_ANSWER) if (mx): mx.sort() print(mx)