
Client Python pour dnsdumpster.com permettant de récupérer les enregistrements DNS, les sous-domaines et les cartes réseau pour la reconnaissance et la recherche en sécurité.
⚠️ AVERTISSEMENT IMPORTANT : Ceci est un wrapper API NON OFFICIEL pour dnsdumpster.com qui extrait les données du site web public.
DNSDumpster.com propose un plan API officiel pour une utilisation commerciale et intensive. Si vous avez besoin d'un accès fiable et de qualité professionnelle, veuillez envisager leur API officielle : https://dnsdumpster.com/
Ce wrapper non officiel doit être utilisé de manière responsable et conformément aux conditions d'utilisation de DNSDumpster.
Une bibliothèque cliente Python pour interagir avec dnsdumpster.com afin de récupérer les enregistrements DNS et les informations sur les sous-domaines. Cet outil est utile pour les chercheurs en sécurité, les testeurs d'intrusion et les administrateurs réseau à des fins de reconnaissance.
pip install dnsdumpster
pip install git+https://github.com/PaulSec/API-dnsdumpster.com.git
# Cloner le dépôt
git clone https://github.com/PaulSec/API-dnsdumpster.com
cd API-dnsdumpster.com
# Installer en mode développement
pip install -e .
# Installer les dépendances de développement
pip install -r requirements-dev.txt
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
# Initialiser l'API
api = DNSDumpsterAPI(verbose=True)
# Rechercher un domaine
results = api.search('example.com')
# Accéder aux résultats
print(f"Domaine : {results['domain']}")
print(f"Enregistrements DNS : {results['dns_records']['dns']}")
print(f"Enregistrements MX : {results['dns_records']['mx']}")
print(f"Enregistrements NS : {results['dns_records']['ns']}")
print(f"Enregistrements TXT : {results['dns_records']['txt']}")
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
api = DNSDumpsterAPI()
results = api.search('microsoft.com')
# Afficher tous les enregistrements A (sous-domaines)
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"Carte réseau enregistrée ! 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("Fichier Excel enregistré !")
import requests
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
# Créer une session personnalisée avec proxy
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"Erreur réseau : {e}")
except DNSDumpsterParseError as e:
print(f"Erreur d'analyse : {e}")
except DNSDumpsterAPIError as e:
print(f"Erreur API : {e}")
La méthode search() renvoie un dictionnaire avec la structure suivante :
{
'domain': 'example.com',
'dns_records': {
'dns': [ # Enregistrements A (sous-domaines)
{
'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',
# Clés de rétrocompatibilité :
'domain': 'subdomain.example.com',
'as': 'ASN:12345',
'provider': 'Provider Name'
}
],
'mx': [ # Enregistrements MX
{
'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': [ # Enregistrements NS
{
'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': [ # Enregistrements TXT
'v=spf1 include:_spf.example.com ~all',
'google-site-verification=abcdef123456'
],
'host': [] # Alias pour les enregistrements NS (rétrocompatibilité)
},
'image_data': b'base64_encoded_image_bytes', # ou None
'image_url': 'https://dnsdumpster.com/static/map/example.com.png',
'xls_data': b'base64_encoded_excel_bytes', # ou None
'xls_url': 'https://dnsdumpster.com/static/xlsx/example-uuid.xlsx'
}
# Cloner le dépôt
git clone https://github.com/PaulSec/API-dnsdumpster.com
cd API-dnsdumpster.com
# Créer un environnement virtuel
python -m venv venv
source venv/bin/activate # Sur Windows : venv\Scripts\activate
# Installer les dépendances
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Installer les hooks pre-commit (optionnel)
pip install pre-commit
pre-commit install
# Exécuter tous les tests
pytest
# Exécuter avec couverture
pytest --cov=dnsdumpster --cov-report=html
# Exécuter un fichier de test spécifique
pytest tests/test_parsing.py
# Exécuter avec sortie détaillée
pytest -v
# Exécuter un test spécifique
pytest tests/test_parsing.py::TestRetrieveResults::test_retrieve_results_basic
# Formater le code avec black
black dnsdumpster/ tests/
# Trier les imports
isort dnsdumpster/ tests/
# Lint avec flake8
flake8 dnsdumpster/ tests/
# Vérification des types avec mypy
mypy dnsdumpster/
# Exécuter toutes les vérifications de qualité
black dnsdumpster/ tests/ && isort dnsdumpster/ tests/ && flake8 dnsdumpster/ tests/ && mypy dnsdumpster/
API-dnsdumpster.com/
├── dnsdumpster/ # Paquet principal
│ ├── __init__.py
│ ├── DNSDumpsterAPI.py # Classe API principale
│ ├── API_example.py # Exemple d'utilisation
│ └── requirements.txt
├── tests/ # Suite de tests
│ ├── __init__.py
│ ├── conftest.py # Fixtures pytest
│ ├── test_parsing.py # Tests unitaires
│ └── test_integration.py # Tests d'intégration
├── .github/
│ └── workflows/ # Workflows CI/CD
│ ├── tests.yml
│ └── publish.yml
├── requirements.txt # Dépendances de production
├── requirements-dev.txt # Dépendances de développement
├── setup.py # Configuration du paquet
├── README.md
└── LICENSE
Nous accueillons les contributions ! Voici comment vous pouvez aider :
git checkout -b feature/amazing-feature)pytest)black, flake8, mypy)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Testez les méthodes d'analyse individuelles sans appels réseau :
pytest tests/test_parsing.py -v
Testez le flux API complet avec des réponses HTTP simulées :
pytest tests/test_integration.py -v
pytest --cov=dnsdumpster --cov-report=term-missing
Le projet utilise GitHub Actions pour :
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Cet outil est non officiel et n'est ni affilié ni approuvé par dnsdumpster.com. Utilisez-le de manière responsable et conformément aux conditions d'utilisation et au robots.txt du site cible. Les auteurs ne sont pas responsables d'une mauvaise utilisation de cet outil.
Voir CHANGELOG.md pour l'historique complet des versions.