import re from pathlib import Path def find_and_remove_ip_with_cidr(lines): cidr_regex = re.compile(r'\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}\b') return [line for line in lines if not cidr_regex.search(line)] def remove_invalid_domains(lines): valid_domain_regex = re.compile(r'^[a-zA-Z0-9\-\_\*\.]+$') return [line for line in lines if valid_domain_regex.match(line.strip())] def remove_duplicate_lines(lines): return list(set(line.strip().lower() for line in lines)) def duplicate_with_asterisk_dot(lines): modified_lines = [] for line in lines: stripped_line = line.strip() modified_lines.append(f"{stripped_line}\n") modified_lines.append(f"*.{stripped_line}\n") return modified_lines def sanitize_file(input_path, output_path): with open(input_path, 'r') as file: lines = file.readlines() lines = find_and_remove_ip_with_cidr(lines) lines = remove_invalid_domains(lines) lines = remove_duplicate_lines(lines) lines = duplicate_with_asterisk_dot(lines) with open(output_path, 'w') as file: file.writelines(lines) if __name__ == "__main__": input_path = 'ioc_domain_blocks.txt' output_path = 'sanitized_ioc_domain_blocks.txt' sanitize_file(input_path, output_path)