diff --git a/dump.pcap b/dump.pcap new file mode 100644 index 0000000..5ec0538 Binary files /dev/null and b/dump.pcap differ diff --git a/ipGeo.py b/ipGeo.py index fd6f2c5..82be1ae 100644 --- a/ipGeo.py +++ b/ipGeo.py @@ -6,17 +6,52 @@ import argparse from colorama import Fore from datetime import date import ipaddress +import subprocess + + +def get_local_ips(): + """Retrieve a list of local IPs and their subnets.""" + local_ips = set() + local_subnets = set() + + # Using 'ifconfig' to get all local IPs + try: + output = subprocess.check_output("ifconfig", universal_newlines=True) + for line in output.splitlines(): + if "inet " in line and not line.strip().startswith("inet6"): + parts = line.split() + if len(parts) >= 2: + ip = parts[1] + local_ips.add(ip) + # Get the subnet mask + netmask_index = line.index("netmask") + len("netmask") + netmask = line[netmask_index:line.index(" ", netmask_index)].strip() + + # Ensure that netmask is a valid value + if ip and netmask: + # Calculate the subnet and add it to the set + try: + subnet = ipaddress.ip_network(f"{ip}/{netmask}", strict=False) + local_subnets.add(subnet) + except ValueError as e: + print(Fore.RED + f"[!] Error creating subnet for IP {ip} with netmask {netmask}: {str(e)}") + + except Exception as e: + print(Fore.RED + f"[!] Error fetching local IPs: {str(e)}") + + return local_ips, local_subnets + def read_pcap(pcap_file, output_format): - ips = [] + ips = set() # Use a set to avoid duplicates try: pcap = pyshark.FileCapture(pcap_file) print(Fore.GREEN + "[+] Pcap File is valid") for packet in pcap: - if "IP" in packet: - ips.append(packet.ip.src) - ips.append(packet["ip"].dst) - + if "IP" in packet: + ips.add(packet.ip.src) # Add source IP + ips.add(packet["ip"].dst) # Add destination IP + ips_list(ips, output_format) except FileNotFoundError: @@ -24,19 +59,25 @@ def read_pcap(pcap_file, output_format): def ips_list(ips, output_format): + local_ips, local_subnets = get_local_ips() ips_lists = [] aborted_ips = [] for ip in ips: - if ip not in ips_lists and ipaddress.ip_address(ip).is_global: - ips_lists.append(ip) - elif ip not in aborted_ips and ipaddress.ip_address(ip).is_private: + # Check if IP is private or matches local IPs or subnets + if ipaddress.ip_address(ip).is_private or ip in local_ips or any(ipaddress.ip_address(ip) in subnet for subnet in local_subnets): aborted_ips.append(ip) - + continue + + # Check if IP is global + if ipaddress.ip_address(ip).is_global: + ips_lists.append(ip) + + # Inform about removed IPs for ip in aborted_ips: print(Fore.YELLOW + "[!] Remove " + Fore.RED + ip + Fore.YELLOW + ' From Scanning') - + if len(ips_lists) < 1: - exit(Fore.RED + "[-] No IP to scan.") + exit(Fore.RED + "[-] No global IPs to scan.") get_ip_info(ips_lists, output_format) @@ -46,22 +87,37 @@ def get_ip_info(list_ip, output_format): for ip in list_ip: print(Fore.YELLOW + "[+] Start analyzing IP : " + ip) try: - req = requests.get("http://ip-api.com/json/" + ip + "?fields=status,message,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,isp,org,as,asname,reverse,mobile,proxy,hosting,query").content.decode() - if "message" not in req: - data.append(req) + req = requests.get("http://ip-api.com/json/" + ip + "?fields=status,message,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,isp,org,as,asname,reverse,mobile,proxy,hosting,query") + req_content = req.content.decode() + + # Check if the response is valid JSON + if req.status_code == 200 and req_content: + try: + json_data = json.loads(req_content) + if json_data.get("status") == "success": + # Skip IPs from hosting providers + if json_data.get("isp") and "Hosting" in json_data.get("isp"): + print(Fore.YELLOW + f"[!] Skipping hosting IP: {ip} - ISP: {json_data['isp']}") + continue + + data.append(json_data) + else: + print(Fore.RED + f"[!] Error for IP {ip}: {json_data.get('message', 'Unknown error')}") + except json.JSONDecodeError: + print(Fore.RED + f"[!] Error decoding JSON for IP {ip}. Response content: {req_content}") + else: + print(Fore.RED + f"[!] Request failed for IP {ip}: {req_content}") + except requests.exceptions.ConnectionError: exit(Fore.RED + "Check your internet connection and try again ....") - - dic_data = [] - for i in data: - l = json.loads(i) - dic_data.append(l) - export_result(dic_data, output_format) + if data: # Proceed to export only if data is collected + export_result(data, output_format) + else: + print(Fore.YELLOW + "[-] No valid IP data to export.") def export_result(data, output_format): - # Modify this part to export in different formats if output_format == 'json': with open('scan_result-' + str(date.today()) + '.json', 'w', encoding='UTF8') as f: json.dump(data, f, indent=4) @@ -87,11 +143,11 @@ def main(): parser = argparse.ArgumentParser(description='Extract IP addresses from pcap files and geolocate them.') parser.add_argument('pcap', help='Path to the pcap file.') parser.add_argument('--format', choices=['json', 'csv', 'txt', 'md'], default='json', help='Output format (default: json).') - + args = parser.parse_args() - + read_pcap(args.pcap, args.format) + if __name__ == "__main__": main() - diff --git a/scan_result-2024-10-21.json b/scan_result-2024-10-21.json new file mode 100644 index 0000000..65ead35 --- /dev/null +++ b/scan_result-2024-10-21.json @@ -0,0 +1,926 @@ +[ + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "45.88.88.50" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "85.31.47.255" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "178.215.224.75" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.116.232" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.126.241" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "45.149.241.70" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "178.215.224.16" + }, + { + "status": "success", + "country": "Bulgaria", + "countryCode": "BG", + "region": "21", + "regionName": "Smolyan", + "city": "Dospat", + "district": "", + "zip": "4831", + "lat": 41.6543, + "lon": 24.1576, + "timezone": "Europe/Sofia", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.156.105.30" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.116.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt Am Main", + "district": "", + "zip": "60313", + "lat": 50.1153, + "lon": 8.6805, + "timezone": "Europe/Berlin", + "isp": "IP-Projects GmbH & Co. KG", + "org": "Gwy It Pty Ltd", + "as": "AS48314 Michael Sebastian Schinzel trading as IP-Projects GmbH & Co. KG", + "asname": "IP-PROJECTS", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "194.48.251.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.121.86.255" + }, + { + "status": "success", + "country": "United States", + "countryCode": "US", + "region": "KS", + "regionName": "Kansas", + "city": "Olathe", + "district": "", + "zip": "66061", + "lat": 38.8868, + "lon": -94.8223, + "timezone": "America/Chicago", + "isp": "Comcast Cable Communications", + "org": "Comcast IP Services, L.L.C.", + "as": "AS7922 Comcast Cable Communications, LLC", + "asname": "COMCAST-7922", + "reverse": "c-73-67-50-23.hsd1.mo.comcast.net", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "73.67.50.23" + }, + { + "status": "success", + "country": "Bulgaria", + "countryCode": "BG", + "region": "21", + "regionName": "Smolyan", + "city": "Dospat", + "district": "", + "zip": "4831", + "lat": 41.6543, + "lon": 24.1576, + "timezone": "Europe/Sofia", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.156.105.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.114.211" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.127.3" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "178.215.224.157" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "178.215.224.8" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.125.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.114.255" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "81.161.238.9" + }, + { + "status": "success", + "country": "Bulgaria", + "countryCode": "BG", + "region": "21", + "regionName": "Smolyan", + "city": "Dospat", + "district": "", + "zip": "4831", + "lat": 41.6543, + "lon": 24.1576, + "timezone": "Europe/Sofia", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.156.104.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "93.123.109.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.121.86.85" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.115.135" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.115.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.127.255" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "85.31.47.131" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Neterra Ltd", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "178.215.224.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.156.167.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "45.149.241.255" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "81.161.238.255" + }, + { + "status": "success", + "country": "Bulgaria", + "countryCode": "BG", + "region": "21", + "regionName": "Smolyan", + "city": "Dospat", + "district": "", + "zip": "4831", + "lat": 41.6543, + "lon": 24.1576, + "timezone": "Europe/Sofia", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.156.104.101" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "178.215.224.124" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt Am Main", + "district": "", + "zip": "60313", + "lat": 50.1153, + "lon": 8.6805, + "timezone": "Europe/Berlin", + "isp": "IP-Projects GmbH & Co. KG", + "org": "Gwy It Pty Ltd", + "as": "AS48314 Michael Sebastian Schinzel trading as IP-Projects GmbH & Co. KG", + "asname": "IP-PROJECTS", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "194.48.251.133" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.127.124" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.156.167.140" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "45.88.88.255" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "93-123-109-141.sarnica.net", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "93.123.109.141" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "EKABI", + "org": "Ekabi LLC", + "as": "AS401115 EKABI", + "asname": "EKABI", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "87.120.125.219" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "94.103.125.239" + }, + { + "status": "success", + "country": "Germany", + "countryCode": "DE", + "region": "HE", + "regionName": "Hesse", + "city": "Frankfurt am Main", + "district": "", + "zip": "60313", + "lat": 50.1109, + "lon": 8.68213, + "timezone": "Europe/Berlin", + "isp": "cheapy.host LLC", + "org": "CHEAPY.HOST", + "as": "AS401120 cheapy.host LLC", + "asname": "CHEAPY-HOST", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "93.123.39.120" + }, + { + "status": "success", + "country": "The Netherlands", + "countryCode": "NL", + "region": "NH", + "regionName": "North Holland", + "city": "Amsterdam", + "district": "", + "zip": "1017", + "lat": 52.364, + "lon": 4.8913, + "timezone": "Europe/Amsterdam", + "isp": "Nybula LLC", + "org": "Nybula LLC", + "as": "AS401116 Nybula LLC", + "asname": "NYBULA", + "reverse": "", + "mobile": false, + "proxy": false, + "hosting": false, + "query": "81.161.238.219" + } +] \ No newline at end of file