import socket import sys import argparse import subprocess from colorama import init, Fore, Style init(autoreset=True) def check_domain_availability(domain): try: socket.gethostbyname(domain) return True except socket.error: return False def generate_variants(domain): variants = set() for i in range(len(domain)): for c in 'abcdefghijklmnopqrstuvwxyz': if domain[i] != c: variants.add(domain[:i] + c + domain[i+1:]) for i in range(len(domain)): variants.add(domain[:i] + domain[i+1:]) for i in range(len(domain) + 1): for c in 'abcdefghijklmnopqrstuvwxyz': variants.add(domain[:i] + c + domain[i:]) return variants def get_whois_info(domain): try: result = subprocess.run(['whois', domain], capture_output=True, text=True, check=False) if result.returncode == 0: return result.stdout else: return None except Exception as e: return None def main(base_domain, tld=None, output_file=None): if tld: tlds = [tld] else: tlds = ['com', 'net', 'org', 'info', 'biz', 'com.tr'] domain_variants = generate_variants(base_domain) all_domains = [f"{base_domain}.{tld}" for tld in tlds] + \ [f"{variant}.{tld}" for variant in domain_variants for tld in tlds] available_domains = [] taken_domains = [] whois_infos = [] for domain in all_domains: available = not check_domain_availability(domain) if available: available_domains.append(domain) else: whois_info = get_whois_info(domain) taken_domains.append(domain) whois_infos.append({'domain': domain, 'whois_info': whois_info}) print(Fore.CYAN + "\n********** AVAILABLE DOMAINS **********") output_lines = ["********** AVAILABLE DOMAINS **********"] for domain in available_domains: line = f"Domain {domain} is available." print(Fore.GREEN + line) output_lines.append(line) print(Fore.CYAN + "\n********** TAKEN DOMAINS **********") output_lines.append("\n********** TAKEN DOMAINS **********") for domain in taken_domains: line = f"Domain {domain} is taken." print(Fore.RED + line) output_lines.append(line) print(Fore.CYAN + "\n********** WHOIS INFORMATION **********") output_lines.append("\n********** WHOIS INFORMATION **********") for entry in whois_infos: line = f"WHOIS info for {entry['domain']}:\n{entry['whois_info']}" print(Fore.YELLOW + line) output_lines.append(line) if output_file: with open(output_file, 'w') as file: file.write("\n".join(output_lines)) print(Fore.CYAN + f"Results saved to {output_file}") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Domain availability and WHOIS checker.") parser.add_argument("-d", "--domain", required=True, help="Base domain name to check.") parser.add_argument("-t", "--tld", help="Specific TLD to check.") parser.add_argument("-o", "--output", help="Output file to save results.") args = parser.parse_args() main(args.domain, args.tld, args.output) } } ?>