Repository: HunxByts/GhostTrack
Branch: main
Commit: a5cb8ad4c08a
Files: 4
Total size: 12.7 KB
Directory structure:
gitextract_0alvup8s/
├── GhostTR.py
├── README.md
├── asset/
│ └── text
└── requirements.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: GhostTR.py
================================================
#!/usr/bin/python
# << CODE BY HUNX04
# << MAU RECODE ??? IZIN DULU LAH, MINIMAL TAG AKUN GITHUB MIMIN YANG MENGARAH KE AKUN INI, LEBIH GAMPANG SI PAKE FORK
# << KALAU DI ATAS TIDAK DI IKUTI MAKA AKAN MENDAPATKAN DOSA KARENA MIMIN GAK IKHLAS
# “Wahai orang-orang yang beriman! Janganlah kamu saling memakan harta sesamamu dengan jalan yang batil,” (QS. An Nisaa': 29). Rasulullah SAW juga melarang umatnya untuk mengambil hak orang lain tanpa izin.
# IMPORT MODULE
import json
import requests
import time
import os
import phonenumbers
from phonenumbers import carrier, geocoder, timezone
from sys import stderr
Bl = '\033[30m' # VARIABLE BUAT WARNA CUYY
Re = '\033[1;31m'
Gr = '\033[1;32m'
Ye = '\033[1;33m'
Blu = '\033[1;34m'
Mage = '\033[1;35m'
Cy = '\033[1;36m'
Wh = '\033[1;37m'
# utilities
# decorator for attaching run_banner to a function
def is_option(func):
def wrapper(*args, **kwargs):
run_banner()
func(*args, **kwargs)
return wrapper
# FUNCTIONS FOR MENU
@is_option
def IP_Track():
ip = input(f"{Wh}\n Enter IP target : {Gr}") # INPUT IP ADDRESS
print()
print(f' {Wh}============= {Gr}SHOW INFORMATION IP ADDRESS {Wh}=============')
req_api = requests.get(f"http://ipwho.is/{ip}") # API IPWHOIS.IS
ip_data = json.loads(req_api.text)
time.sleep(2)
print(f"{Wh}\n IP target :{Gr}", ip)
print(f"{Wh} Type IP :{Gr}", ip_data["type"])
print(f"{Wh} Country :{Gr}", ip_data["country"])
print(f"{Wh} Country Code :{Gr}", ip_data["country_code"])
print(f"{Wh} City :{Gr}", ip_data["city"])
print(f"{Wh} Continent :{Gr}", ip_data["continent"])
print(f"{Wh} Continent Code :{Gr}", ip_data["continent_code"])
print(f"{Wh} Region :{Gr}", ip_data["region"])
print(f"{Wh} Region Code :{Gr}", ip_data["region_code"])
print(f"{Wh} Latitude :{Gr}", ip_data["latitude"])
print(f"{Wh} Longitude :{Gr}", ip_data["longitude"])
lat = int(ip_data['latitude'])
lon = int(ip_data['longitude'])
print(f"{Wh} Maps :{Gr}", f"https://www.google.com/maps/@{lat},{lon},8z")
print(f"{Wh} EU :{Gr}", ip_data["is_eu"])
print(f"{Wh} Postal :{Gr}", ip_data["postal"])
print(f"{Wh} Calling Code :{Gr}", ip_data["calling_code"])
print(f"{Wh} Capital :{Gr}", ip_data["capital"])
print(f"{Wh} Borders :{Gr}", ip_data["borders"])
print(f"{Wh} Country Flag :{Gr}", ip_data["flag"]["emoji"])
print(f"{Wh} ASN :{Gr}", ip_data["connection"]["asn"])
print(f"{Wh} ORG :{Gr}", ip_data["connection"]["org"])
print(f"{Wh} ISP :{Gr}", ip_data["connection"]["isp"])
print(f"{Wh} Domain :{Gr}", ip_data["connection"]["domain"])
print(f"{Wh} ID :{Gr}", ip_data["timezone"]["id"])
print(f"{Wh} ABBR :{Gr}", ip_data["timezone"]["abbr"])
print(f"{Wh} DST :{Gr}", ip_data["timezone"]["is_dst"])
print(f"{Wh} Offset :{Gr}", ip_data["timezone"]["offset"])
print(f"{Wh} UTC :{Gr}", ip_data["timezone"]["utc"])
print(f"{Wh} Current Time :{Gr}", ip_data["timezone"]["current_time"])
@is_option
def phoneGW():
User_phone = input(
f"\n {Wh}Enter phone number target {Gr}Ex [+6281xxxxxxxxx] {Wh}: {Gr}") # INPUT NUMBER PHONE
default_region = "ID" # DEFAULT NEGARA INDONESIA
parsed_number = phonenumbers.parse(User_phone, default_region) # VARIABLE PHONENUMBERS
region_code = phonenumbers.region_code_for_number(parsed_number)
jenis_provider = carrier.name_for_number(parsed_number, "en")
location = geocoder.description_for_number(parsed_number, "id")
is_valid_number = phonenumbers.is_valid_number(parsed_number)
is_possible_number = phonenumbers.is_possible_number(parsed_number)
formatted_number = phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
formatted_number_for_mobile = phonenumbers.format_number_for_mobile_dialing(parsed_number, default_region,
with_formatting=True)
number_type = phonenumbers.number_type(parsed_number)
timezone1 = timezone.time_zones_for_number(parsed_number)
timezoneF = ', '.join(timezone1)
print(f"\n {Wh}========== {Gr}SHOW INFORMATION PHONE NUMBERS {Wh}==========")
print(f"\n {Wh}Location :{Gr} {location}")
print(f" {Wh}Region Code :{Gr} {region_code}")
print(f" {Wh}Timezone :{Gr} {timezoneF}")
print(f" {Wh}Operator :{Gr} {jenis_provider}")
print(f" {Wh}Valid number :{Gr} {is_valid_number}")
print(f" {Wh}Possible number :{Gr} {is_possible_number}")
print(f" {Wh}International format :{Gr} {formatted_number}")
print(f" {Wh}Mobile format :{Gr} {formatted_number_for_mobile}")
print(f" {Wh}Original number :{Gr} {parsed_number.national_number}")
print(
f" {Wh}E.164 format :{Gr} {phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.E164)}")
print(f" {Wh}Country code :{Gr} {parsed_number.country_code}")
print(f" {Wh}Local number :{Gr} {parsed_number.national_number}")
if number_type == phonenumbers.PhoneNumberType.MOBILE:
print(f" {Wh}Type :{Gr} This is a mobile number")
elif number_type == phonenumbers.PhoneNumberType.FIXED_LINE:
print(f" {Wh}Type :{Gr} This is a fixed-line number")
else:
print(f" {Wh}Type :{Gr} This is another type of number")
@is_option
def TrackLu():
try:
username = input(f"\n {Wh}Enter Username : {Gr}")
results = {}
social_media = [
{"url": "https://www.facebook.com/{}", "name": "Facebook"},
{"url": "https://www.twitter.com/{}", "name": "Twitter"},
{"url": "https://www.instagram.com/{}", "name": "Instagram"},
{"url": "https://www.linkedin.com/in/{}", "name": "LinkedIn"},
{"url": "https://www.github.com/{}", "name": "GitHub"},
{"url": "https://www.pinterest.com/{}", "name": "Pinterest"},
{"url": "https://www.tumblr.com/{}", "name": "Tumblr"},
{"url": "https://www.youtube.com/{}", "name": "Youtube"},
{"url": "https://soundcloud.com/{}", "name": "SoundCloud"},
{"url": "https://www.snapchat.com/add/{}", "name": "Snapchat"},
{"url": "https://www.tiktok.com/@{}", "name": "TikTok"},
{"url": "https://www.behance.net/{}", "name": "Behance"},
{"url": "https://www.medium.com/@{}", "name": "Medium"},
{"url": "https://www.quora.com/profile/{}", "name": "Quora"},
{"url": "https://www.flickr.com/people/{}", "name": "Flickr"},
{"url": "https://www.periscope.tv/{}", "name": "Periscope"},
{"url": "https://www.twitch.tv/{}", "name": "Twitch"},
{"url": "https://www.dribbble.com/{}", "name": "Dribbble"},
{"url": "https://www.stumbleupon.com/stumbler/{}", "name": "StumbleUpon"},
{"url": "https://www.ello.co/{}", "name": "Ello"},
{"url": "https://www.producthunt.com/@{}", "name": "Product Hunt"},
{"url": "https://www.snapchat.com/add/{}", "name": "Snapchat"},
{"url": "https://www.telegram.me/{}", "name": "Telegram"},
{"url": "https://www.weheartit.com/{}", "name": "We Heart It"}
]
for site in social_media:
url = site['url'].format(username)
response = requests.get(url)
if response.status_code == 200:
results[site['name']] = url
else:
results[site['name']] = (f"{Ye}Username not found {Ye}!")
except Exception as e:
print(f"{Re}Error : {e}")
return
print(f"\n {Wh}========== {Gr}SHOW INFORMATION USERNAME {Wh}==========")
print()
for site, url in results.items():
print(f" {Wh}[ {Gr}+ {Wh}] {site} : {Gr}{url}")
@is_option
def showIP():
respone = requests.get('https://api.ipify.org/')
Show_IP = respone.text
print(f"\n {Wh}========== {Gr}SHOW INFORMATION YOUR IP {Wh}==========")
print(f"\n {Wh}[{Gr} + {Wh}] Your IP Adrress : {Gr}{Show_IP}")
print(f"\n {Wh}==============================================")
# OPTIONS
options = [
{
'num': 1,
'text': 'IP Tracker',
'func': IP_Track
},
{
'num': 2,
'text': 'Show Your IP',
'func': showIP
},
{
'num': 3,
'text': 'Phone Number Tracker',
'func': phoneGW
},
{
'num': 4,
'text': 'Username Tracker',
'func': TrackLu
},
{
'num': 0,
'text': 'Exit',
'func': exit
}
]
def clear():
# for windows
if os.name == 'nt':
_ = os.system('cls')
# for mac and linux
else:
_ = os.system('clear')
def call_option(opt):
if not is_in_options(opt):
raise ValueError('Option not found')
for option in options:
if option['num'] == opt:
if 'func' in option:
option['func']()
else:
print('No function detected')
def execute_option(opt):
try:
call_option(opt)
input(f'\n{Wh}[ {Gr}+ {Wh}] {Gr}Press enter to continue')
main()
except ValueError as e:
print(e)
time.sleep(2)
execute_option(opt)
except KeyboardInterrupt:
print(f'\n{Wh}[ {Re}! {Wh}] {Re}Exit')
time.sleep(2)
exit()
def option_text():
text = ''
for opt in options:
text += f'{Wh}[ {opt["num"]} ] {Gr}{opt["text"]}\n'
return text
def is_in_options(num):
for opt in options:
if opt['num'] == num:
return True
return False
def option():
# BANNER TOOLS
clear()
stderr.writelines(f"""
________ __ ______ __
/ ____/ /_ ____ _____/ /_ /_ __/________ ______/ /__
/ / __/ __ \/ __ \/ ___/ __/_____/ / / ___/ __ `/ ___/ //_/
/ /_/ / / / / /_/ (__ ) /_/_____/ / / / / /_/ / /__/ ,<
\____/_/ /_/\____/____/\__/ /_/ /_/ \__,_/\___/_/|_|
{Wh}[ + ] C O D E B Y H U N X [ + ]
""")
stderr.writelines(f"\n\n\n{option_text()}")
def run_banner():
clear()
time.sleep(1)
stderr.writelines(f"""{Wh}
.-.
.' `. {Wh}--------------------------------
:g g : {Wh}| {Gr}GHOST - TRACKER - IP ADDRESS {Wh}|
: o `. {Wh}| {Gr}@CODE BY HUNXBYTS {Wh}|
: ``. {Wh}--------------------------------
: `.
: : . `.
: : ` . `.
`.. : `. ``;
`:; `:'
: `.
`. `. .
`'`'`'`---..,___`;.-'
""")
time.sleep(0.5)
def main():
clear()
option()
time.sleep(1)
try:
opt = int(input(f"{Wh}\n [ + ] {Gr}Select Option : {Wh}"))
execute_option(opt)
except ValueError:
print(f'\n{Wh}[ {Re}! {Wh}] {Re}Please input number')
time.sleep(2)
main()
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print(f'\n{Wh}[ {Re}! {Wh}] {Re}Exit')
time.sleep(2)
exit()
================================================
FILE: README.md
================================================
# GhostTrack
Useful tool to track location or mobile number, so this tool can be called osint or also information gathering
<img src="https://github.com/HunxByts/GhostTrack/blob/main/asset/bn.png"/>
New update :
```Version 2.2```
### Instalation on Linux (deb)
```
sudo apt-get install git
sudo apt-get install python3
```
### Instalation on Termux
```
pkg install git
pkg install python3
```
### Usage Tool
```
git clone https://github.com/HunxByts/GhostTrack.git
cd GhostTrack
pip3 install -r requirements.txt
python3 GhostTR.py
```
Display on the menu ```IP Tracker```
<img src="https://github.com/HunxByts/GhostTrack/blob/main/asset/ip.png " />
on the IP Track menu, you can combo with the seeker tool to get the target IP
<details>
<summary>:zap: Install Seeker :</summary>
- <strong><a href="https://github.com/thewhiteh4t/seeker">Get Seeker</a></strong>
</details>
Display on the menu ```Phone Tracker```
<img src="https://github.com/HunxByts/GhostTrack/blob/main/asset/phone.png" />
on this menu you can search for information from the target phone number
Display on the menu ```Username Tracker```
<img src="https://github.com/HunxByts/GhostTrack/blob/main/asset/User.png"/>
on this menu you can search for information from the target username on social media
<details>
<summary>:zap: Author :</summary>
- <strong><a href="https://github.com/HunxByts">HunxByts</a></strong>
</details>
================================================
FILE: asset/text
================================================
Image..
================================================
FILE: requirements.txt
================================================
requests
phonenumbers
gitextract_0alvup8s/ ├── GhostTR.py ├── README.md ├── asset/ │ └── text └── requirements.txt
SYMBOL INDEX (13 symbols across 1 files) FILE: GhostTR.py function is_option (line 30) | def is_option(func): function IP_Track (line 41) | def IP_Track(): function phoneGW (line 81) | def phoneGW(): function TrackLu (line 122) | def TrackLu(): function showIP (line 170) | def showIP(): function clear (line 210) | def clear(): function call_option (line 219) | def call_option(opt): function execute_option (line 230) | def execute_option(opt): function option_text (line 245) | def option_text(): function is_in_options (line 252) | def is_in_options(num): function option (line 259) | def option(): function run_banner (line 275) | def run_banner(): function main (line 296) | def main():
Condensed preview — 4 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (14K chars).
[
{
"path": "GhostTR.py",
"chars": 11555,
"preview": "#!/usr/bin/python\n# << CODE BY HUNX04\n# << MAU RECODE ??? IZIN DULU LAH, MINIMAL TAG AKUN GITHUB MIMIN YANG MENGARAH KE"
},
{
"path": "README.md",
"chars": 1408,
"preview": "# GhostTrack\nUseful tool to track location or mobile number, so this tool can be called osint or also information gather"
},
{
"path": "asset/text",
"chars": 8,
"preview": "Image..\n"
},
{
"path": "requirements.txt",
"chars": 22,
"preview": "requests\nphonenumbers\n"
}
]
About this extraction
This page contains the full source code of the HunxByts/GhostTrack GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4 files (12.7 KB), approximately 3.7k tokens, and a symbol index with 13 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.