Secure • Simple • Reliable data streaming. End-to-end encrypted Unix pipes.
Project description
🦊 FoxPipe v1.9
Secure • Simple • Reliable Data Streaming
FoxPipe is a minimalist CLI tool for end-to-end encrypted, optionally compressed data transfer between two machines — no setup, no accounts, just a shared password.
🚀 Why FoxPipe?
Simple No servers, no login. Just run sender and receiver.
Efficient
Built-in zlib streaming compression reduces bandwidth usage automatically.
Secure by Design Uses AES-256-GCM (AEAD) for encryption and Scrypt for strong key derivation.
Resilient Includes chunk limits, decompression guards, session validation, and timeouts.
📥 Installation
Install directly from PyPI:
pip install foxpipe
🛠️ Usage
1️⃣ Receiver (Destination)
Start this first:
foxpipe receive 8080 -p "secure-pass" > backup.sql
Allow external connections:
foxpipe receive 8080 -p "secure-pass" --public > backup.sql
2️⃣ Sender (Source)
cat backup.sql | foxpipe send 192.168.1.5 8080 -p "secure-pass"
📦 Advanced Usage
📁 Directory Transfer (Recommended)
# Sender
tar -cf - ./project | foxpipe send 1.2.3.4 9000 -p secret
# Receiver
foxpipe receive 9000 -p secret | tar -xf -
📄 Direct File Transfer
foxpipe send 1.2.3.4 8080 -p secret --file image.iso
🚫 Disable Compression
For already compressed files:
foxpipe send 1.2.3.4 8080 -p secret --file video.mp4 --no-compress
🔒 Security Model (v1.9)
- Encryption: AES-256-GCM (authenticated encryption per chunk)
- Key Derivation: Scrypt (
N=2¹⁵,r=8,p=1) - Handshake Authentication: HMAC-SHA256
- Session Binding: Random session ID prevents replay across sessions
- Integrity & Authenticity: Provided by AES-GCM (AEAD)
⚠️ HMAC is used only for handshake authentication, not for data chunks.
⚠️ Safety Measures
- Max Chunk Size: 10 MB
- Session Timeout: 300 seconds (idle)
- Connection Timeout: 15 seconds
- Safe Streaming Decompression: Protects against zip-bomb style attacks
- DoS Protection: Receiver enforces a global transfer limit (default 5GB).
Adjust using
--limit(e.g.,--limit 100for 100GB).
🧠 Design Notes
- Uses streaming compression (single zlib stream)
- Uses random nonce per chunk (safe for AES-GCM usage)
- Uses constant-time HMAC comparison
- Avoids buffering entire files → supports large transfers
- Minimal protocol → low overhead, easy to audit
⚡ Quick Example
# Receiver
foxpipe receive 9000 -p pass --public > file.txt
# Sender
foxpipe send <IP> 9000 -p pass --file file.txt
⚠️ Limitations
- Single connection only
- No resume support
- No file metadata (name/size handled externally)
🦊 Philosophy
Build simple tools that are hard to misuse and easy to trust.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file foxpipe-1.9.0.tar.gz.
File metadata
- Download URL: foxpipe-1.9.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
747a096046887e8544f5c0b61d3a7e8611771610b501b84f8dc74b50e1831cea
|
|
| MD5 |
7cc64bc9f54611a1793ef36c48439f5b
|
|
| BLAKE2b-256 |
244ed5e4f5a0d1c67a095ef68ff32fe76f1bfb4deb51ca06ce1071e052a52f3a
|
File details
Details for the file foxpipe-1.9.0-py3-none-any.whl.
File metadata
- Download URL: foxpipe-1.9.0-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd8bcc16fbe10ad39e6bbc55563c0055e933cc1e23973b040781d1da2513fcef
|
|
| MD5 |
9cd9f3d01316827b670c9ed480dc191d
|
|
| BLAKE2b-256 |
939a1e7d5a2e283084f0ef72244937b93500acfe54da634bc486729a4c6c6402
|