Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Préalable :
- # Installer venv si nécessaire
- sudo apt install python3-venv
- # Créer un environnement virtuel
- python3 -m venv myenv
- # Activer l'environnement virtuel
- source myenv/bin/activate
- # Installer les librairies dans l'environnement virtuel
- pip install requests
- pip install tabulate
- .... installer les autres librairies
- # Exécuter votre script
- python exportDNSfromInternetBS.py
- # Désactiver l'environnement virtuel
- deactivate
- ==============================================================================
- Fichier Python exportDNSfromInternetBS.py
- ==============================================================================
- import requests
- import json
- from tabulate import tabulate
- from collections import defaultdict
- # Configuration de l'API
- API_URL = "https://api.internet.bs"
- API_KEY = 'XXXXXXXXXXXXXXXXXX'
- API_PASSWORD = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYY'
- # Fonction pour effectuer une requête à l'API
- def api_request(resource, params):
- params.update({
- "ApiKey": API_KEY,
- "Password": API_PASSWORD,
- "ResponseFormat": "JSON"
- })
- response = requests.post(f"{API_URL}{resource}", data=params)
- return response.json()
- # Récupérer la liste des domaines
- def get_domain_list():
- response = api_request("/Domain/List", {})
- return response.get("domain", [])
- # Récupérer les enregistrements DNS pour un domaine
- def get_dns_records(domain):
- response = api_request("/Domain/DnsRecord/List", {"Domain": domain})
- return response.get("records", [])
- # Récupérer les nameservers pour un domaine
- def get_nameservers(domain):
- response = api_request("/Domain/Info", {"Domain": domain})
- return response.get("nameservers", [])
- # Fonction principale
- def main():
- domains = get_domain_list()
- all_records = defaultdict(lambda: defaultdict(list))
- all_types = set()
- for domain in domains:
- records = get_dns_records(domain)
- for record in records:
- record_type = record.get('type', 'Unknown')
- all_records[domain][record_type].append(record)
- all_types.add(record_type)
- # Ajouter les nameservers
- nameservers = get_nameservers(domain)
- for ns in nameservers:
- all_records[domain]['NS'].append({
- 'type': 'NS',
- 'name': domain,
- 'ttl': 'N/A',
- 'value': ns
- })
- all_types.add('NS')
- # Générer le tableau HTML
- html_output = """
- <html>
- <head>
- <style>
- body { font-family: Arial, sans-serif; }
- table { border-collapse: collapse; width: 100%; table-layout: fixed; }
- th, td { border: 1px solid black; padding: 8px; text-align: left; overflow: hidden; text-overflow: ellipsis; }
- th { background-color: #f2f2f2; }
- .record-type { font-weight: bold; background-color: #e6e6e6; }
- #filters { margin-bottom: 20px; }
- #filters input, #filters select { margin-right: 10px; padding: 5px; }
- </style>
- </head>
- <body>
- <div id="filters">
- <input type="text" id="domainFilter" placeholder="Filter by domain">
- <select id="typeFilter">
- <option value="">All Types</option>
- """ + "".join([f"<option value='{t}'>{t}</option>" for t in sorted(all_types)]) + """
- </select>
- <button onclick="applyFilters()">Apply Filters</button>
- </div>
- <table id="dnsTable">
- <thead>
- <tr>
- <th>Domain</th>
- <th>Type</th>
- <th>Name</th>
- <th>TTL</th>
- <th>Value</th>
- <th>Priority</th>
- </tr>
- </thead>
- <tbody>
- """
- for domain, records in all_records.items():
- for record_type, record_list in records.items():
- for record in record_list:
- html_output += f"""
- <tr>
- <td>{domain}</td>
- <td>{record_type}</td>
- <td>{record.get('name', 'N/A')}</td>
- <td>{record.get('ttl', 'N/A')}</td>
- <td>{record.get('value', 'N/A')}</td>
- <td>{record.get('priority', 'N/A') if record_type == 'MX' else 'N/A'}</td>
- </tr>
- """
- html_output += """
- </tbody>
- </table>
- <script>
- function applyFilters() {
- var domainFilter = document.getElementById('domainFilter').value.toLowerCase();
- var typeFilter = document.getElementById('typeFilter').value;
- var table = document.getElementById('dnsTable');
- var tr = table.getElementsByTagName('tr');
- for (var i = 1; i < tr.length; i++) {
- var td = tr[i].getElementsByTagName('td');
- var domain = td[0].textContent.toLowerCase();
- var type = td[1].textContent;
- if ((domain.indexOf(domainFilter) > -1 || domainFilter === '') &&
- (type === typeFilter || typeFilter === '')) {
- tr[i].style.display = '';
- } else {
- tr[i].style.display = 'none';
- }
- }
- }
- </script>
- </body>
- </html>
- """
- # Sauvegarder le résultat dans un fichier HTML
- with open("dns_records.html", "w") as f:
- f.write(html_output)
- print("DNS records exported to dns_records.html")
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment