Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

238 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Seyfr - Send Your Files Right

 ███████╗███████╗██╗   ██╗███████╗██████╗ 
 ██╔════╝██╔════╝╚██╗ ██╔╝██╔════╝██╔══██╗
 ███████╗█████╗   ╚████╔╝ █████╗  ██████╔╝
 ╚════██║██╔══╝    ╚██╔╝  ██╔══╝  ██╔══██╗
 ███████║███████╗   ██║   ██║     ██║  ██║
 ╚══════╝╚══════╝   ╚═╝   ╚═╝     ╚═╝  ╚═╝

🔐 Military-Grade P2P File Sharing

Built with Rust • Powered by Iroh • Secured by AES-256-GCM

Rust License Security

🌟 What is Seyfr?

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.

✨ Key Features

🚀 Core Functionality

┌─────────────────────────────────┐
│  📁 Files & Directories         │
│  🔄 P2P Direct Transfer         │
│  💾 Persistent Storage          │
│  🌐 Cross-Platform Support      │
│  📊 Real-time Progress          │
└─────────────────────────────────┘

🔐 Security Features

┌─────────────────────────────────┐
│  🛡️  AES-256-GCM Encryption    │
│  🔑 PBKDF2 Key Derivation       │
│  🎲 Secure Random Generation    │
│  ⚡ Streaming for Large Files   │
│  🚫 No Central Servers          │
└─────────────────────────────────┘

🎯 User Experience

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ Interactive │───▶│   Command   │───▶│  Progress   │
│     CLI     │    │    Line     │    │  Tracking   │
└─────────────┘    └─────────────┘    └─────────────┘
       │                  │                  │
       ▼                  ▼                  ▼
  Menu-driven      Automation         Real-time
   Interface        Support           Feedback

🏗️ Architecture Overview

┌─────────────────────────────────────────────────────────────┐
│                        SEYFR ECOSYSTEM                     │
└─────────────────────┬───────────────────────────────────────┘
                      │
          ┌───────────┼───────────┐
          │           │           │
          ▼           ▼           ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ seyfr-core  │ │  seyfr-lib  │ │  seyfr-ui   │
│             │ │             │ │             │
│ • CLI App   │ │ • P2P Logic │ │ • Web UI    │
│ • Commands  │ │ • Crypto    │ │ • Desktop   │
│ • Menu UI   │ │ • Storage   │ │ • Mobile    │
└─────────────┘ └─────────────┘ └─────────────┘
       │               │               │
       └───────────────┼───────────────┘
                       │
                       ▼
              ┌─────────────┐
              │    IROH     │
              │ P2P Network │
              └─────────────┘

📁 Project Structure

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

Quick Start

Installation

  1. Clone the repository:
git clone https://github.com/jermsam/seyfr.git
cd seyfr
  1. Build the project:
cargo build --release

Interactive Mode

Launch the interactive menu:

cargo run -p seyfr-core

Choose 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

Command Line Usage

Sending Files

Send a regular file:

cargo run -p seyfr-core send /path/to/file.txt

Send a directory:

cargo run -p seyfr-core send-dir /path/to/directory --recursive

Send 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" --recursive

Receiving Files

Receive a file:

cargo run -p seyfr-core receive "TICKET_STRING" /destination/path

Receive an encrypted file:

cargo run -p seyfr-core receive-encrypted --passphrase "your_password" "TICKET_STRING" /destination/path

🔄 How It Works

File Sharing Process Flow

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   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   │
                                    │             │
                                    └─────────────┘

Security Flow

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ PLAINTEXT   │───▶│ AES-256-GCM │───▶│ CIPHERTEXT  │
│    FILE     │    │ ENCRYPTION  │    │    FILE     │
└─────────────┘    └─────────────┘    └─────────────┘
       │                   ▲                   │
       │                   │                   │
       ▼                   │                   ▼
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ PASSPHRASE  │───▶│   PBKDF2    │    │ P2P NETWORK │
│   INPUT     │    │ KEY DERIVE  │    │  TRANSFER   │
└─────────────┘    └─────────────┘    └─────────────┘
                           ▲                   │
                           │                   │
                   ┌─────────────┐            ▼
                   │   SECURE    │    ┌─────────────┐
                   │   RANDOM    │    │  RECEIVER   │
                   │ SALT & NONCE│    │  DECRYPTS   │
                   └─────────────┘    └─────────────┘

🔒 Security Model

┌─────────────────────────────────────────────────────────────────┐
│                      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     │
└─────────────────┘              └─────────────────┘

🛡️ Security Features

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

Development

Building

cargo build

Testing

cargo test

Running with Debug Logs

RUST_LOG=debug cargo run -p seyfr-core

Architecture

Components

  • seyfr-core: CLI interface and command handling
  • seyfr-lib: Core file sharing, encryption, and P2P logic
  • seyfr-ui: Web interface (planned)

Key Technologies

  • Iroh: P2P networking and blob storage
  • AES-GCM: File encryption
  • Tokio: Async runtime
  • Clap: CLI argument parsing
  • Inquire: Interactive prompts

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the terms specified in the LICENSE file.

About

learn sendme

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages