diff --git a/communicationScripts/client.py b/communicationScripts/client.py index 8c92add93077b7ba90e0b5cea7be034dc9b58c9b..5cff23ea90d13cd7c6e136355557150e5f54b3b5 100644 --- a/communicationScripts/client.py +++ b/communicationScripts/client.py @@ -1,41 +1,31 @@ -import os -import socket import wolfssl +import socket +import logging + +# Logging konfigurieren +logging.basicConfig(level=logging.DEBUG) + +# SSLContext für den Client +context = wolfssl.Context(wolfssl.SSLv23_METHOD) + +# Client-Socket einrichten +client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +# SSL-Verbindung zum Server aufbauen (IPv4-Adresse verwenden) +ssl_connection = context.wrap_socket(client_socket, server_side=False) +ssl_connection.connect(('192.168.178.63', 10023)) # IPv4-Adresse des Servers + +logging.info("SSL-Verbindung zum Server aufgebaut.") + +# Nachricht senden +message = "Hallo Server!" +ssl_connection.sendall(message.encode()) +logging.info(f"Nachricht gesendet: {message}") + +# Empfangene Nachricht lesen (Echo) +response = ssl_connection.recv(1024) +logging.info(f"Empfangene Antwort: {response.decode()}") -def run_client(file_path): - # Festlegen der Cipher Suite und TLS-Version - cipher_suite = "TLS_AES_128_GCM_SHA256" # Sichere Cipher Suite - context = wolfssl.SSLContext(wolfssl.PROTOCOL_TLSv1_3) # TLS 1.3 verwenden - context.set_ciphers(cipher_suite) - - print(f"TLS-Kontext mit Cipher Suite '{cipher_suite}' erfolgreich initialisiert.") - - # Sichere Verbindung mit dem Server herstellen - try: - print("Versuche, Verbindung zum Server herzustellen...") - with socket.create_connection(("192.168.178.63", 5000)) as sock: - print("Verbindung zum Server erfolgreich hergestellt.") - with context.wrap_socket(sock, server_hostname="192.168.178.63") as ssl_sock: - print("Mit dem Server verbunden und SSL-Handschlag abgeschlossen!") - - # Datei senden - print(f"Beginne mit dem Senden der Datei '{file_path}'...") - with open(file_path, "rb") as f: - total_bytes_sent = 0 - while chunk := f.read(1024): - ssl_sock.sendall(chunk) - total_bytes_sent += len(chunk) - print(f"Datei '{file_path}' erfolgreich an den Server gesendet. ({total_bytes_sent} Bytes)") - - except Exception as 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): - print(f"Die Datei '{file_to_send}' wurde nicht gefunden!") - else: - run_client(file_to_send) +# Verbindung schließen +ssl_connection.close() +logging.info("Verbindung geschlossen.") diff --git a/communicationScripts/server.py b/communicationScripts/server.py index 4a5b999780d9654e84134c6cf38ec2d594ec9e3c..b152be14b1967e5b0f4109098a91875633b3d7ea 100644 --- a/communicationScripts/server.py +++ b/communicationScripts/server.py @@ -1,45 +1,43 @@ -import socket import wolfssl - -def run_server(): - # Server-Zertifikat und Schlüssel - cert_file = "../certificates/server-cert.pem" - key_file = "../certificates/server-key.pem" - - # Festlegen der Cipher Suite und TLS-Version - cipher_suite = "TLS_AES_128_GCM_SHA256" # Sichere Cipher Suite - context = wolfssl.SSLContext(wolfssl.PROTOCOL_TLSv1_3) # TLS 1.3 verwenden - context.load_cert_chain(certfile=cert_file, keyfile=key_file) - context.set_ciphers(cipher_suite) - - # Server-Socket erstellen - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: - sock.bind(("192.168.178.51", 5000)) # Lauschen auf allen Schnittstellen - sock.listen(5) - print(f"Server läuft auf Port 5000 mit Cipher Suite: {cipher_suite}...") - - while True: - client_sock, addr = sock.accept() - print(f"Verbindung akzeptiert von {addr}!") - - try: - ssl_sock = context.wrap_socket(client_sock, server_side=True) - print("SSL Handshake erfolgreich!") - - # Datei empfangen - with open("received_file.txt", "wb") as f: - while True: - data = ssl_sock.recv(1024) - if not data: - break - f.write(data) - print("Datei erfolgreich empfangen und gespeichert als 'received_file.txt'") - - except Exception as e: - print(f"Fehler bei der Verarbeitung der Verbindung: {e}") - finally: - ssl_sock.close() - client_sock.close() - -if __name__ == "__main__": - run_server() +import socket +import logging + +# Logging konfigurieren +logging.basicConfig(level=logging.DEBUG) + +# SSLContext für den Server +context = wolfssl.Context(wolfssl.SSLv23_METHOD) +context.use_certificate_file('server-cert.pem') # Server-Zertifikat +context.use_privatekey_file('server-key.pem') # Server-Schlüssel + +# Server-Socket einrichten +server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server_socket.bind(('192.168.178.63', 10023)) # IPv4-Adresse verwenden +server_socket.listen(1) + +logging.info("Server läuft und wartet auf Verbindungen...") + +while True: + # Akzeptiere eingehende Verbindungen + client_socket, client_address = server_socket.accept() + logging.info(f"Verbindung von {client_address} akzeptiert.") + + # SSL-Verbindung aufbauen + ssl_connection = context.wrap_socket(client_socket, server_side=True) + logging.info("SSL-Verbindung aufgebaut.") + + try: + # Empfangene Nachricht lesen + data = ssl_connection.recv(1024) + logging.info(f"Empfangene Nachricht: {data.decode()}") + + # Nachricht zurückschicken (Echo) + ssl_connection.sendall(data) + logging.info(f"Nachricht zurückgeschickt: {data.decode()}") + + except Exception as e: + logging.error(f"Fehler: {e}") + + finally: + ssl_connection.close() + logging.info("Verbindung geschlossen.")