# encoding='utf-8' """ https://blog.51cto.com/u_16213398/9007087 https://docs.python.org/zh-cn/3/howto/ipaddress.html#ipaddress-howto https://blog.csdn.net/u013541325/article/details/117530957 https://www.cnblogs.com/itsfei/p/17445303.html https://mwell.tech/archives/9630#:~:text=%E4%BD%BF%E7%94%A8%20ipaddress%20%E6%A8%A1%E5%9D%97%E5%A4%84%E7%90%86%20IP%20%E7%BD%91%E7%BB%9C%201%201.%20%E6%A3%80%E6%9F%A5IP%E5%9C%B0%E5%9D%80%E6%98%AFIPv4%E8%BF%98%E6%98%AFIPv6,true%E3%80%82%20...%208%208.%20%E4%BD%BF%E7%94%A8%20IPv4Interface%20%E5%AF%B9%E8%B1%A1%20 """ import re import ipaddress # 保留ipv4地址(正则法) '''def check_ip(ipAddr): compile_ip=re.compile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$') if compile_ip.match(ipAddr): return True else: return False''' defis_ipv4(ipAddr): try: ipaddress.IPv4Address(ipAddr) returnTrue except ipaddress.AddressValueError: returnFalse # 去除内网地址(ip): '''def is_private_ip(ipArrd): subnet = { "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16" } ip = ipaddress.ip_address(ipArrd) try: for lan in subnet: if ip in ipaddress.ip_network(lan): return True return False except ipaddress.AddressValueError: return "error!!!"'''
withopen("ip.txt",'r', encoding='utf-8') as f: ip_list = f.read() #去除杂七杂八的 parttern1 = re.compile('IOC:|ioc:|XFF:|"|”|XFF代理:') data = re.sub(parttern1,"",ip_list) #分割成多行 parttern2=re.compile(',|,|、') data = re.sub(parttern2,'\n',data) #re.sub返回的是新的列表 #存为列表 ip_list = data.split("\n") #去除空格 ip_list = [x.strip() for x in ip_list if x.strip() != ''] #去除端口号 final_list = [re.findall(r'\d+\.\d+\.\d+\.\d+', x)[0] if":"in x else x for x in ip_list] #保留ipv4地址 final_list = [x for x in final_list if is_ipv4(x) == True] #去除内网地址 final_list = [x for x in final_list if ipaddress.ip_address(x).is_private == False] #打印测试 withopen("output.txt", 'w',encoding='utf-8') as f: for i in final_list: f.write(i + "\n")
dns判断有个反向思考的方法,利用nslookup可以尝试,后续补充
分隔ip
withopen('ip.txt', 'r') as f: data = f.read() #print(str(data[0:31])) data = data.replace(" ","") data = data.split("\n") #print(data) #with open('分隔01.txt','w') as f: # for i in data: withopen('分隔01.txt','w') as f: for i inrange(0,len(data),31): line = ','.join(map(str,data[i:i+32])) #print(len(line.split(","))) #print(line) f.write(line + "\n")