
Python-Client für dnsdumpster.com zum Abrufen von DNS-Einträgen, Subdomains und Netzwerkkarten für Reconnaissance und Sicherheitsforschung.
⚠️ WICHTIGER HINWEIS: Dies ist ein INOFFIZIELLER API-Wrapper für dnsdumpster.com, der die öffentliche Website ausliest.
DNSDumpster.com bietet einen offiziellen API-Plan für kommerzielle und intensive Nutzung an. Wenn Sie zuverlässigen, produktionsreifen Zugriff benötigen, ziehen Sie bitte deren offizielle API in Betracht: https://dnsdumpster.com/
Dieser inoffizielle Wrapper sollte verantwortungsvoll und in Übereinstimmung mit den Nutzungsbedingungen von DNSDumpster verwendet werden.
Eine Python-Client-Bibliothek für die Interaktion mit dnsdumpster.com zum Abrufen von DNS-Einträgen und Subdomain-Informationen. Dieses Tool ist nützlich für Sicherheitsforscher, Penetrationstester und Netzwerkadministratoren für Aufklärungszwecke.
pip install dnsdumpster
pip install git+https://github.com/PaulSec/API-dnsdumpster.com.git
# Repository klonen
git clone https://github.com/PaulSec/API-dnsdumpster.com
cd API-dnsdumpster.com
# Im Entwicklungsmodus installieren
pip install -e .
# Entwicklungabhängigkeiten installieren
pip install -r requirements-dev.txt
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
# API initialisieren
api = DNSDumpsterAPI(verbose=True)
# Nach einer Domain suchen
results = api.search('example.com')
# Auf die Ergebnisse zugreifen
print(f"Domain: {results['domain']}")
print(f"DNS-Einträge: {results['dns_records']['dns']}")
print(f"MX-Einträge: {results['dns_records']['mx']}")
print(f"NS-Einträge: {results['dns_records']['ns']}")
print(f"TXT-Einträge: {results['dns_records']['txt']}")
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
api = DNSDumpsterAPI()
results = api.search('microsoft.com')
# Alle A-Einträge (Subdomains) ausgeben
for record in results['dns_records']['dns']:
print(f"{record['host']} - {record['ip']} - {record['country']}")
import base64
results = api.search('example.com')
if results['image_data']:
with open('network_map.png', 'wb') as f:
f.write(base64.b64decode(results['image_data']))
print(f"Netzwerk-Karte gespeichert! URL: {results['image_url']}")
import base64
results = api.search('example.com')
if results['xls_data']:
with open('results.xlsx', 'wb') as f:
f.write(base64.b64decode(results['xls_data']))
print("Excel-Datei gespeichert!")
import requests
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
# Benutzerdefinierte Session mit Proxy erstellen
session = requests.Session()
session.proxies = {
'http': 'http://proxy.example.com:8080',
'https': 'https://proxy.example.com:8080',
}
api = DNSDumpsterAPI(session=session)
results = api.search('example.com')
from dnsdumpster.DNSDumpsterAPI import (
DNSDumpsterAPI,
DNSDumpsterAPIError,
DNSDumpsterRequestError,
DNSDumpsterParseError
)
api = DNSDumpsterAPI()
try:
results = api.search('example.com')
except DNSDumpsterRequestError as e:
print(f"Netzwerkfehler: {e}")
except DNSDumpsterParseError as e:
print(f"Parsing-Fehler: {e}")
except DNSDumpsterAPIError as e:
print(f"API-Fehler: {e}")
Die search()-Methode gibt ein Wörterbuch mit der folgenden Struktur zurück:
{
'domain': 'example.com',
'dns_records': {
'dns': [ # A-Einträge (Subdomains)
{
'host': 'subdomain.example.com',
'ip': '192.0.2.1',
'reverse_dns': 'reverse.dns.com',
'asn': 'ASN:12345',
'asn_name': 'Provider Name',
'country': 'United States',
'subnet': '192.0.2.0/24',
'open_services': '80, 443',
# Abwärtskompatibilitätsschlüssel:
'domain': 'subdomain.example.com',
'as': 'ASN:12345',
'provider': 'Provider Name'
}
],
'mx': [ # MX-Einträge
{
'priority': '10',
'server': 'mail.example.com',
'ip': '198.51.100.1',
'reverse_dns': 'mail.reverse.com',
'asn': 'ASN:23456',
'asn_name': 'Mail Provider',
'country': 'Germany',
'subnet': '198.51.100.0/24'
}
],
'ns': [ # NS-Einträge
{
'nameserver': 'ns1.example.com',
'ip': '203.0.113.1',
'reverse_dns': 'ns1.reverse.com',
'asn': 'ASN:34567',
'asn_name': 'DNS Provider',
'country': 'United Kingdom',
'subnet': '203.0.113.0/24'
}
],
'txt': [ # TXT-Einträge
'v=spf1 include:_spf.example.com ~all',
'google-site-verification=abcdef123456'
],
'host': [] # Alias für NS-Einträge (Abwärtskompatibilität)
},
'image_data': b'base64_encoded_image_bytes', # oder None
'image_url': 'https://dnsdumpster.com/static/map/example.com.png',
'xls_data': b'base64_encoded_excel_bytes', # oder None
'xls_url': 'https://dnsdumpster.com/static/xlsx/example-uuid.xlsx'
}
# Repository klonen
git clone https://github.com/PaulSec/API-dnsdumpster.com
cd API-dnsdumpster.com
# Virtuelle Umgebung erstellen
python -m venv venv
source venv/bin/activate # Auf Windows: venv\Scripts\activate
# Abhängigkeiten installieren
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Pre-commit-Hooks installieren (optional)
pip install pre-commit
pre-commit install
# Alle Tests ausführen
pytest
# Mit Abdeckung ausführen
pytest --cov=dnsdumpster --cov-report=html
# Bestimmte Testdatei ausführen
pytest tests/test_parsing.py
# Mit ausführlicher Ausgabe ausführen
pytest -v
# Bestimmten Test ausführen
pytest tests/test_parsing.py::TestRetrieveResults::test_retrieve_results_basic
# Code mit black formatieren
black dnsdumpster/ tests/
# Importe sortieren
isort dnsdumpster/ tests/
# Mit flake8 linten
flake8 dnsdumpster/ tests/
# Typprüfung mit mypy
mypy dnsdumpster/
# Alle Qualitätsprüfungen ausführen
black dnsdumpster/ tests/ && isort dnsdumpster/ tests/ && flake8 dnsdumpster/ tests/ && mypy dnsdumpster/
API-dnsdumpster.com/
├── dnsdumpster/ # Hauptpaket
│ ├── __init__.py
│ ├── DNSDumpsterAPI.py # Haupt-API-Klasse
│ ├── API_example.py # Verwendungsbeispiel
│ └── requirements.txt
├── tests/ # Testsuite
│ ├── __init__.py
│ ├── conftest.py # Pytest-Fixtures
│ ├── test_parsing.py # Unit-Tests
│ └── test_integration.py # Integrationstests
├── .github/
│ └── workflows/ # CI/CD-Workflows
│ ├── tests.yml
│ └── publish.yml
├── requirements.txt # Produktionsabhängigkeiten
├── requirements-dev.txt # Entwicklungsabhängigkeiten
├── setup.py # Paketkonfiguration
├── README.md
└── LICENSE
Wir freuen uns über Beiträge! So können Sie helfen:
git checkout -b feature/amazing-feature)pytest)black, flake8, mypy)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Einzelne Parsing-Methoden ohne Netzwerkaufrufe testen:
pytest tests/test_parsing.py -v
Den vollständigen API-Workflow mit gemockten HTTP-Antworten testen:
pytest tests/test_integration.py -v
pytest --cov=dnsdumpster --cov-report=term-missing
Das Projekt verwendet GitHub Actions für:
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die LICENSE-Datei für Details.
Dies ist ein inoffizielles Tool und steht in keiner Verbindung zu dnsdumpster.com und wird von dieser nicht unterstützt. Verwenden Sie es verantwortungsvoll und in Übereinstimmung mit den Nutzungsbedingungen und der robots.txt der Zielwebsite. Die Autoren sind nicht für den Missbrauch dieses Tools verantwortlich.
Siehe CHANGELOG.md für die vollständige Versionshistorie.