diff --git a/RSA/client/client.py b/RSA/client/client.py deleted file mode 100644 index 0351a07..0000000 --- a/RSA/client/client.py +++ /dev/null @@ -1,10 +0,0 @@ -from flask import * -import OpenSSL as ssl -import requests - -public_serv= open("./server/ssl.public.key") -data='Hello World !' - - - - diff --git a/RSA/client/dockerfile b/RSA/client/dockerfile index 288c0d8..42a27ac 100644 --- a/RSA/client/dockerfile +++ b/RSA/client/dockerfile @@ -2,4 +2,4 @@ FROM python:alpine WORKDIR /app COPY . . RUN pip install -r requirements.txt -CMD ["python", "client.py"] \ No newline at end of file +CMD ["python", "main.py"] \ No newline at end of file diff --git a/RSA/client/main.py b/RSA/client/main.py new file mode 100644 index 0000000..fd5bfa0 --- /dev/null +++ b/RSA/client/main.py @@ -0,0 +1,25 @@ +from flask import * +import ssl +import requests +import rsa + +data = 'Hello World !' + +with open("../server/ssl/public.key", "rb") as public_serv_file: + public_serv = public_serv_file.read() + +with open("ssl/id_rsa", "rb") as private_key_file: + private_key = private_key_file.read() + +public_key_serv = rsa.PublicKey.load_pkcs1(public_serv) +private_key_client = rsa.PrivateKey.load_pkcs1(private_key) + + +crypt = rsa.encrypt(data.encode(), public_key_serv) + +# Afficher le message original (pour vérification) +print(data) + +response = requests.post('https://localhost:5000', data={'message': crypt, 'signature': signature}, verify=False) + +#print(response.text) diff --git a/RSA/client/requirements.txt b/RSA/client/requirements.txt index a27eef0..d76f48f 100644 --- a/RSA/client/requirements.txt +++ b/RSA/client/requirements.txt @@ -1,2 +1,3 @@ flask==3.1.0 -pyopenssl==25.0.0 \ No newline at end of file +pyopenssl==25.0.0 +requests==2.26.0 \ No newline at end of file diff --git a/RSA/client/ssl/id_rsa b/RSA/client/ssl/id_rsa new file mode 100644 index 0000000..bac8117 --- /dev/null +++ b/RSA/client/ssl/id_rsa @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCxCQfJ2qoYRU+0 +hZ8sNeaGmUNl0A5m48+z2LgRA4XTkeurF83YuJl1zKJhpGjlCMl+jmf069lDCL0r +xthxtx5WlUaXDPOKRxYuiC7g4qjD92aHT8oloEhvk+PEJgn/9ZsqhB0uO7mpkGuQ +0lLFJ5zaUrIPNuGeeAj8nuDQpNrtGHGfBdXWfaPVdnhFf5uwsOPkAHssw8Ygqay1 +0fnBOPq1luJNJQW2aGrXxYuBnd7Uujt8AI/OzBB73+zWXpxQKmqGS+bg93W07Lg2 +11K9UB9vnwO0NejM1UZPKJ6T7N7CUvrkD2DZZdtPz020mcGF13lK2efiuTAlsKMu +4u2xWZX5AgMBAAECggEAEU8duNRX/x7VEoRiB145wifoBA4ElSC++l7nwu9s5+kD +eWtOurAfKPpaAgv4yYlDZ3agSWe/NU5Rw0miI0l704wC0S/4pn4ZeBvj4XmnyzPm +4rdKv2+yxV4DTfaeJwLU1KJYLAtg4BL5Frl0UvHIOecN9m4vlGE4wmJSVB6vh7DL +NBjRcXzeUWfjuieg9HvSJpnt7HcXD8kWWa0euXC0Yxd0dAZ90jguvm+3exq3KySX +tFQtnzKftkiTQMLTQE3wZvsDp2hCpeVX1blS9ubai4JApG4oMa5MOVYzQgJya2vm +IdqRW8lYeIW6qP4HaJ3ZU83umi+Wb62pDEiW38OnlQKBgQDwPCUAkrQeXj7gcwhG +78UVvOD2FHEaGz4AWrnPAJWwRcwLcMaV606IjOha/52tSzdsnrei+jdHMI/w3iWe +ZLvNWjjd9IaDaB/iZtjktnXe3kNaL3XpORuxiDi4pIrgtuKlVv9E5b9Bdo1YCn0b +aOKgCOGwP5WqrdtyFxpEsDtwcwKBgQC8pyfVRBFWH/CozM4rWGpO8RCOjEN0rdpV +1DXjgj36oj6xKrDMKTOZ7X2j/W6EYH1aoikPAEdt4ywgMVnfOzISUKdkSmYTyXbo +rjbyqKp91wQbkWVttHdN6qaTWHtl6YUgi17LCNZVYD95rXC7a/izGps7ggYvWOft +S96Iye+g4wKBgQC8yLbXPXH4D13f6eXOQOuiynwKRUQgHNpbUvCDQFVhYWgYcXZN +J83eNsT9hbQ2E06puAxdMb4w3nOu+BOd5lFC7ayUl20BZNjxhJrbGJuGGSnafENv +lGYz2/We/Ab60h1Hixcs4FKsseofDpcD7CdzVadtZnpJ1zgE7yzAX7FGCwKBgQCm +QfZD6FoS+dEhImWsI56E9cRurESiprjdnUjkuRqgMK5pesMXGlSEmp14kdf9SAAR +iQoAU3Gf8W4o7PVUW5n0NCpho4O0en+V7js0vdqLTpwrI4ctGLdv7pVhE8Ckfxm5 +Jbqj2qTx1wH53RWVx0EFrzQRTLTgs0yqf4ueJ8FMmwKBgEi99cX3XyfToiQWU3X9 +yLRYfV85i9UCBmFRb1EMtHhTZCBKpo5GrpvdnNN5AQpl4iXYvKGEapX8TXXELwC9 +M+u9eqDEb+l5H2X3dWeDx782yDr1SvkSnfdLBXaSWH1mqWaN74bv6b1+rsUL+rIw +7Vb74+c88t6HdN644dR0UvJY +-----END PRIVATE KEY----- diff --git a/RSA/client/ssl/id_rsa.pub b/RSA/client/ssl/id_rsa.pub new file mode 100644 index 0000000..350ed70 --- /dev/null +++ b/RSA/client/ssl/id_rsa.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsQkHydqqGEVPtIWfLDXm +hplDZdAOZuPPs9i4EQOF05HrqxfN2LiZdcyiYaRo5QjJfo5n9OvZQwi9K8bYcbce +VpVGlwzzikcWLogu4OKow/dmh0/KJaBIb5PjxCYJ//WbKoQdLju5qZBrkNJSxSec +2lKyDzbhnngI/J7g0KTa7RhxnwXV1n2j1XZ4RX+bsLDj5AB7LMPGIKmstdH5wTj6 +tZbiTSUFtmhq18WLgZ3e1Lo7fACPzswQe9/s1l6cUCpqhkvm4Pd1tOy4NtdSvVAf +b58DtDXozNVGTyiek+zewlL65A9g2WXbT89NtJnBhdd5Stnn4rkwJbCjLuLtsVmV ++QIDAQAB +-----END PUBLIC KEY----- diff --git a/RSA/server/__init__.py b/RSA/server/__init__.py deleted file mode 100644 index 9083498..0000000 --- a/RSA/server/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -import ssl -from flask import * -import flask_wtf as wtf - -print(ssl.OPENSSL_VERSION) -context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) -context.load_cert_chain(certfile='ssl/CA.crt', keyfile='ssl/CA.key') - -app= Flask(__name__) - -@app.route("/") -def index(): - return render_template("index.html") - -@app.route('/data', methods=['POST']) -def receiv(): - encrypted_data = request.form['data'] - -if __name__ == "__main__": - app.run(ssl_context=context) diff --git a/RSA/server/dockerfile b/RSA/server/dockerfile index b201e6a..b673dbb 100644 --- a/RSA/server/dockerfile +++ b/RSA/server/dockerfile @@ -3,5 +3,6 @@ WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 80 +EXPOSE 443 EXPOSE 5000 -CMD ["python", "__init__.py"] \ No newline at end of file +CMD ["python", "main.py"] \ No newline at end of file diff --git a/RSA/server/main.py b/RSA/server/main.py new file mode 100644 index 0000000..48237f9 --- /dev/null +++ b/RSA/server/main.py @@ -0,0 +1,23 @@ +import ssl +from flask import Flask, render_template, request + +app = Flask(__name__) +app.config['SECRET_KEY'] = 'c&S2QL9DDhZjwlqPoRYRGSN6gOidjaC9f25CW#SF1AinsMg7$3*JxC3e^9FnuliC5DWfhAPwiPcAMJcutBn#5k&VsIP0KBOMf9VvzKTN@Wuuq5i*UjoonTZEMHiyabpI' # Required for Flask-WTF + +# SSL Configuration +context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) +context.load_cert_chain(certfile='ssl/CA.crt', keyfile='ssl/CA.key') + +@app.route("/") +def index(): + return render_template("index.html") + +@app.route('/data', methods=['POST']) +def receive(): + encrypted_data = request.form.get('data', None) # Safely get form data + if encrypted_data: + return f"Received encrypted data: {encrypted_data}", 200 + return "No data received", 400 + +if __name__ == "__main__": + app.run(ssl_context=context, host='0.0.0.0', port=5000) # Allow external access