███████╗███████╗██╗ ██╗███████╗██████╗
██╔════╝██╔════╝╚██╗ ██╔╝██╔════╝██╔══██╗
███████╗█████╗ ╚████╔╝ █████╗ ██████╔╝
╚════██║██╔══╝ ╚██╔╝ ██╔══╝ ██╔══██╗
███████║███████╗ ██║ ██║ ██║ ██║
╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
🔐 Military-Grade P2P File Sharing
Built with Rust • Powered by Iroh • Secured by AES-256-GCM
Seyfr is a peer-to-peer file sharing application that enables secure, direct file transfers without central servers. Built with Rust and powered by Iroh's cutting-edge P2P technology.
|
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Interactive │───▶│ Command │───▶│ Progress │
│ CLI │ │ Line │ │ Tracking │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
Menu-driven Automation Real-time
Interface Support Feedback
┌─────────────────────────────────────────────────────────────┐
│ SEYFR ECOSYSTEM │
└─────────────────────┬───────────────────────────────────────┘
│
┌───────────┼───────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ seyfr-core │ │ seyfr-lib │ │ seyfr-ui │
│ │ │ │ │ │
│ • CLI App │ │ • P2P Logic │ │ • Web UI │
│ • Commands │ │ • Crypto │ │ • Desktop │
│ • Menu UI │ │ • Storage │ │ • Mobile │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└───────────────┼───────────────┘
│
▼
┌─────────────┐
│ IROH │
│ P2P Network │
└─────────────┘
seyfr/
├── 🖥️ seyfr-core/ # CLI application and main entry point
├── 📚 seyfr-lib/ # Core file sharing library
├── 🌐 seyfr-ui/ # Cross-platform user interface
├── 📋 docs/ # Documentation and specifications
└── 📖 README.md # This file
- Clone the repository:
git clone https://github.com/jermsam/seyfr.git
cd seyfr- Build the project:
cargo build --releaseLaunch the interactive menu:
cargo run -p seyfr-coreChoose from available options:
- 📤 Send a file
- 📂 Send a directory
- 🔐 Send an encrypted file
- 🔒 Send an encrypted directory
- 📥 Receive a file
- 📂 Receive a directory
- 🔓 Receive an encrypted file
- 🔓📂 Receive an encrypted directory
Send a regular file:
cargo run -p seyfr-core send /path/to/file.txtSend a directory:
cargo run -p seyfr-core send-dir /path/to/directory --recursiveSend an encrypted file:
cargo run -p seyfr-core send-encrypted /path/to/file.txt --passphrase "your_password"Send an encrypted directory:
cargo run -p seyfr-core send-dir-encrypted /path/to/directory --passphrase "your_password" --recursiveReceive a file:
cargo run -p seyfr-core receive "TICKET_STRING" /destination/pathReceive an encrypted file:
cargo run -p seyfr-core receive-encrypted --passphrase "your_password" "TICKET_STRING" /destination/path┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ SENDER │ │ ENCRYPT & │ │ TICKET │ │ RECEIVER │
│ │───▶│ PACKAGE │───▶│ GENERATION │───▶│ │
│ Select File │ │ File │ │ │ │ Enter Ticket│
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ File System │ │ Iroh Blobs │ │ Share Ticket│ │ P2P Network │
│ Access │ │ Storage │ │ String │ │ Discovery │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ DIRECT │
│ TRANSFER │
│ │
└─────────────┘
│
▼
┌─────────────┐
│ DOWNLOAD & │
│ DECRYPT │
│ │
└─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ PLAINTEXT │───▶│ AES-256-GCM │───▶│ CIPHERTEXT │
│ FILE │ │ ENCRYPTION │ │ FILE │
└─────────────┘ └─────────────┘ └─────────────┘
│ ▲ │
│ │ │
▼ │ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ PASSPHRASE │───▶│ PBKDF2 │ │ P2P NETWORK │
│ INPUT │ │ KEY DERIVE │ │ TRANSFER │
└─────────────┘ └─────────────┘ └─────────────┘
▲ │
│ │
┌─────────────┐ ▼
│ SECURE │ ┌─────────────┐
│ RANDOM │ │ RECEIVER │
│ SALT & NONCE│ │ DECRYPTS │
└─────────────┘ └─────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ SECURITY GUARANTEES │
└─────────────────────────────────────────────────────────────────┘
🚫 NO CENTRAL AUTHORITY 🔐 END-TO-END ENCRYPTION
┌─────────────────┐ ┌─────────────────┐
│ Your Device │◄────────────►│ Peer's Device │
│ │ Direct │ │
│ ┌─────────────┐ │ P2P │ ┌─────────────┐ │
│ │ Private Key │ │ Connection │ │ Private Key │ │
│ └─────────────┘ │ │ └─────────────┘ │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Local Encrypted │ │ Local Encrypted │
│ Storage │ │ Storage │
└─────────────────┘ └─────────────────┘
⚡ EPHEMERAL CONNECTIONS 🔑 USER-CONTROLLED KEYS
┌─────────────────┐ ┌─────────────────┐
│ No Permanent │ │ Your Passphrase │
│ Servers │ │ = Your Control │
│ │ │ │
│ Connections │ │ No Key Escrow │
│ Exist Only │ │ No Backdoors │
│ During Transfer │ │ No Recovery │
└─────────────────┘ └─────────────────┘
| Feature | Implementation | Benefit |
|---|---|---|
| 🔐 Encryption | AES-256-GCM | Military-grade protection |
| 🔑 Key Derivation | PBKDF2 (600k iterations) | Brute-force resistance |
| 🎲 Randomness | Cryptographically secure | Unique nonces/salts |
| 🛡️ Memory Protection | Zeroizing + mlock() | Key safety |
| ⚡ Streaming | Chunked processing | Large file support |
cargo buildcargo testRUST_LOG=debug cargo run -p seyfr-core- seyfr-core: CLI interface and command handling
- seyfr-lib: Core file sharing, encryption, and P2P logic
- seyfr-ui: Web interface (planned)
- Iroh: P2P networking and blob storage
- AES-GCM: File encryption
- Tokio: Async runtime
- Clap: CLI argument parsing
- Inquire: Interactive prompts
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the terms specified in the LICENSE file.