From 48f479c1195e169314030a7e3b9b6987f9f18dc4 Mon Sep 17 00:00:00 2001 From: Schmidt Date: Thu, 17 Apr 2025 18:51:38 +0200 Subject: [PATCH 1/2] update to new dnsdumpster api --- dnsdumpster/DNSDumpsterAPI.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/dnsdumpster/DNSDumpsterAPI.py b/dnsdumpster/DNSDumpsterAPI.py index de6ddda..02b2a18 100644 --- a/dnsdumpster/DNSDumpsterAPI.py +++ b/dnsdumpster/DNSDumpsterAPI.py @@ -9,6 +9,8 @@ import re import sys import base64 +import html +import json from bs4 import BeautifulSoup @@ -66,16 +68,21 @@ def retrieve_txt_record(self, table): def search(self, domain): dnsdumpster_url = 'https://dnsdumpster.com/' + dnsdumpster_api_url = 'https://api.dnsdumpster.com/htmld/' req = self.session.get(dnsdumpster_url) soup = BeautifulSoup(req.content, 'html.parser') - csrf_middleware = soup.findAll('input', attrs={'name': 'csrfmiddlewaretoken'})[0]['value'] - self.display_message('Retrieved token: %s' % csrf_middleware) + form = soup.find('form', attrs={'data-form-id': 'mainform'}) + hx_headers = form.get('hx-headers') + unescaped = html.unescape(hx_headers) + headers_dict = json.loads(unescaped) + auth_token = headers_dict.get("Authorization") - cookies = {'csrftoken': csrf_middleware} - headers = {'Referer': dnsdumpster_url, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'} - data = {'csrfmiddlewaretoken': csrf_middleware, 'targetip': domain, 'user': 'free'} - req = self.session.post(dnsdumpster_url, cookies=cookies, data=data, headers=headers) + self.display_message('Retrieved access token: %s' % auth_token) + + headers = {'Referer': dnsdumpster_url, 'authorization': auth_token, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'} + data = {'target': domain} + req = self.session.post(dnsdumpster_api_url, data=data, headers=headers) if req.status_code != 200: print( From 063c536c0b14d40c369198d8fc6d573e16e1e9b7 Mon Sep 17 00:00:00 2001 From: Schmidt Date: Fri, 9 May 2025 20:46:52 +0200 Subject: [PATCH 2/2] update xls path to xlsx path; update regex to match new generated dumpster id --- dnsdumpster/DNSDumpsterAPI.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnsdumpster/DNSDumpsterAPI.py b/dnsdumpster/DNSDumpsterAPI.py index 02b2a18..031bbe6 100644 --- a/dnsdumpster/DNSDumpsterAPI.py +++ b/dnsdumpster/DNSDumpsterAPI.py @@ -119,7 +119,7 @@ def search(self, domain): # XLS hosts. # eg. tsebo.com-201606131255.xlsx try: - pattern = r'/static/xls/' + domain + '-[0-9]{12}\.xlsx' + pattern = r'/static/xlsx/' + re.escape(domain) + r'-[a-f0-9\-]{36}\.xlsx' xls_url = re.findall(pattern, req.content.decode('utf-8'))[0] xls_url = 'https://dnsdumpster.com' + xls_url xls_data = base64.b64encode(self.session.get(xls_url).content)