PyHyer (Python Hybrid Peer-to-Peer) è una soluzione avanzata per lo scambio di file decentralizzato. Sfrutta una Topologia Ibrida per combinare la rapidità di ricerca di un server centrale con la potenza di trasferimento della rete Peer-to-Peer, il tutto protetto da uno strato crittografico TLS/SSL di livello industriale.
- Tracker (Centralizzato): Gestisce l'indicizzazione in tempo reale e lo stato della rete mediante un Heartbeat System ogni 15 secondi, eliminando automaticamente le risorse non più disponibili. Grazie alla filosofia Zero-Storage, il Tracker non ospita mai i file, ottimizzando banda e risorse del server.
- Peer (Decentralizzati): Ogni nodo è un'entità "Servent" che integra un Upload Server multithread per servire file simultaneamente e un Download Client con logica di ricerca multi-fonte.
- End-to-End Encryption: Tutte le comunicazioni sono cifrate via TLS.
- Identity Verification: Sistema di Kill-Switch attivo. Se un nodo rileva un certificato non valido o manomesso sul Tracker, termina immediatamente il processo per prevenire attacchi Man-in-the-Middle.
- SSL Handshake: Autenticazione mutua basata su certificati X.509, evitando lo scambio di dati in mancanza di chiavi corrette.
- Smart Resume: Supporto al resume dei download interrotti tramite gestione degli
offsetdei file. - Integrità SHA-256: Verifica bit-a-bit del file scaricato con sistema di caching degli hash per evitare il ricalcolo di essi ottimizzando il carico sulla CPU.
- Buffer Ottimizzato: Trasferimento dati a blocchi (chunk da 128KB) per gestire file di grandi dimensioni senza saturare la RAM.
Il sistema richiede una coppia di chiavi per la cifratura. Generala con OpenSSL:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=PyHyerTracker"
# Questo comando esempio genererà un file cert.pem (certificato pubblico) e un file key.pem (chiave privata), necessari per la cifratura del canale.Modifica il file node.py impostando l'indirizzo IP del Tracker:
TRACKER_IP = '192.168.1.X' # L'IP della macchina che ospita tracker.py
MY_PORT = 6000 # La porta locale per ricevere fileUna volta configurati gli indirizzi IP e generati i certificati, il sistema è pronto per lo scambio file.
Il Tracker deve essere sempre il primo componente ad essere avviato per poter accogliere le registrazioni dei nodi.
python tracker.pyComandi console disponibili: map, history, clear, exit.
Assicurati di avere dei file nella cartella ./files se vuoi condividere qualcosa, quindi avvia:
python node.pyOperazioni disponibili:
- Invio (vuoto): Scarica la lista di tutti i file disponibili nella rete.
- Ricerca: Inserisci una parola chiave per filtrare i file.
- Download: Seleziona l'ID del file per avviare il download sicuro.
PyHyer/
├── tracker.py # Il "Cervello": Gestisce l'indice dei file e la topologia di rete.
├── node.py # Il "Muscolo": Gestisce upload, download e interfaccia utente.
└── test_pem/
└── cert.pem # Certificato Pubblico: Necessario per l'autenticazione SSL/TLS.
└── key.pem # Chiave Privata: Necessaria per la cifratura dei canali di comunicazione.