diff --git a/communicationScripts/client.py b/communicationScripts/client.py index 77b6e60e5e52acfff2dac11fb019fc82ef6b3f0d..9385f637ccf23e38b94550baff0ce15456685239 100644 --- a/communicationScripts/client.py +++ b/communicationScripts/client.py @@ -1,17 +1,9 @@ -import os import socket import wolfssl -from datetime import datetime - -def log(message): - print(f"[{datetime.now()}] {message}") +import os def run_client(file_path): - # CA-Zertifikat laden ca_cert = "../certificates/ca-cert.pem" - log("CA-Zertifikat wird geladen...") - - # Optionen für Verschlüsselungsalgorithmen print("Wählen Sie einen Verschlüsselungsalgorithmus:") print("1: AES 128 GCM (sicher)") print("3: ChaCha20-Poly1305 (sicher)") @@ -20,56 +12,45 @@ def run_client(file_path): choice_cipher = input("Geben Sie die Nummer des gewünschten Verschlüsselungsalgorithmus ein: ") - # Cipher Suite entsprechend der Wahl des Benutzers auswählen if choice_cipher == "1": - cipher_suite = "TLS_AES_128_GCM_SHA256" # AES 128 GCM (sicher) + cipher_suite = "TLS_AES_128_GCM_SHA256" elif choice_cipher == "2": - cipher_suite = "TLS_CHACHA20_POLY1305_SHA256" # ChaCha20-Poly1305 (sicher) + cipher_suite = "TLS_CHACHA20_POLY1305_SHA256" elif choice_cipher == "3": - cipher_suite = "TLS_RSA_WITH_RC4_128_SHA" # RC4 (unsicher) + cipher_suite = "TLS_RSA_WITH_RC4_128_SHA" elif choice_cipher == "4": - cipher_suite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" # 3DES (unsicher) + cipher_suite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" else: - log("Ungültige Auswahl, Standard-AES 128 GCM wird verwendet.") + print("Ungültige Auswahl, Standard-AES 128 GCM wird verwendet.") cipher_suite = "TLS_AES_128_GCM_SHA256" - log(f"Gewählte Cipher Suite: {cipher_suite}") - - # SSL-Kontext erstellen - log("SSL-Kontext wird erstellt...") context = wolfssl.SSLContext(wolfssl.PROTOCOL_TLSv1_2) context.load_verify_locations(ca_cert) try: context.set_ciphers(cipher_suite) - log(f"Cipher Suite '{cipher_suite}' erfolgreich gesetzt.") + print(f"Cipher Suite '{cipher_suite}' erfolgreich gesetzt!") except Exception as e: - log(f"Fehler beim Setzen der Cipher Suite: {e}") - log("Möglicherweise wird die angegebene Cipher Suite von wolfSSL nicht unterstützt.") + print(f"Fehler beim Setzen der Cipher Suite: {e}") return - # Sichere Verbindung mit dem Server herstellen try: - log("Verbindung zum Server wird aufgebaut...") + print("Verbindung zum Server wird aufgebaut...") with socket.create_connection(("192.168.125.101", 5000)) as sock: with context.wrap_socket(sock, server_hostname="server") as ssl_sock: - log("Mit dem Server verbunden!") + print("Mit dem Server verbunden!") - # Datei senden - log(f"Datei '{file_path}' wird gesendet...") with open(file_path, "rb") as f: while chunk := f.read(1024): ssl_sock.sendall(chunk) - log(f"Datei '{file_path}' erfolgreich an den Server gesendet.") + print(f"Datei '{file_path}' erfolgreich an den Server gesendet.") + except Exception as e: - log(f"Fehler bei der Kommunikation mit dem Server: {e}") + print(f"Fehler bei der Verbindung zum Server: {e}") if __name__ == "__main__": - # Dateipfad der zu übertragenden Datei file_to_send = "../testData/test.txt" - - # Stelle sicher, dass die Datei existiert if not os.path.exists(file_to_send): - log(f"Die Datei '{file_to_send}' wurde nicht gefunden!") + print(f"Die Datei '{file_to_send}' wurde nicht gefunden!") else: run_client(file_to_send) diff --git a/communicationScripts/server.py b/communicationScripts/server.py index 7fe07336d9820b73ae2fb5c0ede58f6672d5e7b3..51855e4376535ef3aa2030746c6b649082fc246d 100644 --- a/communicationScripts/server.py +++ b/communicationScripts/server.py @@ -1,18 +1,11 @@ import socket import wolfssl -from datetime import datetime - -def log(message): - print(f"[{datetime.now()}] {message}") def run_server(): - # Server-Zertifikat und Schlüssel cert_file = "../certificates/server-cert.pem" key_file = "../certificates/server-key.pem" - log("Server-Zertifikat und Schlüssel werden geladen...") - - # Optionen für Verschlüsselungsalgorithmen + # Cipher Suite Auswahl print("Wählen Sie einen Verschlüsselungsalgorithmus:") print("1: AES 128 GCM (sicher)") print("2: ChaCha20 Poly1305 (sicher)") @@ -20,38 +13,27 @@ def run_server(): print("4: 3DES (unsicher)") choice_cipher = input("Geben Sie die Nummer des gewünschten Verschlüsselungsalgorithmus ein: ") - # Cipher Suite entsprechend der Wahl des Benutzers auswählen if choice_cipher == "1": - cipher_suite = "TLS_AES_128_GCM_SHA256" # AES 128 GCM (sicher) + cipher_suite = "TLS_AES_128_GCM_SHA256" elif choice_cipher == "2": - cipher_suite = "TLS_CHACHA20_POLY1305_SHA256" # ChaCha20 Poly1305 (sicher) + cipher_suite = "TLS_CHACHA20_POLY1305_SHA256" elif choice_cipher == "3": - cipher_suite = "TLS_RSA_WITH_RC4_128_SHA" # RC4 (unsicher) + cipher_suite = "TLS_RSA_WITH_RC4_128_SHA" elif choice_cipher == "4": - cipher_suite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" # 3DES (unsicher) + cipher_suite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" else: - log("Ungültige Auswahl, Standard-AES 128 GCM wird verwendet.") + print("Ungültige Auswahl, Standard-AES 128 GCM wird verwendet.") cipher_suite = "TLS_AES_128_GCM_SHA256" - log(f"Gewählte Cipher Suite: {cipher_suite}") - - # SSL-Kontext erstellen - log("SSL-Kontext wird erstellt...") context = wolfssl.SSLContext(wolfssl.PROTOCOL_TLSv1_2) context.load_cert_chain(certfile=cert_file, keyfile=key_file) - - try: - context.set_ciphers(cipher_suite) - log(f"Cipher Suite '{cipher_suite}' erfolgreich gesetzt.") - except Exception as e: - log(f"Fehler beim Setzen der Cipher Suite: {e}") - return + context.set_ciphers(cipher_suite) # Server-Socket erstellen with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: - sock.bind(("0.0.0.0", 5000)) # Auf allen Schnittstellen lauschen + sock.bind(("0.0.0.0", 5000)) sock.listen(5) - log(f"Server läuft auf Port 5000 mit Cipher Suite: {cipher_suite}...") + print(f"Server läuft auf Port 5000 mit Cipher Suite: {cipher_suite}...") while True: log("Warten auf eingehende Verbindungen...") @@ -60,10 +42,8 @@ def run_server(): try: ssl_sock = context.wrap_socket(client_sock, server_side=True) - log("SSL/TLS-Verbindung mit Client hergestellt.") - - # Datei empfangen - log("Empfang der Datei wird gestartet...") + log("SSL/TLS-Verbindung erfolgreich hergestellt.") + with open("received_file.txt", "wb") as f: while True: data = ssl_sock.recv(1024) @@ -71,12 +51,16 @@ def run_server(): break f.write(data) log("Datei erfolgreich empfangen und gespeichert als 'received_file.txt'") + except Exception as e: log(f"Fehler bei der Verarbeitung der Verbindung: {e}") + finally: ssl_sock.close() client_sock.close() - log("Verbindung geschlossen.") + +def log(message): + print(message) # Hier können Sie auch in eine Log-Datei schreiben. if __name__ == "__main__": run_server()