GeoRecon
Asynchronous geolocation capture service for OSINT investigations. Serve convincing phishing pages to capture visitor device information and GPS coordinates.
| CLI Interface | Telegram Template | NearYou Template |
| Google Disk Template | Telegram Bot |
Features
- Geolocation Capture – Obtain precise GPS coordinates from visitors via browser Geolocation API
- Device Fingerprinting – Collect OS, browser, CPU cores, RAM, GPU info, screen resolution
- Telegram Integration – Optional real-time notifications to your Telegram bot
- Multiple Templates – Comes with Telegram, Google Disk, and NearYou templates
- CLI + Config File – Configurable via CLI arguments or YAML file
- Clean Formatted Output – Colored CLI logs with device/location data
Requirements
- Python 3.12+
- A modern browser with Geolocation API support (victim's browser)
Installation
From PyPI (recommended)
pip install georecon
# or
uv add georecon
From source
git clone https://github.com/MarkLevkovich/geo-recon.git
cd geo-recon
pip install .
Usage
Quick Start
georecon
CLI Options
georecon --host 127.0.0.1 --port 8080 # Custom host/port
georecon --config /path/to/config.yaml # Use config file
georecon --log-level debug # Verbose logging
georecon --no-access-log # Disable access logs
Configuration File
Create geoconf.yaml (or any path):
host: "0.0.0.0"
port: 8080
log_level: "info"
no_access_log: false
CLI arguments override config file values.
Telegram Bot Setup
1. Create a bot
- Open @BotFather in Telegram
- Send
/newbot - Follow the instructions to get your bot token
2. Get your chat ID
- Start a conversation with your bot
- Send any message to the bot
- Visit
https://api.telegram.org/bot<TOKEN>/getUpdates - Find
"chat":{"id":123456789in the JSON response – that's your chat ID
3. Configure GeoRecon
When running georecon, you'll be prompted:
Do you want to duplicate msgs to Telegram? [y/n] -> y
=== Telegram bot setup ===
Enter bot token: 123456789:ABCdefGHIjklMNOpqrSTUvw
Enter target chat ID (numeric): 123456789
Configuration is saved to ~/.geo_recon.conf.
Exposing to Internet
By default, the server binds to 0.0.0.0:8080. To make it accessible from the internet, you need to expose your local server.
Option 1: ngrok
ngrok http 8080
Copy the generated URL (e.g., https://abc123.ngrok.io) and share it with your target.
Option 2: Cloudflare Tunnel
- Install cloudflared:
# Arch Linux
sudo pacman -S cloudflared
# Ubuntu/Debian
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared
- Create a tunnel:
cloudflared tunnel create my-geo-tunnel
- Run the tunnel:
cloudflared tunnel --url http://localhost:8080 run my-geo-tunnel
Copy the generated .cloudflared.io URL.
Captured Data
- IP address
- Operating system
- Browser & platform
- CPU cores & RAM
- GPU vendor/renderer
- Screen resolution
- Latitude / Longitude
- Accuracy
- City / Country (if available)
- Google Maps link
Tested On
- Arch Linux – Full compatibility
License
MIT License – see LICENSE
Release files for georecon 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| georecon-0.2.1.tar.gz | 9.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| georecon-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.8 kB
Release files / georecon-0.2.1.tar.gz
| Download URL | georecon-0.2.1.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41c7ebb889c4ef588d6d759f2acbb433f42d298cb6e6a209bd5f0ca782c69665
|
|
BLAKE2b-256 checksum How to use checksums |
503997e110c37b39bf172a2ea12d9320eb79984fe600cb429914603bb22bf711
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / georecon-0.2.1-py3-none-any.whl
| Download URL | georecon-0.2.1-py3-none-any.whl |
|---|---|
| Size | 10.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
61f5c48c9240102437a0fe01e8de51870ad095e3fee65896b7c01135d3600653
|
|
BLAKE2b-256 checksum How to use checksums |
1c8a76b7b487efc45a49298e37320cf9493c022bb889469847c23459259faf85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|