Skip to main content

Remote access tool via npoint.io - encrypted relay with compression, caching, connection reuse, and 80+ commands

Project description

gcli

Remote access tool via npoint.io — encrypted command relay using AES-256-GCM.

How It Works

┌──────────┐     commands     ┌─────────────┐     commands     ┌──────────┐
│ gcli ssh │ ───────────────> │ npoint.io   │ ───────────────> │gcli host │
│ (client) │ <─────────────── │ (JSON bin)  │ <─────────────── │ (daemon) │
└──────────┘     results      └─────────────┘     results      └──────────┘
  1. gcli host starts a background daemon that polls npoint.io for encrypted commands
  2. gcli ssh connects interactively, sends encrypted commands, and polls for results
  3. All payloads are encrypted with AES-256-GCM — the password never leaves your machine

Quick Start

Install

pip install cryptography

Host (on the remote machine)

# Start the daemon (runs in background)
python -m gcli host --password MySecret123

# Or run in foreground for debugging
python -m gcli host --password MySecret123 --foreground

Client (on your local machine)

# Connect to the host
python -m gcli ssh --password MySecret123

Stop the host

python -m gcli stop

SSH Commands

Once connected, you have a full interactive REPL:

Command Description
Any text Execute shell command on remote host
:help Show available commands
:info Show remote system info (hostname, OS, user, IP)
:ping Ping remote host and show latency
:upload <local> <remote> Upload a file to the remote host
:download <remote> <local> Download a file from the remote host
:timeout <seconds> Set exec command timeout
:history Show recent command history
:exit Disconnect and close session

Security

  • AES-256-GCM encryption with PBKDF2 key derivation (600K iterations)
  • Password is never transmitted — only encrypted payloads flow through npoint.io
  • Each message gets a unique random nonce (prevents identical plaintext detection)
  • Built-in tamper detection (GCM authentication tag)

Cross-Platform

Platform Background Detach Process Management
Windows CREATE_NO_WINDOW subprocess tasklist / taskkill
Linux Double-fork + setsid kill / os.kill
macOS Double-fork + setsid kill / os.kill

Configuration

# Custom npoint bin (both host and client must use the same bin)
python -m gcli host --password MySecret --bin YOUR_NPOINT_BIN_ID
python -m gcli ssh --password MySecret --bin YOUR_NPOINT_BIN_ID

# Adjust polling speed (default: 2s host, 1s client)
python -m gcli host --password MySecret --poll-interval 1.0

Architecture

gcli/
├── __main__.py      # CLI entry point (argparse)
├── __init__.py
├── crypto.py        # AES-256-GCM encrypt/decrypt (PBKDF2 key derivation)
├── npoint.py        # npoint.io API wrapper with retry logic
├── protocol.py      # Document structure, read/write, race-condition safe appends
├── host.py          # Daemon: poll → decrypt → execute → encrypt → respond
├── client.py        # SSH REPL: send → poll → display (tab completion)
├── utils.py         # PID management, process detach, command execution
└── colors.py        # Cross-platform terminal colours (Win/Linux/macOS)

Requirements

  • Python 3.8+
  • cryptography package
  • Internet connection (for npoint.io)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gcli_control-0.4.0.tar.gz (87.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gcli_control-0.4.0-py3-none-any.whl (93.7 kB view details)

Uploaded Python 3

File details

Details for the file gcli_control-0.4.0.tar.gz.

File metadata

  • Download URL: gcli_control-0.4.0.tar.gz
  • Upload date:
  • Size: 87.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for gcli_control-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d43ba1e7572a9898f2cc6e97f290fe94718a6247e47f9d6ffb40632f775a5f07
MD5 4a8761cd89093e0f93ee2f674a089716
BLAKE2b-256 b7c14903c058cabcd54b953a8e9e264334a25d017d7894f399c90201135a88af

See more details on using hashes here.

File details

Details for the file gcli_control-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: gcli_control-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 93.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for gcli_control-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a6b26f9f6062d7ff6cb0cdc19977fcc76f075b1eb463ca74b999300e5b204dcf
MD5 8a86626afefb5919ebb39e50db78ed34
BLAKE2b-256 dc202fbc45d60972122961cc2e50eaedcdf9a699251061eebcd4b8be0039cfee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page