From 5218d3d47fa1f98c89aece980e203d572ef651f2 Mon Sep 17 00:00:00 2001 From: TiredFromTelehack Date: Mon, 21 Oct 2024 22:11:39 +0200 Subject: [PATCH] Updated python script --- dump.pcap | Bin 0 -> 158047 bytes ipGeo.py | 104 +++- scan_result-2024-10-21.json | 926 ++++++++++++++++++++++++++++++++++++ 3 files changed, 1006 insertions(+), 24 deletions(-) create mode 100644 dump.pcap create mode 100644 scan_result-2024-10-21.json diff --git a/dump.pcap b/dump.pcap new file mode 100644 index 0000000000000000000000000000000000000000..5ec05389af8899aa4abd020fa2488b055556722d GIT binary patch literal 158047 zcmd?Sd0dsn`~QD%MHH3Nw6H=fTiIJg3?QMMj9pcsk*n&z&Rwr6GXBxBW~~dY

FN)PfJ{Ki@Sc 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 z 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 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