import re
import netaddr
import requests
def ipv4_collect():
ip_group=[]
ip_re=re.compile(r'.*?(\d+\.\d+\.\d+)\.\d+')
for line in open('../result.txt'):
line=line.rstrip()
if ip_re.match(line):
ip=ip_re.match(line).group(1)+'.10'
if ip not in ip_group:
ip_group.append(ip)
return ip_group
def bgp_he(ip):
head = {"Cookie":"__utmz=83743493.1663978643.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _gcl_au=1.1.907536628.1693559763; __utma=83743493.548144918.1663978643.1695298769.1698454506.25; _bgp_session=BAh7BzoPc2Vzc2lvbl9pZEkiJTgwYzE0YjYyMDhhMjQ1YjlhNzIxOTQyOTI0OTA0NTYzBjoGRUY6EF9jc3JmX3Rva2VuSSIxUW9vZkVxWnVNWjhXbVZGNEJRZXhraWNYdFFiZGU5bSt2cnV2SlFYY0pEaz0GOwZG--e0227e0bd55dde45f0a2af8ad25337e8b8075f43",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}
url=f'https://bgp.he.net/ip/{ip}'
resp=requests.get(url,headers=head)
content=resp.text
url_pattern=r'''<table>.*?<tbody>.*?<tr>.*<td><a href="/AS.*?>(?P<as_num>AS.*?)</a></td>.*?</tr>.*?<tbody>'''
url_re=re.compile(url_pattern,re.S)
if url_re.search(content):
as_num=url_re.search(content).group('as_num')
return as_num
def ip_pro(ip):
ip=netaddr.IPAddress(ip)
if ip.is_private():
return
else:
return bgp_he(ip)
def ip_dic(ips):
ip_dic={}
for ip in ips:
if ip not in ip_dic:
value=ip_pro(ip)
ip='.'.join(ip.split('.')[0:3])
ip_dic[ip]=value
return ip_dic
ip_group=ipv4_collect()
if __name__=='__main__':
ip_group=ipv4_collect()
ip_dics=ip_dic(ip_group)
for line in open('../result.txt'):
line=line.rstrip()
ip_re=re.compile(r'\d+\.\d+\.\d+\.\d+')
if ip_re.search(line):
ipv4=ip_re.search(line).group()
result=ip_dics.get('.'.join(ipv4.split('.')[0:3]))
if result:
result="["+result+"]"
print(line.replace(ipv4,ipv4+result))
else:
print(line)
else:
print(line)