# Author: Kerry Cordero # Version: 1.0.0 # Description: This script will use RIPE to Research IP Subnet (BGP AS, Geolocation, Reverse DNS, CIDR Block, & Registration) import requests import json def user_input(): ip_address = input('Enter the IP address to query: ') return ip_address def query_ripe(ip_address): rev_dns_record = 'No reverse record found' asinfo_result = 'No AS information found' as_text = 'None' ipinfo = requests.get(f"https://stat.ripe.net/data/network-info/data.json?resource={ip_address}") if ipinfo.status_code == 200: ipinfo_data = ipinfo.json() if ipinfo_data['data']['asns'] != []: as_number = ipinfo_data['data']['asns'] as_text = ''.join(as_number) asinfo = requests.get(f"https://stat.ripe.net/data/as-overview/data.json?resource=AS{as_text}") if asinfo.status_code == 200: asinfo_data = asinfo.json() asinfo_result = asinfo_data['data']['holder'] rev_dns = requests.get(f"https://stat.ripe.net/data/reverse-dns-ip/data.json?resource={ip_address}") if rev_dns.status_code == 200: rev_dns_data = rev_dns.json() rev_dns_result = rev_dns_data['data']['result'] if rev_dns_result is not None: rev_dns_record = ''.join(rev_dns_result) geoloc = requests.get(f"https://stat.ripe.net/data/geoloc/data.json?resource={ip_address}") if geoloc.status_code == 200: geoloc_data = geoloc.json() location = geoloc_data['data']['located_resources'] location_data = dict(location[0]) locations = location_data['locations'] country_data = locations[0] country = country_data['country'] print(f''' Results for IP address: {ip_address} CIDR address block: {ipinfo_data['data']['prefix']} Announced by BGP AS: {as_text} Registration information: {asinfo_result} Reverse DNS Lookup: {rev_dns_record} Geolocation country: {country}''') print(''' -------------------------------------------------------------------------------------------- ''') print(''' -------------------------------------------------------------------------------------------- This script will gather background information on an IP address using the RIPEStat API ''') ip_address = user_input() query_ripe(ip_address)
EXAMPLE OUTPUT:
Enter the IP address to query: 4.2.2.0/24 Results for IP address: 4.2.2.0/24 CIDR address block: 4.0.0.0/9 Announced by BGP AS: 3356 Registration information: LEVEL3 Reverse DNS Lookup: No reverse record found Geolocation country: US