Lompat ke konten
dokumentasi.id
Commit a5cb8ad
v2
Star20 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

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-2). Versi yang tercatat di README adalah Version 2.2 (README.md:6-7). Alat dijalankan langsung sebagai skrip: clone repository, pasang dependensi dengan pip3 install -r requirements.txt, lalu jalankan python3 GhostTR.py (README.md:21-27).

Bahan dan ketergantungan

requirements.txt hanya berisi dua baris, requests dan phonenumbers (requirements.txt:1-2). GhostTR.py mengimpor keduanya bersama json, time, os, dan stderr (GhostTR.py:9-15). Seluruh tampilan memakai kode warna ANSI yang disimpan di variabel pendek seperti Bl, Re, Gr, Ye, dan Wh (GhostTR.py:17-24). 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.
Fig. 1: Peta modul GhostTR.pyMenu 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-36). Mekanisme ini dibahas di Banner dan Dekorator is_option.

Daftar options memuat lima entri berurutan, masing-masing dengan kunci num, text, dan func (GhostTR.py:180-207).

numtextfuncSumber data
1IP TrackerIP_Trackhttp://ipwho.is/{ip}
2Show Your IPshowIPhttps://api.ipify.org/
3Phone Number TrackerphoneGWpustaka lokal phonenumbers
4Username TrackerTrackLu24 entri URL social media
0Exitexittidak ada request

Entri 0 langsung memanggil exit bawaan Python, sehingga tidak pernah melewati run_banner (GhostTR.py:202-206). Pemilihan nomor dibaca di main sebagai int(input(...)), lalu diteruskan ke execute_option (GhostTR.py:296-306). 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-256). Alur rinci tiap langkah ada di Alur Eksekusi Menu dan Validasi Opsi dan Loop Menu.

Cakupan tiap tracker

Dua hal patut diperhatikan sebelum memakai alat ini:

⚠️ phoneGW mengunci default_region = "ID" (GhostTR.py:80-96). Nomor dari negara lain tetap ditafsirkan sebagai nomor Indonesia, sehingga Location dan Operator bisa salah.

⚠️ TrackLu menganggap response.status_code == 200 sebagai bukti username ditemukan (GhostTR.py:152-158). Halaman login atau halaman error dengan status 200 akan 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-306). 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-315).