Пример #1
0
def test_two_A_responses():
    qname = "dualstack.mc-12555-1019789594.us-east-1.elb.amazonaws.com."
    T = Tester()
    T.newtest(testname="py.test")
    response = dbdns.query(T, qname, dns.rdatatype.A)
    count = 0
    for rrset in response.answer:
        for rr in rrset:
            if rr.rdtype == dns.rdatatype.A:
                print("IP address for {} is {}".format(qname, rr.address))
                count += 1
    assert count >= 2
Пример #2
0
def test_a_read():
    qname = "google-public-dns-a.google.com."
    T = Tester()
    T.newtest(testname="py.test")
    response = dbdns.query(T, qname, dns.rdatatype.A)
    count = 0
    for rrset in response.answer:
        for rr in rrset:
            if rr.rdtype == dns.rdatatype.A:
                print("IP addr for {} is {}".format(qname, rr.address))
                assert rr.address == "8.8.8.8"
                count += 1
    assert count > 0
Пример #3
0
def test_read_tlsa():
    """Verify that a TLSA record can be read"""
    qname = "_443._tcp.good.dane.verisignlabs.com"
    T = Tester()
    T.newtest(testname="py.test")
    response = dbdns.query(T, qname, dns.rdatatype.TLSA)
    count = 0
    for rrset in response.answer:
        for rr in rrset:
            if rr.rdtype == dns.rdatatype.TLSA:
                print("{}: {} {} {} {}".format(qname, rr.usage, rr.selector, rr.mtype, hexdump(rr.cert)))
                count += 1
    assert count > 0
Пример #4
0
def test_dnssec_response_notpresent():
    qname = "www.google.com"
    T = Tester()
    T.newtest(testname="py.test")
    response = dbdns.query(T, qname, dns.rdatatype.A)
    count = 0
    for rrset in response.answer:
        for rr in rrset:
            if rr.rdtype == dns.rdatatype.A:
                dnssec = response.flags & dns.flags.AD
                print("IP address for {} is {} DNSSEC: {}".format(qname, rr.address, dnssec))
                if dnssec:
                    count += 1
    assert count == 0
Пример #5
0
def test_cname_read():
    # This test makes use of the fact that a.nitroba.org is set as a cname to b.nitroba.org
    qname = "a.nitroba.org"
    T = Tester()
    T.newtest(testname="py.test")
    response = dbdns.query(T, qname, dns.rdatatype.CNAME)
    count = 0
    for rset in response.answer:
        for rr in rset:
            if rr.rdtype == dns.rdatatype.CNAME:
                print("cname for a.nitroba.org is {}".format(rr.target))
                assert str(rr.target) == "b.nitroba.org."
                count += 1
    assert count > 0  # no response?
Пример #6
0
def get_pubkey(T,email):
    """Returns the DNS cert for email"""
    import re,codecs
    try:
        response = dbdns.query(T,email_to_dns(email), "TYPE61")
    except dns.resolver.NXDOMAIN:
        return None
    except dns.resolver.Timeout:
        return None


    # response.answer[0] is in wire format. 
    # I've been unable to parse it, so I convert it to RFC 3597-format text,
    # which I then parse. It's not that slow.

    data = response.answer[0][0].to_text()
    r = re.compile(r"\\# (\d+) (.*)")
    m = r.search(data)
    if m:
        hexdata = codecs.decode(m.group(2).replace(" ",""),"hex")
        return hexdata
Пример #7
0
            print("")
            print("===================")
            print("")

    if args.demo:
        if len(args.name)!=1:
            print("Error: One name must be provided")
            exit(1)
        name = args.name[0]
        print("DBDNS DEMO")
        T = Tester()
        T.newtest(testname="dig")
        print("dig -t {} {}".format(args.t,name))
        print("TestID: {}".format(T.testid))

        response = dbdns.query(T,name,args.t)
        for part in range(len(response.answer)):
            print("ANSWER PART {}:".format(part))
            for i in range(len(response.answer[part])):
                print("RR {}: {} {}".format(i,response.answer[part][i],type(response.answer[part][i])))
        T.commit()

        print("\n\n\nReplay:")
        response = dbdns.query(T,name,args.t,replay=True)
        for part in range(len(response.answer)):
            print("ANSWER PART {}:".format(part))
            for i in range(len(b.answer[part])):
                print("RR {}: {} {}".format(i,
                                            response.answer[part][i],
                                            type(response.answer[part][i])))