GhostTrack is a JavaScript (Node.js) command-line assistant for network reconnaissance, digital footprint checks, and OSINT-style lookups. It provides four interactive menus: IP geolocation, your public IP, phone-number metadata (parsed with libphonenumber-js), and username URL checks across common social platforms.
Responsible use. Only investigate systems, identifiers, or accounts you own or are explicitly authorized to test. Comply with local laws and platform terms. This tool uses public HTTP APIs and metadata-only parsing — it does not bypass logins or return live GPS fixes. Carrier names are not included here (they required the legacy Python
phonenumberscarrier database).
Keywords: Node.js CLI OSINT, IP geolocation JavaScript, ipwho, ipify, phone parsing libphonenumber-js, username enumeration URLs, Termux Node.
Canonical repository: https://github.com/warpdot-dev/ghosttrack
Current release: v2.2 (CLI entrypoint: GhostTR.mjs)
- Requirements
- Install on Linux
- Install on Termux (Android)
- Install on Windows
- Run
- Features
- Dependencies
- Migrating from the old Python version
- Related tooling
- Project layout
- Credits
- Node.js 18.17+ (
fetch,AbortSignal.timeout, ES modules). - Network access for
https://ipwho.is,https://api.ipify.org, and social sites (username mode).
sudo apt-get update
sudo apt-get install -y git curl
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - # or use distro Node 18+
sudo apt-get install -y nodejs git
git clone https://github.com/warpdot-dev/ghosttrack.git
cd ghosttrack
npm installpkg update && pkg install -y git nodejs-lts
git clone https://github.com/warpdot-dev/ghosttrack.git
cd ghosttrack
npm installInstall Node.js LTS (≥ 18.17), then:
git clone https://github.com/warpdot-dev/ghosttrack.git
cd ghosttrack
npm installnpm startOr directly:
node GhostTR.mjsAfter the menu appears, enter 1–4 or 0 to exit. Select an option from the numbered list printed in the terminal.
| Menu | What it does |
|---|---|
| IP Tracker | Resolves enrichment data via https://ipwho.is (maps link uses truncated lat/lon like the legacy script). |
| Show Your IP | Displays egress IP via https://api.ipify.org. |
| Phone Number Tracker | Parses numbers with libphonenumber-js/max (default region ID for ambiguous input). Prints validity, formatting, country/region labels (Intl.DisplayNames), and country-level timezone names (countries-and-timezones). Mobile network operator/carrier strings are not mirrored — that data lived in Python’s phonenumbers carrier tables only. |
| Username Tracker | GETs canonical profile URLs per platform; HTTP 200 is treated as a possible profile page (still a hint, not proof of ownership). |
Pure JavaScript runtime code in GhostTR.mjs; npm bundles:
| Package | Role |
|---|---|
libphonenumber-js (+ max metadata) |
Parsing, validity, formatting, line type |
countries-and-timezones |
Country ISO → timezone identifiers (approximation) |
No Python interpreter or pip installs are required.
The legacy GhostTR.py + requirements.txt flow (phonenumbers, requests) has been removed. Use Node.js and npm install instead. Behaviour is intentionally similar; the main intentional gap is Operator / carrier output, which depended on phonenumbers’ carrier metadata not shipped in these JS libs.
Seeker — optional IP capture lab helper
- thewhiteh4t/seeker
- Use only in authorized security awareness or scoped red-team labs.
ghosttrack/
├── GhostTR.mjs # Interactive CLI entry (JavaScript / Node ESM)
├── package.json
├── package-lock.json
├── .gitignore
├── asset/ # Banner and screenshots (may reference older menus)
└── README.md
- Upstream author: @HunxByts
- Data/APIs referenced at runtime: ipwho.is, api.ipify.org, public social URLs
