ghosttrack / app.py
seawolf2357's picture
Deploy from GitHub repository
257dfc5 verified
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()