1
Ringkasan Proyek GhostTrack
GhostTrack adalah alat CLI untuk information gathering seputar IP, nomor telepon, dan username. README menyebutnya "Useful tool to track location or mobile number, so this tool can be called osint or also information gathering" (README.md:1-21). Versi yang tercatat di README adalah Version 2.2 (README.md:6-72). Alat dijalankan langsung sebagai skrip: clone repository, pasang dependensi dengan pip3 install -r requirements.txt, lalu jalankan python3 GhostTR.py (README.md:21-273).
Bahan dan ketergantungan
requirements.txt hanya berisi dua baris, requests dan phonenumbers (requirements.txt:1-24). GhostTR.py mengimpor keduanya bersama json, time, os, dan stderr (GhostTR.py:9-155). Seluruh tampilan memakai kode warna ANSI yang disimpan di variabel pendek seperti Bl, Re, Gr, Ye, dan Wh (GhostTR.py:17-246). Langkah pemasangan lengkapnya ada di Instalasi dan Dependensi.
Peta modul GhostTR.py
Semua kode berada di satu berkas GhostTR.py tanpa kelas. Isinya tiga belas fungsi: satu dekorator is_option, empat fungsi menu, empat fungsi utilitas tampilan dan dispatch, satu daftar options, dan satu main sebagai pengendali. Diagram berikut memetakan ketergantungan antar bagian itu.
graph TD
entry["__main__ block"] --> main["main()"]
main --> option_banner["option()"]
main --> execute_option["execute_option(opt)"]
execute_option --> call_option["call_option(opt)"]
execute_option --> is_in_options["is_in_options(num)"]
call_option --> options[("options")]
options --> IP_Track["IP_Track()"]
options --> showIP["showIP()"]
options --> phoneGW["phoneGW()"]
options --> TrackLu["TrackLu()"]
options --> exit_fn["exit()"]
IP_Track --> ipwhois["ipwho.is"]
showIP --> ipify["api.ipify.org"]
TrackLu --> social["24 entri URL social media"]
phoneGW --> phonenumbers_lib["phonenumbers"]
IP_Track -.-> is_option["is_option(func)"]
showIP -.-> is_option
phoneGW -.-> is_option
TrackLu -.-> is_option
is_option --> run_banner["run_banner()"]
style entry fill:#2d7d46,color:#fff
style main fill:#2d7d46,color:#fff
style execute_option fill:#2d7d46,color:#fff
style call_option fill:#2d7d46,color:#fff
style options fill:#336791,color:#fff
style IP_Track fill:#8b5cf6,color:#fff
style showIP fill:#8b5cf6,color:#fff
style TrackLu fill:#8b5cf6,color:#fff
style phoneGW fill:#f59e0b,color:#000
style is_option fill:#f59e0b,color:#000
style exit_fn fill:#dc2626,color:#fff
%% fig: Peta modul GhostTR.py
%% desc: Menu masuk lewat main, diteruskan execute_option ke call_option yang membaca daftar options, lalu memanggil satu tracker; garis putus-putus menandai tracker yang dibungkus dekorator is_option.Garis putus-putus pada diagram adalah dekorator is_option: setiap fungsi menu yang ditandai @is_option akan menjalankan run_banner() lebih dulu, baru kemudian badan fungsinya (GhostTR.py:30-367). Mekanisme ini dibahas di Banner dan Dekorator is_option.
Menu dan fungsi yang melayani
Daftar options memuat lima entri berurutan, masing-masing dengan kunci num, text, dan func (GhostTR.py:180-2078).
num | text | func | Sumber data |
|---|---|---|---|
| 1 | IP Tracker | IP_Track | http://ipwho.is/{ip} |
| 2 | Show Your IP | showIP | https://api.ipify.org/ |
| 3 | Phone Number Tracker | phoneGW | pustaka lokal phonenumbers |
| 4 | Username Tracker | TrackLu | 24 entri URL social media |
| 0 | Exit | exit | tidak ada request |
Entri 0 langsung memanggil exit bawaan Python, sehingga tidak pernah melewati run_banner (GhostTR.py:202-2069). Pemilihan nomor dibaca di main sebagai int(input(...)), lalu diteruskan ke execute_option (GhostTR.py:296-30610). execute_option memanggil call_option, menahan layar dengan Press enter to continue, lalu memanggil main kembali; call_option sendiri memvalidasi nomor lewat is_in_options dan melempar ValueError('Option not found') bila tidak cocok (GhostTR.py:219-25611). Alur rinci tiap langkah ada di Alur Eksekusi Menu dan Validasi Opsi dan Loop Menu.
Cakupan tiap tracker
IP_Trackmembaca input IP lalu mengirimrequests.getkehttp://ipwho.is/{ip}dan mencetak 25 kolom hasilip_data(GhostTR.py:40-4512). Detailnya di IP Tracker.showIPhanya mengambilhttps://api.ipify.org/dan mencetakYour IP Adrress(GhostTR.py:169-17613). Detailnya di Show Your IP.phoneGWmem-parse nomor denganphonenumberslalu mencetak operator, timezone, dan format nomor (GhostTR.py:80-9614). Detailnya di Phone Number Tracker.TrackLumengiterasi daftarsocial_mediaberisi 24 entri dan mencatat URL yang berstatus200(GhostTR.py:126-15815). Detailnya di Username Tracker.
Dua hal patut diperhatikan sebelum memakai alat ini:
⚠️
phoneGWmenguncidefault_region = "ID"(GhostTR.py:80-9614). Nomor dari negara lain tetap ditafsirkan sebagai nomor Indonesia, sehinggaLocationdanOperatorbisa salah.
⚠️
TrackLumenganggapresponse.status_code == 200sebagai bukti username ditemukan (GhostTR.py:152-15816). Halaman login atau halaman error dengan status200akan terbaca sebagai akun yang ada, jadi hasilnya perlu diperiksa manual.
Daftar lengkap host yang dihubungi kedua tracker dan nilai konfigurasi yang dipakai ada di Peta Endpoint dan Konfigurasi. Penanganan ValueError dan KeyboardInterrupt yang membungkus seluruh alur ada di Penanganan Error dan Interupsi, sedangkan susunan berkas repository dijelaskan di Struktur Berkas dan Arsitektur.
Titik masuk eksekusi
main adalah satu-satunya pintu masuk: ia membersihkan layar lewat clear(), mencetak banner menu lewat option(), lalu meminta nomor opsi (GhostTR.py:296-30610). Pemanggilan main() dijaga oleh blok if __name__ == '__main__' yang membungkusnya dengan try/except KeyboardInterrupt, mencetak Exit, menunggu dua detik, lalu memanggil exit() (GhostTR.py:309-31517).