Added encryption and refactorized code

This commit is contained in:
Mikołaj Lubiak 2022-06-22 17:25:14 +02:00
parent 50075b05b5
commit 1b94eeb118
2 changed files with 45 additions and 15 deletions

View File

@ -1,23 +1,37 @@
import socket, time, threading from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
from time import sleep
from subprocess import run
from sys import argv
try:
from cryptography.fernet import Fernet
except:
run("python3 -m pip install cryptography")
from cryptography.fernet import Fernet
class client(): class client():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s = socket(AF_INET, SOCK_STREAM)
def __init__(self): def __init__(self):
self.s.connect(('127.0.0.1', 12345)) if len(argv) == 4: k = argv[3].encode()
else:
k = Fernet.generate_key()
print(k)
self.f = Fernet(k)
self.s.connect((argv[1], int(argv[2])))
def sMsg(self, msg): def sMsg(self, msg):
self.s.send(msg.encode()) self.s.send(self.f.encrypt(msg.encode()))
def rMsg(self): def rMsg(self):
while True: while True:
d = '' d = ''
d = self.s.recv(1024).decode() d = self.f.decrypt(self.s.recv(1024)).decode()
print(end=d) print(end=d)
time.sleep(0.1) sleep(0.1)
def chat(self): def chat(self):
receiving = threading.Thread(target=self.rMsg) receiving = Thread(target=self.rMsg)
receiving.daemon = True receiving.daemon = True
receiving.start() receiving.start()
while True: while True:
@ -27,5 +41,6 @@ class client():
self.sMsg(msg) self.sMsg(msg)
if __name__ == '__main__': if __name__ == '__main__':
run("clear")
Client = client() Client = client()
Client.chat() Client.chat()

View File

@ -1,31 +1,46 @@
import socket, threading, time from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
from time import sleep
from subprocess import run
from sys import argv
try:
from cryptography.fernet import Fernet
except:
run("python3 -m pip install cryptography")
from cryptography.fernet import Fernet
class Server: class Server:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s = socket(AF_INET, SOCK_STREAM)
def __init__(self): def __init__(self):
self.s.bind(('127.0.0.1', 12345)) if len(argv) == 4: k = argv[3].encode()
self.s.listen(5) else:
k = Fernet.generate_key()
print(k)
self.f = Fernet(k)
self.s.bind((argv[1], int(argv[2])))
self.s.listen(3)
self.client, self.addr = self.s.accept() self.client, self.addr = self.s.accept()
def rMsg(self): def rMsg(self):
while True: while True:
d = '' d = ''
d = self.client.recv(1024).decode() d = self.f.decrypt(self.client.recv(1024)).decode()
print(end=d) print(end=d)
time.sleep(0.1) sleep(0.1)
def chat(self): def chat(self):
self.receiving = threading.Thread(target=self.rMsg) self.receiving = Thread(target=self.rMsg)
self.receiving.daemon = True self.receiving.daemon = True
self.receiving.start() self.receiving.start()
while True: while True:
msg = input() msg = input()
msg = f"\nADMIN: {msg}\n" msg = f"\nADMIN: {msg}\n"
print(msg) print(msg)
self.client.send(msg.encode()) self.client.send(self.f.encrypt(msg.encode()))
if __name__ == '__main__': if __name__ == '__main__':
run("clear")
Server_m = Server() Server_m = Server()
Server_m.chat() Server_m.chat()
Server_m.receiving.join() Server_m.receiving.join()