Advertisement
loranloran

Export DNS zones from InternetBS

May 14th, 2024 (edited)
780
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.35 KB | Source Code | 0 0
  1. # Préalable :
  2.  
  3. # Installer venv si nécessaire
  4. sudo apt install python3-venv
  5.  
  6. # Créer un environnement virtuel
  7. python3 -m venv myenv
  8.  
  9. # Activer l'environnement virtuel
  10. source myenv/bin/activate
  11.  
  12. # Installer requests dans l'environnement virtuel
  13. pip install requests
  14.  
  15. # Exécuter votre script
  16. python exportDNSfromInternetBS.py
  17.  
  18. # Désactiver l'environnement virtuel
  19. deactivate
  20.  
  21.  
  22. ==============================================================================
  23. Fichier Python exportDNSfromInternetBS.py
  24. ==============================================================================
  25.  
  26. import requests
  27. import re
  28.  
  29. # Remplacer par vos informations d'identification InternetBS
  30. API_KEY = '8Z26Y57A6Y77P6O8J2IR'
  31. API_PASSWORD = 'hSsdfm5G!g{g!;'
  32.  
  33. # URL de base de l'API InternetBS
  34. BASE_URL = 'https://api.internet.bs'
  35.  
  36. def get_domains():
  37.     try:
  38.         url = f'{BASE_URL}/Domain/List'
  39.         params = {
  40.             'ApiKey': API_KEY,
  41.             'Password': API_PASSWORD,
  42.             'ResponseFormat': 'JSON'
  43.         }
  44.         response = requests.get(url, params=params)
  45.         response.raise_for_status()
  46.         data = response.json()
  47.         print("Domains Response:", data)  # Affiche la réponse brute
  48.         return data.get('domain', [])
  49.     except requests.exceptions.RequestException as e:
  50.         print(f"Failed to fetch domains: {e}")
  51.         return []
  52.  
  53. def get_dns_zone(domain):
  54.     try:
  55.         url = f'{BASE_URL}/Domain/DnsRecord/List'
  56.         params = {
  57.             'apiKey': API_KEY,
  58.             'password': API_PASSWORD,
  59.             'Domain': domain,
  60.             'ResponseFormat': 'TEXT'  # Utilisation du format TEXT
  61.         }
  62.         print(f"Requesting DNS records for {domain} with URL: {url} and params: {params}")  # Affiche l'URL et les paramètres utilisés
  63.         response = requests.get(url, params=params)
  64.         response.raise_for_status()
  65.         data = response.text
  66.         print(f"DNS Records for {domain}:\n{data}")  # Affiche la réponse brute
  67.         return data
  68.     except requests.exceptions.RequestException as e:
  69.         print(f"Failed to fetch DNS records for {domain}: {e}")
  70.         return "Failed to fetch DNS records."
  71.  
  72. def format_dns_records(dns_data):
  73.     formatted_data = []
  74.  
  75.     for domain, records in dns_data.items():
  76.         formatted_data.append(f"=========================================\n{domain}\n=========================================")
  77.  
  78.         # Extract and format different types of DNS records
  79.         ns_records = re.findall(r'^[^\s]+\s+\d+\s+IN\s+NS\s+[^\s]+$', records, re.MULTILINE)
  80.         a_records = re.findall(r'^[^\s]+\s+\d+\s+IN\s+A\s+[^\s]+$', records, re.MULTILINE)
  81.         cname_records = re.findall(r'^[^\s]+\s+\d+\s+IN\s+CNAME\s+[^\s]+$', records, re.MULTILINE)
  82.         txt_records = re.findall(r'^[^\s]+\s+\d+\s+IN\s+TXT\s+".*"$', records, re.MULTILINE)
  83.         mx_records = re.findall(r'^[^\s]+\s+\d+\s+IN\s+MX\s+\d+\s+[^\s]+$', records, re.MULTILINE)
  84.  
  85.         if ns_records:
  86.             formatted_data.append("\n; NS records =========================================")
  87.             formatted_data.extend(ns_records)
  88.  
  89.         if a_records:
  90.             formatted_data.append("\n; A records =========================================")
  91.             formatted_data.extend(a_records)
  92.  
  93.         if cname_records:
  94.             formatted_data.append("\n; CNAME records =========================================")
  95.             formatted_data.extend(cname_records)
  96.  
  97.         if txt_records:
  98.             formatted_data.append("\n; TXT records =========================================")
  99.             formatted_data.extend(txt_records)
  100.  
  101.         if mx_records:
  102.             formatted_data.append("\n; MX records =========================================")
  103.             formatted_data.extend(mx_records)
  104.  
  105.         formatted_data.append("\n")
  106.  
  107.     return "\n".join(formatted_data)
  108.  
  109. def main():
  110.     domains = get_domains()
  111.     if not domains:
  112.         print("No domains found.")
  113.         return
  114.  
  115.     dns_data = {}
  116.     for domain in domains:
  117.         dns_records = get_dns_zone(domain)
  118.         dns_data[domain] = dns_records
  119.  
  120.     formatted_data = format_dns_records(dns_data)
  121.  
  122.     with open('formatted_dns_zones.txt', 'w') as file:
  123.         file.write(formatted_data)
  124.  
  125.     print(f"Formatted DNS records have been saved to formatted_dns_zones.txt")
  126.  
  127. if __name__ == '__main__':
  128.     main()
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement