crypt/client.py

47 lines
1.2 KiB
Python
Raw Normal View History

2022-06-22 17:25:14 +02:00
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
2022-06-22 16:38:32 +02:00
class client():
2022-06-22 17:25:14 +02:00
s = socket(AF_INET, SOCK_STREAM)
2022-06-22 16:38:32 +02:00
def __init__(self):
2022-06-22 17:25:14 +02:00
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])))
2022-06-22 16:38:32 +02:00
def sMsg(self, msg):
2022-06-22 17:25:14 +02:00
self.s.send(self.f.encrypt(msg.encode()))
2022-06-22 16:38:32 +02:00
def rMsg(self):
while True:
d = ''
2022-06-22 17:25:14 +02:00
d = self.f.decrypt(self.s.recv(1024)).decode()
2022-06-22 16:38:32 +02:00
print(end=d)
2022-06-22 17:25:14 +02:00
sleep(0.1)
2022-06-22 16:38:32 +02:00
def chat(self):
2022-06-22 17:25:14 +02:00
receiving = Thread(target=self.rMsg)
2022-06-22 16:38:32 +02:00
receiving.daemon = True
receiving.start()
while True:
msg = input()
msg = f"\nClient: {msg}\n"
print(msg)
self.sMsg(msg)
if __name__ == '__main__':
2022-06-22 17:25:14 +02:00
run("clear")
2022-06-22 16:38:32 +02:00
Client = client()
Client.chat()