SPL (Secure Package Loader) is a high-performance, encrypted file transfer tool written in Rust. It provides secure file transfers using AES-256-GCM encryption over TCP connections, designed for reliability and speed when transferring large files across networks.
- π Military-grade encryption: AES-256-GCM encryption ensures your files stay secure
- π¦ Chunked transfers: Efficient handling of large files with optimized memory usage
- π Cross-platform: Native support for Windows, Linux, and macOS
- π» Simple CLI interface: Easy-to-use command-line tool for both sending and receiving
- β‘ High-speed performance: Optimized TCP streaming with minimal overhead
- π Automatic key management: Secure key generation and configuration handling
- π Progress tracking: Real-time transfer progress and speed monitoring
- π‘οΈ Error recovery: Built-in retry mechanisms and connection resilience
- Prerequisites
- Installation
- Quick Start
- Usage
- Configuration
- Examples
- Security
- Troubleshooting
- Contributing
- License
- Rust: Version 1.89.0 or newer (Install Rust)
- Cargo: Rust package manager (included with Rust installation)
- Network: Both machines must be able to communicate over TCP on port 5001
- Firewall: Ensure port 5001 is open on the receiving machine
-
Clone the repository:
git clone https://github.com/CyberHuman-bot/SPL.git cd SPL -
Build the project:
cargo build --release
-
Install globally (optional):
cargo install --path .
The compiled binary will be available at:
- Release build:
target/release/spl_rust - Global install: Available as
spl_rustin your PATH
cargo install --git https://github.com/CyberHuman-bot/SPL.git-
Start the receiver on the target machine:
./spl_rust receive <filename>
-
Send the file from the source machine:
./spl_rust -<IP_ADDRESS> <FILE_PATH>
# On receiver (192.168.1.100)
./spl_rust receive mydocument.pdf
# On sender
./spl_rust -192.168.1.100 ./document.pdfSPL - Secure Package Loader
USAGE:
spl_rust [OPTIONS] <SUBCOMMAND>
OPTIONS:
-p, --port <PORT> Port to use for transfer [default: 8080]
-v, --verbose Enable verbose output
-q, --quiet Suppress non-essential output
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
send <IP> <FILE> Send file to specified IP address
receive Start receiver mode
config Generate or modify configuration
help Print this message or the help of subcommands# Basic file send
./spl_rust send 192.168.1.100 ./myfile.zip
# Send with custom port
./spl_rust --port 9000 send 192.168.1.100 ./large_file.iso
# Verbose mode for debugging
./spl_rust --verbose send 192.168.1.100 ./data.tar.gz- Linux/macOS:
~/.config/spl/config.toml - Windows:
%APPDATA%\SPL\config.toml
# Terminal 1 (Receiver - 192.168.1.100)
./spl_rust receive ./my.pptx
# Output: Listening on 192.168.1.100:8080...
# Terminal 2 (Sender)
./spl_rust -192.168.1.100 ./presentation.pptx
# Output: Transferring presentation.pptx... [ββββββββββββββββββββ] 100% (5.2 MB/s)SPL implements several security measures to protect your file transfers:
- AES-256-GCM Encryption: Industry-standard encryption with authenticated encryption
- Secure Key Generation: Cryptographically secure random key generation
- Perfect Forward Secrecy: New session keys for each transfer
- Integrity Verification: Built-in checksums and authentication tags
- No Key Storage: Encryption keys are never stored on disk
- Always use SPL over trusted networks when possible
- Regularly update to the latest version
- Verify file integrity after large transfers
- Use strong, unique passwords for any additional authentication layers
Connection Refused
Error: Connection refused (os error 111)- Ensure the receiver is running before sending
- Check firewall settings on both machines
- Verify the IP address and port are correct
Permission Denied
Error: Permission denied (os error 13)- Check file permissions on the source file
- Ensure write permissions in the destination directory
- Try running with appropriate privileges
Large File Transfers Failing
- Check available disk space on receiving machine
- Verify network stability
- Consider using a wired connection for very large files
Enable verbose logging to diagnose issues:
./spl_rust --verbose send 192.168.1.100 ./file.txtWe welcome contributions! Please see our Contributing Guide for details.
git clone https://github.com/CyberHuman-bot/SPL.git
cd SPL
cargo build
cargo test# Run all tests
cargo test
# Run with coverage
cargo test --all-features
# Run specific test
cargo test test_encryption- Built with Rust and the amazing Rust ecosystem
- Encryption provided by ring cryptographic library
- Special thanks to the Rust community for excellent documentation and support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@example.com
Made with β€οΈ by Yaman.