Skip to main content

Remote access tool via npoint.io - encrypted command relay with compression, caching, and advanced system 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.3.0.tar.gz (67.2 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.3.0-py3-none-any.whl (70.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gcli_control-0.3.0.tar.gz
  • Upload date:
  • Size: 67.2 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.3.0.tar.gz
Algorithm Hash digest
SHA256 23e23a0a7d05ef5f91b63c6bb3f23af46e9060dbda95faac09e9da4ce9b51fa6
MD5 23bd144e4e601b54a7971af718388068
BLAKE2b-256 34e09a7e014a80afe21f8f6e68e8ea933422ae45dcd654013dc5754ea9c44af2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gcli_control-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 70.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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cca7d30eb6f960db112b34675981c11693c62dadd217694fe95f03a85fb2914a
MD5 b4f00991f4cb2256d4c18aa1a5c12c81
BLAKE2b-256 3135b424ee87a1acdc942e2b34b9d187d074d121d08d6e737160cfab6374e784

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