import os import re import requests import gradio as gr import logging import random import time import phonenumbers from phonenumbers import carrier, geocoder, timezone # --- 1. SETUP LOGGING --- logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) # --- 2. CONFIGURATION --- HEADER_IMG = "2.png" INDOOR_IMG = "in.jpg" USER_AGENTS = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" ] # --- 3. LOGIC --- def format_output(title, data_dict): """Memformat data agar sejajar sempurna secara vertikal.""" if not data_dict: return "❌ Data not available." max_key_len = max(len(str(key)) for key in data_dict.keys()) separator = "─" * 45 header = f" 🛡️ {title}\n{separator}\n" body = "" for key, value in data_dict.items(): body += f" {str(key).ljust(max_key_len)} : {value}\n" return header + body def start_tracking(mode, target): if not mode or not target: yield "❌ Error: Please select a Mode and enter a Target!", "" return yield f"📡 Initializing {mode}...", "Establishing secure connection..." time.sleep(1.0) if mode == "IP Tracker": yield "🔍 Scanning IP Address...", "Searching global database..." try: res = requests.get(f"http://ipwho.is/{target}", timeout=10) data = res.json() if not data.get("success"): yield "❌ Failed!", f"IP {target} not found or invalid." return info = { "IP Target" : data.get("ip"), "Country" : f"{data.get('country')} {data.get('flag', {}).get('emoji', '')}", "City" : data.get("city"), "ISP" : data.get("connection", {}).get("isp"), "Organization" : data.get("connection", {}).get("org"), "Timezone" : data.get("timezone", {}).get("id"), "Coordinates" : f"{data.get('latitude')}, {data.get('longitude')}", "Google Maps" : f"http://google.com/maps/place/{data.get('latitude')},{data.get('longitude')}" } yield "✅ Tracking Complete!", format_output("IP INTELLIGENCE REPORT", info) except Exception as e: yield "❌ Connection Error", str(e) elif mode == "Phone Tracker": yield "🔍 Analyzing Phone Number...", "Verifying international prefix..." try: parsed = phonenumbers.parse(target, None) if not phonenumbers.is_valid_number(parsed): yield "❌ Failed!", "Invalid or non-existent number. Use format (+62...)" return info = { "Number" : phonenumbers.format_number(parsed, phonenumbers.PhoneNumberFormat.INTERNATIONAL), "Location" : geocoder.description_for_number(parsed, "id"), "Carrier/Op" : carrier.name_for_number(parsed, "en"), "Timezone" : ", ".join(timezone.time_zones_for_number(parsed)), "Valid Status" : "Verified ✅", "Number Type" : "Mobile" if phonenumbers.number_type(parsed) == 1 else "Fixed Line" } yield "✅ Tracking Complete!", format_output("PHONE INTELLIGENCE REPORT", info) except Exception as e: yield "❌ Format Error", "Ensure the number starts with '+' and country code." # --- 4. CSS --- css = """ :root { --primary-600: #ff1212 !important; } .main-header { border: 2px solid #ff1212; border-radius: 12px; padding: 15px; background: white; text-align: center; margin-bottom: 15px; } .main-header h1 { color: #ff1212 !important; font-weight: 900 !important; font-size: 28px !important; margin: 0; } .section-tag { background: #ff1212; color: white; padding: 3px 12px; border-radius: 5px; font-size: 11px; font-weight: 700; display: inline-block; margin: 12px 0; } .char-btn { background: white !important; border-left: 5px solid #ff1212 !important; text-align: left !important; font-size: 14px !important; margin-bottom: 5px !important; width: 100%; color: #4a5568 !important; font-weight: bold !important; } .action-btn { background: #ff1212 !important; color: white !important; font-weight: 700 !important; border-radius: 10px !important; height: 50px !important; width: 100%; border: none !important; margin-top: 5px; cursor: pointer; } .result-box textarea { background: #0a0a0a !important; color: #ff1212 !important; font-family: 'Courier New', monospace !important; font-weight: bold !important; border: 1px solid #ff1212 !important; border-radius: 8px !important; } .warning-card { background: #fff5f5; border: 1px solid #feb2b2; border-radius: 10px; padding: 15px; margin: 10px 0; text-align: center; } .warning-header { color: #c53030; font-weight: 800; font-size: 14px; margin-bottom: 6px; } .warning-body { color: #9b2c2c; font-size: 12px; line-height: 1.5; font-weight: 600; } .note-card { background: #fffcf0; border: 1px solid #f5e6a3; border-radius: 10px; padding: 12px; margin-top: 20px; } .credit-footer { margin-top: 20px; padding: 10px; text-align: center; border-bottom: 4px solid #ff1212; color: #94a3b8; font-weight: 700; font-size: 12px; letter-spacing: 2px; } """ # --- 5. UI INTERFACE --- with gr.Blocks(css=css) as app: with gr.Column(scale=1): gr.HTML("""

TRACK ATTACK 🔥

Advanced Intelligence Gathering Tool

""") if os.path.exists(HEADER_IMG): gr.Image(HEADER_IMG, show_label=False, interactive=False, height=160) gr.HTML('
PILIH MODE LACAK
') sel_mode = gr.State("") mode_display = gr.Markdown("📍 *Status: Select Track (Number Phone or IP Track)*") with gr.Row(): btn_ip = gr.Button("🌐 IP Tracker", elem_classes="char-btn") btn_phone = gr.Button("📞 Phone Tracker", elem_classes="char-btn") btn_ip.click(fn=lambda: ("IP Tracker", "📍 Mode: **IP Tracker Selected**"), outputs=[sel_mode, mode_display]) btn_phone.click(fn=lambda: ("Phone Tracker", "📍 Mode: **Phone Number Selected**"), outputs=[sel_mode, mode_display]) target_input = gr.Textbox(label="Target Input", placeholder="Enter IP (e.g. 8.8.8.8) or Phone (e.g. +62...)") # TAMPILAN PERINGATAN (Center & Updated) gr.HTML("""
🔖 MINNA ADVISORY 🔖
To track a number, you must start with the country code!
For example (Indonesia): +6282274510026.
Please ensure it matches the respective country's format. ✨

Make sure you enter it correctly; if the number or IP is wrong or does not exist, the tracking will fail.
""") btn_track = gr.Button("STARTING TRACK 🔥", elem_classes="action-btn") gr.HTML('
GHOSTTRACK / Results Scan
') status_out = gr.Textbox(label="System Status", interactive=False) track_output = gr.TextArea(label="Intelligence Report", interactive=False, lines=10, elem_classes="result-box") if os.path.exists(INDOOR_IMG): gr.Image(INDOOR_IMG, show_label=False, interactive=False, height=180) btn_track.click(fn=start_tracking, inputs=[sel_mode, target_input], outputs=[status_out, track_output]) gr.HTML("""
⚠️ DISCLAIMER
"This tool is for educational purposes. Tools ini tidak akurat 100% because data depends on public databases and provider changes. Use wisely."
""") gr.HTML("""""") if __name__ == "__main__": app.launch(server_name="0.0.0.0", server_port=7860)