Metadata-Version: 2.4
Name: peer2drop
Version: 1.0.0
Summary: Secure P2P file transfer with end-to-end encryption and Device ID system
Author-email: vyofgod <vyofgod@users.noreply.github.com>
License: MIT
Project-URL: Homepage, https://github.com/vyofgod/peer2drop
Project-URL: Repository, https://github.com/vyofgod/peer2drop
Project-URL: Issues, https://github.com/vyofgod/peer2drop/issues
Keywords: p2p,file-transfer,encryption,secure,peer-to-peer
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Communications :: File Sharing
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography>=41.0.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: PyQt6>=6.6.0
Requires-Dist: pyperclip>=1.8.0
Dynamic: license-file

# Peer2Drop

Secure P2P file transfer with end-to-end encryption and Device ID system.

---

## Features

- **AES-256 + RSA-2048** end-to-end encryption
- **Device ID System** - IP addresses hidden from users
- **Zero configuration** - works immediately
- **Cross-platform** - Windows, Linux, macOS
- **Real-time transfers** with progress tracking
- **Minimalist interface** - pure black design

---

## Quick Start

```bash
# Install dependencies
pip install -r requirements.txt

# Run application
python3 p2p_transfer.py
```

### Usage

1. Launch app - Device ID appears at top
2. Click "Copy ID" and share with peer
3. Paste peer's Device ID and click "Add Peer"
4. Select peer and click "Connect"
5. Add files and click "Upload All"

---

## How It Works

### Device ID System

Each instance generates a unique Device ID that encodes the IP address and port:

```
Device ID: MTkyLj-E2OC4x-LjUzOj-UwMDAZ
           (contains: 192.168.1.53:5000)
```

Users only share Device IDs - IP addresses remain hidden.

### Security

- **Handshake**: RSA-2048 key exchange
- **Transfer**: AES-256 symmetric encryption
- **Verification**: SHA-256 file hashing

---

## Interface

```
Device ID: MTkyLj-E2OC4x-LjUzOj-UwMDAZ  |  Port: 5000

[Files]  [Peers]  [Transfers]

Name              Size        Hash
document.pdf      2.3 MB      9d5f6c4a
photo.jpg         1.1 MB      3e8a2b7f

[Add File]  [Scan Folder]  [Open Folder]

Server:5000 | Peers:2 | Files:5 (12.3MB) | AES-256
```

---

## Configuration

Files stored in `~/.p2p_transfer/`:

- `shared/` - Files to share
- `downloads/` - Received files
- `peers.json` - Peer registry

Default port: 5000 (auto-increments if busy)

---

## Architecture

```
p2p_core.py          Backend (networking, crypto, files)
p2p_transfer.py      GUI application (PyQt6)
```

### Key Components

- **DeviceID** - Generate and encode Device IDs
- **CryptoManager** - AES-256 + RSA-2048 encryption
- **FileManager** - File scanning and metadata
- **P2PConnection** - Peer-to-peer connection handling
- **P2PServer** - Accept incoming connections
- **P2PClient** - Initiate outgoing connections

---

## Troubleshooting

**Peer stays offline:**
- Ensure both apps running
- Check firewall allows port 5000
- Verify same local network

**Files not sending:**
- Click "Connect" first
- Wait for "online" status
- Check files in shared folder

---

## Dependencies

```
cryptography==41.0.7
psutil==5.9.6
PyQt6==6.6.1
pyperclip==1.8.2
```

---

## License

MIT License

---

## Repository

https://github.com/vyofgod/peer2drop
