Spaces:
Running
Running
import gradio as gr | |
import requests | |
import phonenumbers | |
from phonenumbers import geocoder, carrier, timezone | |
import json | |
def track_ip(ip_address): | |
try: | |
response = requests.get(f"http://ip-api.com/json/{ip_address}") | |
data = response.json() | |
if data['status'] == 'success': | |
result = f"""IP Tracking Results: | |
Country: {data['country']} | |
Region: {data['regionName']} | |
City: {data['city']} | |
ZIP: {data['zip']} | |
Latitude: {data['lat']} | |
Longitude: {data['lon']} | |
ISP: {data['isp']} | |
Organization: {data['org']} | |
AS: {data['as']}""" | |
return result | |
else: | |
return "Error: Invalid IP address or tracking failed." | |
except Exception as e: | |
return f"Error: {str(e)}" | |
def track_phone(phone_number): | |
try: | |
# Parse the phone number | |
parsed_number = phonenumbers.parse(phone_number, None) | |
# Validate the phone number | |
if not phonenumbers.is_valid_number(parsed_number): | |
return "Error: Invalid phone number." | |
# Get location | |
location = geocoder.description_for_number(parsed_number, "en") | |
# Get carrier | |
carrier_name = carrier.name_for_number(parsed_number, "en") | |
# Get timezone | |
timezones = timezone.time_zones_for_number(parsed_number) | |
# Check if number is valid | |
is_valid = phonenumbers.is_valid_number(parsed_number) | |
# Check if number is possible | |
is_possible = phonenumbers.is_possible_number(parsed_number) | |
result = f"""Phone Tracking Results: | |
Number: {phone_number} | |
Valid: {is_valid} | |
Possible: {is_possible} | |
Location: {location} | |
Carrier: {carrier_name} | |
Timezones: {', '.join(timezones)}""" | |
return result | |
except Exception as e: | |
return f"Error: {str(e)}" | |
def track_username(username): | |
try: | |
# List of social media platforms to check | |
platforms = { | |
"GitHub": f"https://github.com/{username}", | |
"Twitter": f"https://twitter.com/{username}", | |
"Instagram": f"https://instagram.com/{username}", | |
"Reddit": f"https://reddit.com/user/{username}", | |
"Facebook": f"https://facebook.com/{username}", | |
} | |
results = [] | |
for platform, url in platforms.items(): | |
try: | |
response = requests.get(url, timeout=5) | |
if response.status_code == 200: | |
results.append(f"{platform}: Found - {url}") | |
else: | |
results.append(f"{platform}: Not Found") | |
except: | |
results.append(f"{platform}: Not Found") | |
return "\n".join(results) | |
except Exception as e: | |
return f"Error: {str(e)}" | |
with gr.Blocks(title="GhostTrack - OSINT Tool") as demo: | |
gr.Markdown(""" | |
# GhostTrack - OSINT Information Gathering Tool | |
Useful tool to track location or mobile number. This tool can be used for OSINT (Open Source Intelligence) and information gathering. | |
""") | |
with gr.Tab("IP Tracker"): | |
gr.Markdown(""" | |
### IP Address Tracker | |
Enter an IP address to get geolocation and ISP information. | |
""") | |
ip_input = gr.Textbox(label="IP Address", placeholder="Enter IP address (e.g., 8.8.8.8)") | |
ip_output = gr.Textbox(label="Tracking Results", lines=12) | |
ip_button = gr.Button("Track IP") | |
ip_button.click(fn=track_ip, inputs=ip_input, outputs=ip_output) | |
with gr.Tab("Phone Tracker"): | |
gr.Markdown(""" | |
### Phone Number Tracker | |
Enter a phone number with country code to get location and carrier information. | |
""") | |
phone_input = gr.Textbox(label="Phone Number", placeholder="Enter phone number with country code (e.g., +1234567890)") | |
phone_output = gr.Textbox(label="Tracking Results", lines=12) | |
phone_button = gr.Button("Track Phone") | |
phone_button.click(fn=track_phone, inputs=phone_input, outputs=phone_output) | |
with gr.Tab("Username Tracker"): | |
gr.Markdown(""" | |
### Username Tracker | |
Enter a username to check its presence on various social media platforms. | |
""") | |
username_input = gr.Textbox(label="Username", placeholder="Enter username (e.g., johnsmith)") | |
username_output = gr.Textbox(label="Tracking Results", lines=12) | |
username_button = gr.Button("Track Username") | |
username_button.click(fn=track_username, inputs=username_input, outputs=username_output) | |
gr.Markdown(""" | |
--- | |
**Note:** This tool is for educational purposes only. Please use responsibly and ethically. | |
""") | |
if __name__ == "__main__": | |
demo.launch() | |