From 464f1c817d373bda54c98756913ad32eb63e1f86 Mon Sep 17 00:00:00 2001 From: willian GL Date: Thu, 4 Oct 2018 19:47:02 -0300 Subject: [PATCH] Adding another cool python stuff --- Crypt_Socket/README.md | 21 +++++++++ Crypt_Socket/cryptSocket_cliente.py | 64 ++++++++++++++++++++++++++++ Crypt_Socket/cryptSocket_servidor.py | 46 ++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 Crypt_Socket/README.md create mode 100755 Crypt_Socket/cryptSocket_cliente.py create mode 100755 Crypt_Socket/cryptSocket_servidor.py diff --git a/Crypt_Socket/README.md b/Crypt_Socket/README.md new file mode 100644 index 0000000..2f59d20 --- /dev/null +++ b/Crypt_Socket/README.md @@ -0,0 +1,21 @@ +Crypt_Socket +============== + +Steps: +-------- + +### #1 - Install third-part library Simple-crypt ### +```pip install simple-crypt``` + +More information on: https://github.com/andrewcooke/simple-crypt + +### #2 - Run server-side script ### +In some terminal window run: +```python cryptSocket_servidor.py``` + +### #3 - Run client-side script ### +On another terminal window run: +```python cryptSocket_client.py``` + +#### PS: #### +For some system is needed use python3 instead python diff --git a/Crypt_Socket/cryptSocket_cliente.py b/Crypt_Socket/cryptSocket_cliente.py new file mode 100755 index 0000000..9c47d95 --- /dev/null +++ b/Crypt_Socket/cryptSocket_cliente.py @@ -0,0 +1,64 @@ +#!/bin/python + +#CLIENTE + +from simplecrypt import encrypt, decrypt #import da biblioteca para encriptar + +import socket #import da biblioteca para o socket +import threading #import da biblioteca para thread +import time #import da biblioteca utilizada para fazer uma pausa com o sleep + +tLock = threading.Lock() #cria threads para executar o programa +poweroff = False + +def receving(name, sock): + while not poweroff: + try: + + tLock.acquire() #faz o teste na thread, se o retorno é true ele \ + #continua, se é false ele exibe um erro de timeout expired + while True: + data, addr = sock.recvfrom(2048) + #print (str(data.decode('utf-8'))) + except: + pass + finally: + tLock.release() #se a thread está no estado travado ele destrava e \ + #passa para a proxima thread, senão ele retorna um erro RunTimeError + +#definição do IP do cliente +host = '127.0.0.1' +port = 0 + +#definição do servidor +server = ('127.0.0.1', 5000) + +#criação do socket +s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +s.bind((host, port)) +s.setblocking(0) +rT = threading.Thread(target=receving, args=("RecvThread", s)) +rT.start() + +#definição do nome de usuário (apelido) +alias = input("Username: ") +time.sleep(0.2) + +#criação da mensagem e envio para o server +message = input(alias + ">>> ") +while message != 'q': + cryptmsg = encrypt("Fatec123", message) + if message != "": + #s.sendto(str(alias + ": " + cryptmsg).encode('utf-8'), server) + s.sendto(cryptmsg, server) + print(cryptmsg) + tLock.acquire() + message = input(alias + ">>> ") + cryptmsg = encrypt("Fatec123", message) + tLock.release() + time.sleep(0.2) + +#finaliza o socket e o programa +poweroff = True +rT.join() +s.close() diff --git a/Crypt_Socket/cryptSocket_servidor.py b/Crypt_Socket/cryptSocket_servidor.py new file mode 100755 index 0000000..24c4c09 --- /dev/null +++ b/Crypt_Socket/cryptSocket_servidor.py @@ -0,0 +1,46 @@ +#!/bin/python + +#SERVIDOR + +from simplecrypt import encrypt, decrypt +import socket +import time + +#definição do IP do servidor +hostname = '127.0.0.1' +port = 5000 + +#cria uma lista de clientes +clients = [] + +#criação do socket +s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +s.bind((hostname, port)) +s.setblocking(0) + + +print ("Server Started.") + +while KeyboardInterrupt: + try: + data, addr = s.recvfrom(2048) + if addr not in clients: + clients.append(addr) #se o IP do cliente não estiver na lista, este novo cliente é adicionado + s.sendto(str(data).encode('utf-8'), addr) + + #Recibo da entrega da mensagem criptografada + print("MENSAGEM CRIPTOGRAFADA:\n") + print (data) + #Descriptografando a mensagem + print("\n MENSAGEM DESCRIPTOGRAFADA") + descryptdata = decrypt("Fatec123", data) + descdata = descryptdata + print(descdata) + + for client in clients: + s.sendto(data, client) + except: + time.sleep(5) + pass + +s.close()