From a8687af736bf29b553b93c33a8f522e1bbb0a25d Mon Sep 17 00:00:00 2001 From: altf4arnold Date: Sun, 25 Feb 2024 04:45:41 +0100 Subject: [PATCH 1/3] DNSSEC almost working. Need to add other types of record to verify stuff --- tldtester/admin.py | 2 +- tldtester/models.py | 2 +- tldtester/sorter.py | 14 +++++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tldtester/admin.py b/tldtester/admin.py index dedc845..01d1b5f 100644 --- a/tldtester/admin.py +++ b/tldtester/admin.py @@ -7,7 +7,7 @@ class tlds(ExtraButtonsMixin, admin.ModelAdmin): - list_display = ('tld', 'nsamount', 'v4nsamount', 'v6nsamount', 'lastEdition') + list_display = ('tld', 'nsamount', 'v4nsamount', 'v6nsamount', 'dnssec', 'lastEdition') @button(change_form=True, html_attrs={'style': 'background-color:#88FF88;color:black'}) def refresh(self, request): diff --git a/tldtester/models.py b/tldtester/models.py index 9f2a50e..35aafba 100644 --- a/tldtester/models.py +++ b/tldtester/models.py @@ -26,7 +26,7 @@ class TLD(models.Model): (253, "private algorithm"), (254, "private algorithm OID"), (300, "Unknown"), - + (400, "None"), ) tld = models.CharField(max_length=30, primary_key=True) nsamount = models.IntegerField(default=0) diff --git a/tldtester/sorter.py b/tldtester/sorter.py index 7914e2d..344059f 100644 --- a/tldtester/sorter.py +++ b/tldtester/sorter.py @@ -34,6 +34,8 @@ def dbwriter(recs): db.nsamount = recs["nsserveramount"] db.v4nsamount = recs["v4resolvers"] db.v6nsamount = recs["v6resolvers"] + print(recs["tld"] + str(recs['algo'])) + db.dnssec = recs["algo"] db.save() @@ -44,6 +46,7 @@ def grabber(data): """ for tld in data: nsservers = [] + dnsseckeys = [] Arecords = 0 AAAArecords = 0 ns = dns.resolver.resolve(tld, 'NS') @@ -61,9 +64,18 @@ def grabber(data): AAAArecords += 1 except Exception as e: print(e) + try: + ds = dns.resolver.resolve(tld, 'DS') + for dsrecord in ds: + algo = dsrecord.to_text() + algo.split() + dnsseckeys.append(int(algo[1])) + algo = max((list(dict.fromkeys(dnsseckeys)))) + except Exception as e: + algo = 400 results = {"tld": tld, "nsserveramount": int(len((nsservers))), "v4resolvers": Arecords, - "v6resolvers": AAAArecords} + "v6resolvers": AAAArecords, "algo" : algo} dbwriter(results) From 644cc4599ceb5364183bebe90b96f2d2da5bf8fd Mon Sep 17 00:00:00 2001 From: altf4arnold Date: Sun, 25 Feb 2024 04:56:05 +0100 Subject: [PATCH 2/3] fixing listing. Now I get coherent results --- tldtester/sorter.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tldtester/sorter.py b/tldtester/sorter.py index 344059f..d7fe22e 100644 --- a/tldtester/sorter.py +++ b/tldtester/sorter.py @@ -34,7 +34,6 @@ def dbwriter(recs): db.nsamount = recs["nsserveramount"] db.v4nsamount = recs["v4resolvers"] db.v6nsamount = recs["v6resolvers"] - print(recs["tld"] + str(recs['algo'])) db.dnssec = recs["algo"] db.save() @@ -68,14 +67,15 @@ def grabber(data): ds = dns.resolver.resolve(tld, 'DS') for dsrecord in ds: algo = dsrecord.to_text() - algo.split() - dnsseckeys.append(int(algo[1])) - algo = max((list(dict.fromkeys(dnsseckeys)))) + line = algo.split() + dnsseckeys.append(int(line[1])) + algo = max(list(dict.fromkeys(dnsseckeys))) except Exception as e: algo = 400 + print(e) results = {"tld": tld, "nsserveramount": int(len((nsservers))), "v4resolvers": Arecords, - "v6resolvers": AAAArecords, "algo" : algo} + "v6resolvers": AAAArecords, "algo": algo} dbwriter(results) From 06ef8ab7812b094ea6916c8443c58271e24f8445 Mon Sep 17 00:00:00 2001 From: altf4arnold Date: Mon, 26 Feb 2024 03:40:33 +0100 Subject: [PATCH 3/3] resistant to error's, DNSSEC done --- tldtester/sorter.py | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/tldtester/sorter.py b/tldtester/sorter.py index d7fe22e..6f5ce96 100644 --- a/tldtester/sorter.py +++ b/tldtester/sorter.py @@ -48,23 +48,41 @@ def grabber(data): dnsseckeys = [] Arecords = 0 AAAArecords = 0 - ns = dns.resolver.resolve(tld, 'NS') - for server in ns: - nsservers.append(server.to_text()) + try: + ns = dns.resolver.resolve(tld, 'NS') + for server in ns: + nsservers.append(server.to_text()) + except Exception as e: + print(e) for Arecord in nsservers: try: - dns.resolver.resolve(Arecord, 'A') + try: + dns.resolver.resolve(Arecord, 'A') + except Exception as e: + # retry + print(e) + dns.resolver.resolve(Arecord, 'A') Arecords += 1 except Exception as e: print(e) for AAAArecord in nsservers: try: - dns.resolver.resolve(AAAArecord, 'AAAA') + try: + dns.resolver.resolve(AAAArecord, 'AAAA') + except Exception as e: + # retry + print(e) + dns.resolver.resolve(AAAArecord, 'AAAA') AAAArecords += 1 except Exception as e: print(e) try: - ds = dns.resolver.resolve(tld, 'DS') + try: + ds = dns.resolver.resolve(tld, 'DS') + except Exception as e: + # retry + print(e) + ds = dns.resolver.resolve(tld, 'DS') for dsrecord in ds: algo = dsrecord.to_text() line = algo.split()