mirror of
https://github.com/HunxByts/GhostTrack.git
synced 2026-09-20 11:33:33 +08:00
316 lines
11 KiB
Python
316 lines
11 KiB
Python
#!/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()
|