From 5535702c785758cfe062aa43eb662ab0f5613b02 Mon Sep 17 00:00:00 2001 From: louis chauvet Date: Fri, 16 Nov 2018 21:54:30 +0100 Subject: [PATCH] Je vais me coucher --- RFC8497.md | 2 + client/main.py | 19 +++++---- client/private.pem | 98 ++++++++++++++++++++++----------------------- client/receiver.pem | 24 +++++------ server/main.py | 17 ++++---- 5 files changed, 83 insertions(+), 77 deletions(-) diff --git a/RFC8497.md b/RFC8497.md index 3689db2..a9496ce 100644 --- a/RFC8497.md +++ b/RFC8497.md @@ -286,6 +286,8 @@ Cette requête est utilisé pour initialiser la communication crypté entre deux Requête envoyée en réponse à RSASend pour initialiser la connection cryptée en AES. + + ### Error ### Error diff --git a/client/main.py b/client/main.py index f7d66e4..e22a84e 100644 --- a/client/main.py +++ b/client/main.py @@ -85,9 +85,7 @@ key = RSA.generate(BUFFER_SIZE) private_key = key.export_key() file_out = open("private.pem", "wb") file_out.write(private_key) - public_key = key.publickey().export_key() - file_out = open("receiver.pem", "wb") file_out.write(public_key) to_send = public_key.ljust(BUFFER_SIZE, b';') @@ -96,25 +94,32 @@ clientSocket.send(BEGIN_MESSAGE) clientSocket.send(HEADER) clientSocket.send(to_send) clientSocket.send(END_MESSAGE) + print('ok') # BEGIN chunk = clientSocket.recv(BUFFER_SIZE) print(chunk) -# HEADER crypted = clientSocket.recv(BUFFER_SIZE).rstrip(b';') -# AESKEY for i in range(60): crypted += clientSocket.recv(BUFFER_SIZE).rstrip(b";") # END chunk = clientSocket.recv(BUFFER_SIZE) print(chunk) -# HEADER+AES key are encypted in same time, so decrypt thme at same time +# HEADER+AES key are encypted in same time, so decrypt time at same time cipher_rsa = PKCS1_OAEP.new(key) +texte_to_decrypt = b'' + +for ligne in [crypted[i:i + BUFFER_SIZE] for i in range(0, len(crypted), BUFFER_SIZE)]: + to_decrypt = ligne[2:] + print(ligne) + print(int.from_bytes(ligne[:2], byteorder='big')) + to_decrypt = to_decrypt[:int.from_bytes(ligne[:2], byteorder='big')] + texte_to_decrypt += to_decrypt texte = b'' -for to_decrypt in [crypted[i:i + int(BUFFER_SIZE/8)] for i in range(0, len(crypted), int(BUFFER_SIZE/8))]: +for to_decrypt in [texte_to_decrypt[i:i + int(BUFFER_SIZE/8)] for i in range(0, len(texte_to_decrypt), int(BUFFER_SIZE/8))]: texte += cipher_rsa.decrypt(to_decrypt) -print(texte.decode('ascii')) +print(texte) diff --git a/client/private.pem b/client/private.pem index 8fa5873..9903635 100644 --- a/client/private.pem +++ b/client/private.pem @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/client/receiver.pem b/client/receiver.pem index d11683f..fd1d49a 100644 --- a/client/receiver.pem +++ b/client/receiver.pem @@ -1,14 +1,14 @@ -----BEGIN PUBLIC KEY----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArUCxN8128/Zck+vS0xtR -wvQFhsl44wV8I5987RNdU/sYFkoGCkMLFiXXhrcsYhzEEyKQ6ci+4OtwPtXuY9hE -8XWnmd16T6ypct41oRoCVzrlrwMsZ1rg4M5ZnuQIb+7DJmIDHn3LjYF1yDC1XhoG -1DZn+tWK1XPyCpWzjYHyUyocWiHK0lxxE3lLYj2okaWYjuwv+stt7ClpqPMjog2e -g51H99rxKEEhlt+lDYXPEfWaPB4lWjlrophFqvndnYtZMJJfHwDyysQSvcwGL01K -wKYR+URM5Lr8Zxj9xBP1v5NsxBTE1imZQ/cF7Nat4A/RCycHB4CrgtgtwlcHPJQW -F4WxJN6+THM698oNQ8jKAwIuMPHR8XHkRU6A4tPHcOgDR4Sj3WKC3Q6Cv1PvMhU8 -bgfuqHk3eMCIiZNdBEn3Cl7bpvynqiIvL75pXpMsqAwzNPq5Zw7k0dTXx/yz7zDo -3mLG9BrZ3SzvWcB53hgk6K/dMY+/Y9fhwqkwzgyQ5pYMTs5lqP6qxbn+fhICEwro -eFx34QXlq/RpsxVxC4KuJ3sTrQ5cr/aZsZSQFabJYXUeev15gLeqRBTuEr+5K1Wr -FRIRomItyTeudn412nyZcd/tOakZ5X9k2eb/xuM0gsmoe9Ern1Z9OaUTHmolAK/E -z0AzpZR3VID1JVgUhpqsA1UCAwEAAQ== +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtp/nSjVpOYelOdyJxVrY +VKz0otcy33KEZeOvv3Bglq7hFySMwLLBRuC6vGCMFVVMqQFlrQ4TiD3Z8e+Xf2Uk +CAzkTNbCg/Mf66A7nruWGriFY2pg0LaFBAuxAOFHaW2B7yDm3+02atztlGFkTgDW +94gPzzhE2gZ/5fULf4wm5HkkKNiYkg7fqifoed9POV7o0xfyjTm1fRhjy/poBJev +OO1h4OMlGM5z3E8HBNceiDUwbdm6izu50HHp0AP+7Pja9uO6WuX1dK3n4wm4hrCG +pEb+h4m/kKUBEQqzjQqNWFUP4ksm4G84cFACbGwD7OGm3Y1OVYfGC6Gcus0rdZeW +cRQIb0gywOJ0OGmn5XIKGGwdso2nb0/LDrBWI8BJ7J7TNu5OKg/0kKCA188nqRqn +EXV7seIjb4rte6G8uXEaX54ZEBft4oKNfU+2kCVNJm5w1nQEOjLS9enneYnFblE0 +FiN4o/G1EIfQHn/D/Yt6q/b7n96fVFJye3oXikgab31msXpCGXQnGAkbnlwbSyjx +98P7Lqg+zCFOMTu7panp0hELQRrCWJEuoDiPvOuFRLVdvYj1KocfUWKdZ0ljNMNu +0c4Ebmc8MW31WDvGWhbIsCmKg+GtYODDYIvVqEl5WnYRxLtj8ml2wq4gNRn9Y8rq +mhOXHwEoRIGKsIGSgKZrFVkCAwEAAQ== -----END PUBLIC KEY----- \ No newline at end of file diff --git a/server/main.py b/server/main.py index 74a4052..41a179b 100644 --- a/server/main.py +++ b/server/main.py @@ -8,7 +8,6 @@ import os import socket import threading - #### logging #### # json decoder for int keys from Crypto.Cipher import PKCS1_OAEP @@ -82,7 +81,6 @@ VERSION = "EICP2P2 V1" DONE = 0 ERROR = 1 - #### Socket #### main_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) main_socket.bind((HOST, PORT)) @@ -151,9 +149,9 @@ class clientThread(threading.Thread): debug("Réception de la clef RSA de %s", self.ip) self.rsa_client = content.rstrip(b";").rstrip(b' ') self.aes_key = get_random_bytes(64) - header = bytes((VERSION+"\ntype: init").ljust(BUFFER_SIZE, ";"), 'ascii') + header = bytes((VERSION + "\ntype: init").ljust(BUFFER_SIZE, ";"), 'ascii') content = self.aes_key.ljust(BUFFER_SIZE, b";") - self.send_rsa(header+content) + self.send_rsa(header + content) return def send_rsa(self, to_send): @@ -173,14 +171,15 @@ class clientThread(threading.Thread): def send(self, to_send): self.client.send(BEGIN_MESSAGE) - i=0 - for to_send_text in [to_send[i:i + BUFFER_SIZE] for i in range(0, len(to_send), BUFFER_SIZE)]: - self.client.send(to_send_text.ljust(BUFFER_SIZE, b";")) - i+=1 + i = 0 + for to_send_text in [to_send[i:i + BUFFER_SIZE - 2] for i in range(0, len(to_send), BUFFER_SIZE - 2)]: + print((len(to_send_text)).to_bytes(2, byteorder='big')) + print((len(to_send_text)).to_bytes(2, byteorder='big') + to_send_text.ljust(BUFFER_SIZE, b";")) + self.client.send((len(to_send_text)).to_bytes(2, byteorder='big') + to_send_text.ljust(BUFFER_SIZE - 2, b";")) + i += 1 print(i) self.client.send(END_MESSAGE) - def run(self): # main de la connection du client """Run thread mainloop